|
IAP в LPC, баянистый вопрос наверное... |
|
|
|
 |
Ответов
|
Apr 29 2006, 13:41
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Грабли будут по любому Цитата(Romario @ Apr 28 2006, 14:59)  нужно ли копировать код, который вызывает функцию IAP в раму? Если прямо на вопрос, то толку вызавать IAP из RAM если сам IAP передаст управление опять во FLASH? А если взглянуть шире, то к любым слухам стоит прислушаться. IAP в LPC вещь очень ненадежная и странная. На мой взгляд у них серьезные проблемы с модулем Error Correction Code или контроллером FLASH. Я например знаю последовательность данных запись которых во FLASH через IAP гарантировано приведет к искажению информации в соседних ячейках. Выражаться будет в том, что в соседней ячейке с записанным 0 и которую при записи совершенно не трогаем возникнет бит 1, который нельзя будет в последствии перезаписать в 0! (ну не считая полного стирания сектора) Ни отключение MAM, ни отключение PLL, ничего от этого эффекта не помогает. Проверено на нескольких LPC2148, и в разных секторах. Использование IAP полностью корректное, прерывания отключены, питание стабильное, эффект тоже очень стабильный - 100%-ый. Процедура использования IAP сверена с тем как делается в примерах у IAR и у Keil, в файловой системе Keil-а и как рекомендует сам Philips. Тонкость в том, что в файловых системах применяется многократная дозапись страниц в сектора FLASH-и. Если писать страницы сразу и не трогать потом, эффект не заметил пока. Но, скажем, знаю разработчиков которые имели проблемы и с однократной постраничной записью.
|
|
|
|
|
Apr 29 2006, 15:24
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(AlexandrY @ Apr 29 2006, 16:41)  Грабли будут по любому .... А если взглянуть шире, то к любым слухам стоит прислушаться. ... Я например знаю последовательность данных запись которых во FLASH через IAP гарантировано приведет к искажению информации в соседних ячейках. Ну вот кто-то где-то что-то сказал :-( 1. Давайте сюда эту жуткую последовательность. 2. Городить файловую систему (32K блоки после стирания восстанавливать :-( ) на встроенном FLASH на запись - наверное не стоит по любому. 3. ISP загрузчик сам через ISP (естественно без дозаписи 512 байтовыми страницами а сразу сектором) работает с абсолютно разной информацией и никаких проблем......
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 29 2006, 16:41
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(zltigo @ Apr 29 2006, 18:54)  Цитата(AlexandrY @ Apr 29 2006, 16:41)  Грабли будут по любому .... А если взглянуть шире, то к любым слухам стоит прислушаться. ... Я например знаю последовательность данных запись которых во FLASH через IAP гарантировано приведет к искажению информации в соседних ячейках. Ну вот кто-то где-то что-то сказал :-( 1. Давайте сюда эту жуткую последовательность. 2. Городить файловую систему (32K блоки после стирания восстанавливать :-( ) на встроенном FLASH на запись - наверное не стоит по любому. 3. ISP загрузчик сам через ISP (естественно без дозаписи 512 байтовыми страницами а сразу сектором) работает с абсолютно разной информацией и никаких проблем...... Ну например: При чистом FLASH секторе т.е. где все 0xFF делаете так: Организуете в RAM буфер скажем на 1024 байт (или 512 , это ничего не изменит ) Весь буфер заполняем 0xFF в конец только припишем по смещению 0x3F8 массив {0x0C, 0x00, 0x00, 0x00} Записываем буфер (1024 байт) во FLASH по адресу 0x1FС00 используя IAP Теперь обратно из FLASH по адресу 0x1FC00 считываем в буфер те же 1024 байта и дописываем в буфер по смещению 0x3FС массив {0xF0, 0xF0, 0xF0, 0xF0} Снова записываем буфер во FLASH по адресу 0x1FС00 используя IAP Теперь проверяем че там во FLASH записалось и видим по адресу 0x1FFFB байт 0x01 Попытки забить это байт 0-ем ни к чему не приведут. Таких вариантов могу привести кучу. Эффект проявлялся как в конце сектора FLASH так и в начале и в разных секторах
|
|
|
|
|
May 5 2006, 15:18
|

Частый гость
 
Группа: Участник
Сообщений: 92
Регистрация: 26-06-04
Пользователь №: 192

|
Цитата(AlexandrY @ May 5 2006, 16:44)  Выяснил проблему. Оказывается Philips всех лоханул. ECC то его работает на 128 битах, а в мануалах они везде пишут что шить можно по 4-е байта, а на самом деле надо по 16-ть. На это повелся Keil и написал нерабочую файловую систему для LPC А за ними и я. Итак вывод: Во FLASH LPC надо писать блоками данных кратными 16-и байтам и повторно в эти блоки больше ничего записывать нельзя даже если там осталось много FF. Отсюда видно, что файловую систему типа той что написал Keil в принципе нормально реализовать нельзя для LPC . опередили!:))) аккурат я об этом и хотел сегодня написать в этот топик. вчера проводил эксперимент  ) p.s. т.к. что то уж смутно верилось в то, что филипок так облажался.
Сообщение отредактировал Romario - May 5 2006, 15:20
|
|
|
|
|
May 5 2006, 15:34
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Romario @ May 5 2006, 18:18)  p.s. т.к. что то уж смутно верилось в то, что филипок так облажался. Ну насчет 'облажался' - разве они где-то написали, что можно писать поверх записанного блока??? Цитата ECC то его работает на 128 битах, а в мануалах они везде пишут что шить можно по 4-е байта, а на самом деле надо по 16-ть. Ну когда я читал в последний раз мануалы, там было 512 байт и далее кратно..... В последних на 213x/4x 256 и кратно, так что на счет "везде пишут 4 байта" - нет такого. Посему наибольшую лажу спорол Keil, родив 'файловую систему'.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
Romario IAP в LPC Apr 28 2006, 11:29 zltigo Цитата(Romario @ Apr 28 2006, 14:29) нужн... Apr 28 2006, 15:01   zltigo Цитата(AlexandrY @ Apr 29 2006, 19:41) Та... Apr 29 2006, 18:55       amusin Цитата(AlexandrY @ May 5 2006, 22:22) Не,... May 10 2006, 04:31        GetSmart Скажите, кто-нибудь пробовал при программировании ... May 13 2006, 16:58 zltigo ЦитатаСкажите, ....
Пишите свой:
http://water.cse.... May 13 2006, 18:41 GetSmart Но я не хочу писать ботлоадер. Меня интересует мож... May 14 2006, 04:49  zltigo Цитата(GetSmart @ May 14 2006, 07:49) Но ... May 14 2006, 07:30  amusin Цитата(GetSmart @ May 14 2006, 10:49) Про... May 16 2006, 04:51   zltigo Цитата(amusin @ May 16 2006, 07:51) Можно... May 16 2006, 06:20    GetSmart Только что проверял прерывания когда обработчик в ... May 16 2006, 07:20 GetSmart Проверил стирание и запись флэш. Ха! Работает... May 16 2006, 08:01 zltigo Цитата(GetSmart @ May 16 2006, 11:01) zlt... May 16 2006, 08:41 GetSmart ЦитатаПросто я не извращенец. Можете продолжать в ... May 16 2006, 14:56
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|