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

 
 
> IAP и LPC1768, Непонятные проблемы со стиранием
Polaris
сообщение Mar 16 2010, 16:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Добрый день!

Пытаюсь использовать для размещения констант флэш LPC1768 (ее там много, а ставить что-то снаружи не хочется), на базе примера EEPROM для LPC2368 слегка изменил код и подстроил его под свои нужды. На LPC2368 код работал без проблем. Сейчас возникают непонятные зависоны при стирании флэша (только при стирании, запись работает как часы). Вот мой код:

Код
#define IAP_LOCATION             0x1fff1ff1

#define EE1_SEC_L        14                //Flash sector where EEPROM begins (see UM for details)
#define EE1_SEC_H        14                  //Flash sector where EEPROM ends (see UM for details)
#define EE1_ADDR_L        0x0000E000        //Must match the EE_SEC_L Flash sector start address
#define EE1_ADDR_H        0x0000EFFF         //Must match the EE_SEC_H Flash sector end address
#define EE_CCLK        96000            //system clock cclk expressed in kHz (96MHz)

typedef void (*IAP)(unsigned int [],unsigned int[]);
IAP iap_entry;

TDWord EEPROM_Erase(void)
{
    unsigned int command_iap[5];
    unsigned int result_iap[3];

    __disable_irq();

    command_iap[0]=50;                    //prepare sectors from EE_SEC_L to EE_SEC_H for erase
    command_iap[1]=EE1_SEC_L;
    command_iap[2]=EE1_SEC_H;
    iap_entry=(IAP) IAP_LOCATION;
    iap_entry(command_iap,result_iap);

    command_iap[0]=52;                    //erase sectors from EE_SEC_L to EE_SEC_H
    command_iap[1]=EE1_SEC_L;
    command_iap[2]=EE1_SEC_H;
    command_iap[3]=EE_CCLK;
    iap_entry=(IAP) IAP_LOCATION;
    iap_entry(command_iap,result_iap);

    command_iap[0]=53;                    //blankcheck sectors from EE_SEC_L to EE_SEC_H
    command_iap[1]=EE1_SEC_L;
    command_iap[2]=EE1_SEC_H;
    iap_entry=(IAP) IAP_LOCATION;
    iap_entry(command_iap,result_iap);

    __enable_irq();

    return result_iap[0];
}


При прохождении отладчиком не виснет, если же просто загрузить приложение, то виснет секунд на 30, потом работает нормально. Запись во флэш производится, что удивительно. Никто с подобным не сталкивался??
Заранее спасибо!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Polaris
сообщение Mar 24 2010, 20:58
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Так что, нет идей по поводу причин подобной работы? Ведь налицо системная ошибка.
P.S. Мне это уже интересно из чисто спортивных побуждений, от идеи использования флэши для хранения настроек отказался, вешать систему на сотни мс не очень хочется...
Go to the top of the page
 
+Quote Post



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

 


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


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