|
хранение данных во флэш epcs4 |
|
|
|
Jul 1 2011, 09:49
|

Частый гость
 
Группа: Свой
Сообщений: 183
Регистрация: 16-03-08
Из: Новосибирск
Пользователь №: 35 954

|
Говорят, что можно средствами NIOS, читать и писать данные во флэшку, с которой производится конфигурирование плис. Но уж очень доступная документация не позволяет легко понять как же это делать. Попробовал разобраться по исходникам, что идут в составе BSP, но со всеми струкутрами и функциями так и не понял как же это должно работать. Цель стоит простая хранить там серийник устройства и несколько параметров. Можно ли такое сделать? Чего почитать чтобы понять как же это заставить работать, или пример посмотреть на крайний случай исходя из файлов заголовков инициализация проходит при помощи Код int alt_epcs_flash_init(alt_flash_epcs_dev* flash); где Код struct alt_flash_epcs_dev { alt_flash_dev dev;
alt_u32 register_base; alt_u32 size_in_bytes; alt_u32 silicon_id; alt_u32 page_size; }; // и тут же далее по ссылке alt_flash_dev struct alt_flash_dev { alt_llist llist; const char* name; alt_flash_open open; alt_flash_close close; alt_flash_write write; alt_flash_read read; alt_flash_get_flash_info get_info; alt_flash_erase_block erase_block; alt_flash_write_block write_block; void* base_addr; int length; int number_of_regions; flash_region region_info[ALT_MAX_NUMBER_OF_FLASH_REGIONS]; }; мой код Код //включаю файлы заголовков #define ALT_USE_EPCS_FLASH #include <altera_avalon_epcs_flash_controller.h> alt_flash_epcs_dev mem; int a; //задаю название контролерра mem.dev.name=EPCS_FLASH_CONTROLLER_0_NAME; // пытаюсь инициализировать его a = alt_epcs_flash_init(mem); // и прочитать ret_code = alt_epcs_flash_read(mem->dev, 0, data_array_name, 16); А он мне в ответ Цитата hello_world_small.c:309: error: incompatible type for argument 1 of 'alt_epcs_flash_init' hello_world_small.c:310: error: invalid type argument of '->' при Код ret_code = alt_epcs_flash_read(mem.dev, 0, data_array_name, 16); Цитата hello_world_small.c:310: error: incompatible type for argument 1 of 'alt_epcs_flash_read'
|
|
|
|
|
 |
Ответов
|
Oct 26 2011, 09:50
|

Частый гость
 
Группа: Свой
Сообщений: 183
Регистрация: 16-03-08
Из: Новосибирск
Пользователь №: 35 954

|
Спасибо за объяснение =) Теперь просто храню массив с данными в памяти, который читаю при старет, а если что то поменялось, то пишу его во флэш командой Код void wright_data_to_epcs() { epcs_write_enable(EPCS_FLASH_BASE+EPCS_FLASH_REGISTER_OFFSET); epcs_sector_erase(EPCS_FLASH_BASE+EPCS_FLASH_REGISTER_OFFSET, EPCS_ADR); j = epcs_write_buffer(EPCS_FLASH_BASE+EPCS_FLASH_REGISTER_OFFSET, EPCS_ADR , data, DATA_EPCS_SIZE); return; }
|
|
|
|
|
Feb 24 2014, 11:29
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Цитата(Wic @ Oct 26 2011, 13:50)  Спасибо за объяснение =) Теперь просто храню массив с данными в памяти, который читаю при старет, а если что то поменялось, то пишу его во флэш командой Делаю также, но в какой-то момент возникли проблемы. Пока не уверен, что это не я в коде где-то накосячил, но в поисках проблем возник вопрос: А какая допустимая величина буфера для epcs_write_enable ?
|
|
|
|
|
Feb 25 2014, 14:23
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Цитата(vadimuzzz @ Feb 25 2014, 14:21)  epcs_write_enable разрешает запись. имелось в виду epcs_write_buffer ? тогда он не больше размера страницы Да, Вы меня правильно поняли. Про размер страницы - спасибо, так и думал. Получается, что глюки у меня были из-за этого. Как всегда малое изменение влечет большие проблемы. У меня в структуре были переменные типа char, для удобства адресации в другом участке кода поменял их на long int. Отсюда увеличение размера структуры и глюки с записью. В общем Спасибо за подсказку.
|
|
|
|
|
Aug 18 2014, 11:43
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Внесу свои пять копеек по поводу хранения данных в EPCS16 для Q13. В таком случае можно выставить Reduced Device Drivers и хорошо сэкономить на памяти. Код #include "epcs_commands.h"
// адрес EPCS контроллера const alt_u32 EPCS_ADDR = EPCS_FLASH_CONTROLLER_0_BASE + EPCS_FLASH_CONTROLLER_0_REGISTER_OFFSET; // смещение параметров модуля в EPCS - 30 страница для хранения const alt_u32 EPCS_PARAMS_OFFSET = 65536*30; // режим байтов для EPCS const alt_u32 EPCS_BYTE_MODE = 0;
void LoadEpcsData(alt_u8* destBuf, int length) { epcs_read_buffer(EPCS_ADDR, EPCS_PARAMS_OFFSET, destBuf, length, EPCS_BYTE_MODE); }
void SaveEpcsData(alt_u8* srcBuf, int length) { epcs_write_enable(EPCS_ADDR); epcs_sector_erase(EPCS_ADDR, EPCS_PARAMS_OFFSET, EPCS_BYTE_MODE); epcs_write_buffer(EPCS_ADDR, EPCS_PARAMS_OFFSET, srcBuf, length, EPCS_BYTE_MODE); } Единственное не до конца понял, что за режим four_bytes_mode. Но стабильно работает при EPCS_BYTE_MODE = 0;
|
|
|
|
Сообщений в этой теме
Wic хранение данных во флэш epcs4 Jul 1 2011, 09:49 Stewart Little Кода-то использовал такую тестилку для доступа в E... Jul 1 2011, 11:55 Wic Цитата(Stewart Little @ Jul 1 2011, 18:55... Jul 4 2011, 04:02 Wic После прочтения темы Решил не пользоваться HAL, а ... Oct 25 2011, 08:51 FLTI Цитата(Wic @ Oct 25 2011, 11:51) После пр... Apr 23 2015, 08:40  _Anatoliy Цитата(FLTI @ Apr 23 2015, 10:40) Возможн... Apr 23 2015, 08:59 vadimuzzz вот пример:
CODE
...
unsigned char e_buf[16] = {0,... Oct 25 2011, 09:17 Wic Задал #define EPCS_SET_OFFS 0
Вот результат. И оди... Oct 25 2011, 09:45 vadimuzzz Цитата(Wic @ Oct 25 2011, 16:45) Вот резу... Oct 25 2011, 11:28 Wic После того как делаю epcs_sector_erase, проходит з... Oct 26 2011, 04:39 vadimuzzz Цитата(Wic @ Oct 26 2011, 11:39) Но как т... Oct 26 2011, 06:38 stu В описании EPCS написано, что EPCS4 с 0,15 um тех.... Dec 3 2012, 13:57 FLTI Тогда в чём в итоге была проблема?
Я сейчас похож... Apr 23 2015, 18:10 vadimuzzz ищите в: ip/altera/sopc_builder_ip/
epcs_commands... Apr 24 2015, 01:54 FLTI Если использовать драйвер epcs_commands.h, то надо... Apr 24 2015, 06:19 vadimuzzz Цитата(FLTI @ Apr 24 2015, 12:19) Если ис... Apr 24 2015, 06:47 FLTI По мотивам кодов в данной теме составил такой код:... Apr 24 2015, 13:08 Stewart Little Цитата(FLTI @ Apr 24 2015, 16:08) Почему ... Apr 24 2015, 17:33 FLTI Мне нужно исходный .jic файл, записанный в EPCS по... Apr 24 2015, 17:36
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|