|
|
  |
запись во флешь память |
|
|
|
Jan 29 2010, 11:18
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 18-11-09
Из: Мск
Пользователь №: 53 718

|
Контроллер sam7x в паре с кейлом. Сразу скажу, знаю что тема освещалась на форуме и не раз, и сам я перелопатил кучу инфы, и тем не менее. Непонятно как мои данные попадают в этот latch buffer?? Опишите пожалуйста последовательность действий. И какая именно часть программы должна находится в RAM?
|
|
|
|
|
Jan 29 2010, 13:46
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 18-11-09
Из: Мск
Пользователь №: 53 718

|
хм..немного странная аналогия  но понятно. А как поместить мои данные в буфер записи по конкретному адресу?
|
|
|
|
|
Jan 29 2010, 14:31
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Freeuser @ Jan 29 2010, 14:18)  Непонятно как мои данные попадают в этот latch buffer?? Опишите пожалуйста последовательность действий. Цитата Data to be written are stored in an internal latch buffer. The size of the latch buffer corresponds to the page size. The latch buffer wraps around within the internal memory area address space and appears to be repeated by the number of pages in it. Note: Writing of 8-bit and 16-bit data is not allowed and may lead to unpredictable data corruption. Это значит, что к буферу можно обратиться по любому выровненному по границе страницы адресу в области флеш. Писать можно только 32-битные данные. Цитата(Freeuser @ Jan 29 2010, 14:18)  И какая именно часть программы должна находится в RAM? Как минимум команда записи FCR, и следующее за ней ожидание FRDY в FSR. Цитата(Freeuser @ Jan 29 2010, 16:46)  А как поместить мои данные в буфер записи по конкретному адресу? А как поместить данные в любой другой буфер по конкретному адресу? Разницы никакой нет.
|
|
|
|
|
Feb 1 2010, 07:46
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 18-11-09
Из: Мск
Пользователь №: 53 718

|
А можно пример какой нибудь?
|
|
|
|
|
Feb 1 2010, 08:34
|
Ортодокс
  
Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775

|
Цитата(Freeuser @ Feb 1 2010, 09:46)  А можно пример какой нибудь? Вот Вам пример, только он для GCC Код void IF_Write_page ( void* pDest, void* pSrc ) __attribute__ ( ( section ( ".fast" ) ) ); void IF_Write_page ( void* pDest, void* pSrc ) { int i; register uint32* puiDest = pDest; register uint32* puiSrc = pSrc; for ( i = 0; i < AT91C_IFLASH_PAGE_SIZE / sizeof ( uint32 ); i++ ) { *puiDest++ = *puiSrc++; } while ( !( AT91C_BASE_MC->MC_FSR & AT91C_MC_FRDY ) ); AT91C_BASE_MC->MC_FCR = 0x5A000000 | ( (uint32)pDest & AT91C_MC_PAGEN ) | AT91C_MC_FCMD_START_PROG; while ( !( AT91C_BASE_MC->MC_FSR & AT91C_MC_FRDY ) ); } Для Keil'а нужно наверняка поменять аттрибуты, чтобы этот код выполнялся в RAM.
|
|
|
|
|
Feb 2 2010, 07:12
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 18-11-09
Из: Мск
Пользователь №: 53 718

|
Спасибо! Буду пробовать.
|
|
|
|
|
Feb 2 2010, 09:38
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Freeuser @ Jan 29 2010, 13:18)  знаю что тема освещалась на форуме и не раз, Да, было дело. Я несколько раз выкладывал свой код, минимально занимающий ОЗУ: Раз, два, три, четыре.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Feb 3 2010, 08:03
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 18-11-09
Из: Мск
Пользователь №: 53 718

|
С записью разобрался наконец, спасибо всем за помощь! Теперь стало понятно, как юзать EFC. И еще один вопросик тут задам: Мне нужно заливать в контроллер новую прошивку через USB. Достаточно ли мне на хосте "разобрать" бинарный файл на байты, отправить их в устройство, контроллер запишет их во флеш. Будет ли эта система работать? Файл скомпилен на адрес, на который я буду его загружать.
|
|
|
|
|
Feb 4 2010, 12:58
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 18-11-09
Из: Мск
Пользователь №: 53 718

|
Цитата(aaarrr @ Feb 3 2010, 12:25)  А что, есть какие-то сомнения? Не то чтобы сомнения, я просто не знал как это сделать. Думал, может, файл бинарный что-нибудь "лишнее" содержит. Цитата(dimka76 @ Feb 3 2010, 12:40)  Вот вам полны пример загрузчика Спасибо. Я уже почти написал свой загрузчик...Почти..
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|