реклама на сайте
подробности

 
 
> Проблема с записью во внутреннюю flash микроконтроллера at91sam7x
samou4ka
сообщение Jul 11 2012, 14:48
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 11-03-10
Пользователь №: 55 907



посмотрел здесь - http://electronix.ru/forum/index.php?showt...hl=flashd_write, но нужного ответа не нашел.
в связи с этим вопрос.
с компа даю команду на чтение внутренней памяти микроконтроллера и прочитанные данные отправляю назад.
CODE
if(cBuffer[0]==20)
{
//unlock memory
error = FLASHD_Unlock(AT91C_IFLASH, AT91C_IFLASH+AT91C_IFLASH_SIZE,0,0);

//address of tube config file
PageAddress = AT91C_IFLASH + AT91C_IFLASH_SIZE - iTubeNumber * AT91C_IFLASH_PAGE_SIZE;
//address with first data
pPageData = (volatile unsigned int*) PageAddress;
//function read memory, send data to PC, add data to array

//read memory
cBuffer[2] = (pPageData[iCntMemory]>>8);
cBuffer[1] = pPageData[iCntMemory];
pBuffer[iCntMemory] = pPageData[iCntMemory];

FLASHD_Lock(PageAddress, PageAddress + iTubeNumber * AT91C_IFLASH_PAGE_SIZE, 0,0);

iCntMemory++;
//send data to PC
while((temp=USART_WriteBuffer(AT91C_BASE_US0, cBuffer, sizeof(cBuffer)))==0);

}

вроде все работает
потом хочу записать данные по команде
CODE
if(cBuffer[0]==15)
{
if((error = FLASHD_Unlock(AT91C_IFLASH, AT91C_IFLASH + AT91C_IFLASH_SIZE , 0, 0))==0)
{
// Performs tests on last page (to avoid overriding existing program).
PageAddress = AT91C_IFLASH + AT91C_IFLASH_SIZE - iTubeNumber * AT91C_IFLASH_PAGE_SIZE;
//pPageData = (volatile unsigned int *) PageAddress;
//------------------------

error = FLASHD_Write(PageAddress, pBuffer, iCnt*4);//AT91C_IFLASH_PAGE_SIZE
//----------------

// Lock page
error = FLASHD_Lock(PageAddress, PageAddress + iTubeNumber * AT91C_IFLASH_PAGE_SIZE, 0, 0);
//---------------------------------------------
}
}

и ничего не пишется
pBuffer наполняю раньше, проверял с ним все в порядке.
комментировал по очереди все функции и оказалось что проблема в flashd_write.
пробовал запретить прерывания от com-порта, т.к. во время записи могли приходить очередные данные с компьютера, но и это не помогло.
может кто подскажет, как можно добиться работоспособности этих функций?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th August 2025 - 09:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01958 секунд с 7
ELECTRONIX ©2004-2016