|
Программная запись FLASH AT91SAM7S128 |
|
|
|
 |
Ответов
|
Dec 26 2008, 08:34
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(MiklPolikov @ Dec 26 2008, 10:23)  Как записать во FLASH ? Для начала прочитать в DS раздел Embedded Flash Controller (EFC). Затем можно воспользоваться таким кодом: Код //****************************************************************************** //* Flash service subroutines
#define FMCN1 (0x30 << 0x10) #define FMCN1_5 (0x48 << 0x10)
int flash_write_page(u_int addr, u_char *data) { u_int a, page;
page = addr >> 8;
AT91C_BASE_MC->MC_FMR = (AT91C_BASE_MC->MC_FMR & ~(AT91C_MC_FMCN | AT91C_MC_NEBP)) | FMCN1_5;
a = 0; do { ((reg_32 *)AT91C_IFLASH)[a >> 2] = data[a] | (data[a + 1] << 8) | (data[a + 2] << 16) | (data[a + 3] << 24); a += 4; } while(a < AT91C_IFLASH_PAGE_SIZE);
AT91C_BASE_MC->MC_FCR = (0x5a << 24) | ((page << 8) & AT91C_MC_PAGEN) | AT91C_MC_FCMD_START_PROG;
while(!((a = AT91C_BASE_MC->MC_FSR) & AT91C_MC_FRDY));
if((a & AT91C_MC_LOCKE) || (a & AT91C_MC_PROGE)) { dprintf("Flash: Write Error (FSR = 0x%08x, Page = %03x).\r\n", a, page); return -1; } return 0; } Только нужно помнить, что читать flash во время записи нельзя, т.е. код должен быть расположен в RAM, любые обращения к flash во время записи (в прерываниях, например) должны быть исключены.
|
|
|
|
|
Mar 30 2009, 14:55
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Цитата(aaarrr @ Dec 26 2008, 12:34)  Только нужно помнить, что читать flash во время записи нельзя, т.е. код должен быть расположен в RAM, любые обращения к flash во время записи (в прерываниях, например) должны быть исключены. Поясните пожалуйста ! Код расположен во flash , и следовательно пока он там я писать flash не могу. После REMAP COMMAND выборка команд начнёт происходить из SRAM . А откуда они там возьмутся, если весь код изначально во flash ? Да и как код поместится в SRAM , ведь SRAM меньше чем flash ? Возможно я должен сам переписать часть кода из flash в SRAM потом сделать REMAP ? А как быть с переменными которые в SRAM ? Спасибо !
Сообщение отредактировал MiklPolikov - Mar 30 2009, 14:56
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
Сообщений в этой теме
MiklPolikov Программная запись FLASH AT91SAM7S128 Dec 26 2008, 07:23 aaarrr Вам нужно при помощи линкера разместить в RAM проц... Mar 30 2009, 15:18 MiklPolikov Цитата(aaarrr @ Mar 30 2009, 19:18) Вам н... Mar 31 2009, 14:00 Artem_Petrik Цитата(MiklPolikov @ Dec 26 2008, 10:23) ... Mar 30 2009, 15:32 Шурила Цитата(MiklPolikov @ Dec 26 2008, 09:23) ... Mar 31 2009, 00:56 Сергей Борщ Цитата(Шурила @ Mar 31 2009, 03:56) после... Mar 31 2009, 07:16 Harbour неплохо бы еще запрещать прерывания на момент запи... Mar 31 2009, 05:44 aaarrr В Keil'е оформляете процедуру примерно так:
Ко... Mar 31 2009, 14:07 defunct Не надо функции хранить в RAM. Функцию можно скопи... Apr 1 2009, 11:01 aaarrr Способ потенциально небезопасный (iap_PageWrite не... Apr 1 2009, 11:26 defunct Цитата(aaarrr @ Apr 1 2009, 14:26) Способ... Apr 1 2009, 11:35  aaarrr Цитата(defunct @ Apr 1 2009, 15:35) Стоит... Apr 1 2009, 12:40   defunct Цитата(aaarrr @ Apr 1 2009, 15:40) На сте... Apr 1 2009, 12:55    aaarrr Цитата(defunct @ Apr 1 2009, 16:55) Кто м... Apr 1 2009, 13:10     defunct Цитата(aaarrr @ Apr 1 2009, 16:10) О том,... Apr 1 2009, 14:30      aaarrr Цитата(defunct @ Apr 1 2009, 18:30) Но эт... Apr 1 2009, 15:11       defunct Цитата(aaarrr @ Apr 1 2009, 18:11) Нет, н... Apr 1 2009, 15:34        aaarrr Цитата(defunct @ Apr 1 2009, 19:34) Как г... Apr 1 2009, 15:42         defunct ЦитатаТолько скопировали то, что:
1. Сгенерировано... Apr 1 2009, 15:51          aaarrr Цитата(defunct @ Apr 1 2009, 19:51) Если ... Apr 1 2009, 15:55           defunct Цитата(aaarrr @ Apr 1 2009, 18:55) Этот ... Apr 1 2009, 17:00            aaarrr Цитата(defunct @ Apr 1 2009, 21:00) В отл... Apr 1 2009, 17:17             defunct Цитата(aaarrr @ Apr 1 2009, 20:17) а уж с... Apr 1 2009, 17:34              aaarrr Цитата(defunct @ Apr 1 2009, 21:34) Зачем... Apr 1 2009, 17:44               defunct Цитата(aaarrr @ Apr 1 2009, 20:44) Ваш пр... Apr 1 2009, 18:34                aaarrr Цитата(defunct @ Apr 1 2009, 22:34) Вашим... Apr 1 2009, 18:58                 defunct Цитата(aaarrr @ Apr 1 2009, 21:58) Делать... Apr 1 2009, 20:26                  aaarrr Цитата(defunct @ Apr 2 2009, 00:26) 1. На... Apr 1 2009, 20:51                   defunct Цитата(aaarrr @ Apr 1 2009, 23:51) Можно ... Apr 1 2009, 21:29                    aaarrr Цитата(defunct @ Apr 2 2009, 01:29) Или н... Apr 1 2009, 21:44                     defunct Цитата(aaarrr @ Apr 2 2009, 00:44) Перено... Apr 1 2009, 22:08                      aaarrr Цитата(defunct @ Apr 2 2009, 02:08) Зачем... Apr 1 2009, 22:39                       defunct Цитата(aaarrr @ Apr 2 2009, 01:39) Можно ... Apr 1 2009, 22:55 aaarrr Получается нечто вроде:
Кодvoid fcmd(U32 fcr... Apr 1 2009, 23:35
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|