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

 
 
> IAP в LPC, баянистый вопрос наверное...
Romario
сообщение Apr 28 2006, 11:29
Сообщение #1


Частый гость
**

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



нужно ли копировать код, который вызывает функцию IAP в раму? или не обязательно.
в даташите явно это не написано. мнения разделись. хочется наверняка знать и успокоится.
чтобы не было граблей.

я вот тут попробовал и....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexandrY
сообщение Apr 29 2006, 13:41
Сообщение #2


Ally
******

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



Грабли будут по любому wink.gif

Цитата(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-и. Если писать страницы сразу и не трогать потом, эффект не заметил пока. Но, скажем, знаю разработчиков которые имели проблемы и с однократной постраничной записью.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 29 2006, 15:24
Сообщение #3


Гуру
******

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



Цитата(AlexandrY @ Apr 29 2006, 16:41) *
Грабли будут по любому wink.gif
....
А если взглянуть шире, то к любым слухам стоит прислушаться.
...

Я например знаю последовательность данных запись которых во FLASH через IAP гарантировано приведет к искажению информации в соседних ячейках.

Ну вот кто-то где-то что-то сказал :-(

1. Давайте сюда эту жуткую последовательность.
2. Городить файловую систему (32K блоки после стирания восстанавливать :-( ) на встроенном FLASH на запись - наверное не стоит по любому.
3. ISP загрузчик сам через ISP (естественно без дозаписи 512 байтовыми страницами а сразу сектором) работает с абсолютно разной информацией и никаких проблем......


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 29 2006, 16:41
Сообщение #4


Ally
******

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



Цитата(zltigo @ Apr 29 2006, 18:54) *
Цитата(AlexandrY @ Apr 29 2006, 16:41) *

Грабли будут по любому wink.gif
....
А если взглянуть шире, то к любым слухам стоит прислушаться.
...

Я например знаю последовательность данных запись которых во 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 так и в начале и в разных секторах
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 5 2006, 12:44
Сообщение #5


Ally
******

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



Выяснил проблему.
Оказывается Philips всех лоханул.
ECC то его работает на 128 битах, а в мануалах они везде пишут что шить можно по 4-е байта, а на самом деле надо по 16-ть.
На это повелся Keil и написал нерабочую файловую систему для LPC
А за ними и я.
Итак вывод: Во FLASH LPC надо писать блоками данных кратными 16-и байтам и повторно в эти блоки больше ничего записывать нельзя даже если там осталось много FF.
Отсюда видно, что файловую систему типа той что написал Keil в принципе нормально реализовать нельзя для LPC .
Go to the top of the page
 
+Quote Post
Romario
сообщение May 5 2006, 15:18
Сообщение #6


Частый гость
**

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



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


опередили!:))) аккурат я об этом и хотел сегодня написать в этот топик.
вчера проводил экспериментsmile.gif)

p.s. т.к. что то уж смутно верилось в то, что филипок так облажался.

Сообщение отредактировал Romario - May 5 2006, 15:20
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - zltigo   Цитата(Romario @ May 5 2006, 18:18) p.s. ...   May 5 2006, 15:34
|- - AlexandrY   Цитата(zltigo @ May 5 2006, 19:04) Ну ког...   May 5 2006, 16:22
|- - 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


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

 


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


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