|
Проблема с LPC1768, Не записывается внутренний флеш по адресу 0x70000 |
|
|
|
Dec 6 2010, 20:04
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Имеется LPC1768. Написан свой загрузчик по UART, расположен в первых 16K флэш памяти. Все работало нормально. Но недавно программа увеличилась в размерах и потребовалась запись уже в предпоследний сектор флешки - по адресу 0x70000. И тут произошла засада - оно просто не пишется, функция IAP возвращает SUCCESS, а данные по адресу не записаны. Начал разбираться что до как. В итоге есть две платы, на обоих LPC1768, но с разными маркировками. На одной память пишется нормально, на второй - такая вот ерунда. И эта проблемная плата не одна такая - на данный момент три опытные штуки, процессоры на них из одной партии. Прочитал BootROM, дизассемблировал, нашел много интересного  . У LPC-ей оказывается есть 2 килобайта теневого флеша, и там записано много любопытных вещей - ID процессора, точки старта, методы блокировки JTAG, и - таблица адресов секторов. Так вот - у сбойных чипов эта таблица для предпоследнего сектора содержит 0x78000 вместо законных 0x70000 в нормальном чипе. Такая информация в теневой флешке могла быть записана только на заводе. Вопрос такой - кто-нибудь уже написал такую большую программу для LPC17xx, что понадобился сектор по адресу 0x70000? Или просто у кого-нибудь были проблемы с флешкой по адресу 0x70000?
|
|
|
|
|
 |
Ответов
|
Dec 7 2010, 13:55
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Цитата(GetSmart @ Dec 7 2010, 15:49)  FlashMagic тоже не может прописать адреса 0x70000..0x77ffff ? Не пробовал. А что - это идея, надо бы проверить, спасибо. Правда у меня там RS-232 нету и перемычки на 2.10 тоже. Upd: попробовал. Программа flashmagic ублюдочная - 6 мегабайт инсталлятор, полчаса грузит в свой внутренний буфер большой хекс файл. Сначала просто выполнил стирание и записал большой файл. Он записался нормально! Я даже обалдел слегка. Потом вспомнил что IAP то возвращает успех. И записал снова и выполнил верификацию - опа - олень попался - ничего не записано! То есть баг тот же самый. Общий итог - через FlashMagic и заводской загрузчик тоже не работает. И на том же самом месте. В-общем-то у меня к NXP основная претензия - закрытость загрузчика и алгоритма записи в память. А теперь они еще и напортачили там
|
|
|
|
|
Dec 9 2010, 09:04
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070

|
Цитата(VslavX @ Dec 7 2010, 16:55)  В-общем-то у меня к NXP основная претензия - закрытость загрузчика и алгоритма записи в память. А после дизассемблирования алгоритм записи в память не появился? Если напрямую, без использования их ПЗУ работать? И как еще один вариант. Попробовать настроить регистры отладчика или MPU на перехват обращения к глючной части теневого ПЗУ и подправить результат.
|
|
|
|
|
Dec 9 2010, 10:26
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Цитата(vmp @ Dec 9 2010, 11:04)  А после дизассемблирования алгоритм записи в память не появился? Если напрямую, без использования их ПЗУ работать? В принципе появился, но с документацией лучше. В принципе я запросил ее у NXP хотя бы касательно программирования флешки, посмотрим что скажут. Цитата(vmp @ Dec 9 2010, 11:04)  И как еще один вариант. Попробовать настроить регистры отладчика или MPU на перехват обращения к глючной части теневого ПЗУ и подправить результат. Думал я об этом, возни достаточно много - когда идет обращение к теневой флешке, то основная флеш не работает - это обработчик исключения надо в ОЗУ размещать, а все обработчики у меня по шаблону автогенерируюся и на HAL/RTOS завязаны. Но, наверное от шаблона отступить все-таки можно. MPU у меня уже используется, все регионы заняты, а вот точка останова по обращению к данным - вполне подойдет, cпасибо за идею. Upd: почитал про DWT (Data Watchpoint and Trace) - не пойдет, процессор именно останавливается, а не генерирует исключение. Таки остается только MPU.
|
|
|
|
|
Dec 9 2010, 11:37
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Цитата(vmp @ Dec 9 2010, 13:05)  А про Flash Patch and Breakpoint (FPB)? Как я понимаю, надо читать документацию от ARM, а не от NXP. Угу, нуна читать "Cortex™-M3 r2p0 Technical Reference Manual". FPB патчит I-шину, можно "на лету" заменить код инструкции. Мест там несколько, и одной инструкцией на место не обойдешься. На подпрограмму просто не перейдешь RAM от BootROM далеко, LR испортится, появляется вариабельность по версиям загрузчика и прочее. Проще патчить D-шину, а такой фичи в FPB нету. Хотя... Можно пропатчить на инструкцию SWI. Но, блин, это исключение у меня тоже используется. Думаю что на MPU сделать проще, во-первых не весь загрузчик дизассемблирован, возможно где-то есть еще обращения к глючной таблице, во-вторых c MPU уже досконально разобрался и он уже для виртуализации используется, проблема только в выносе части кода в RAM. Upd: вчера провели ревизию склада - куплено пока всего две упаковки по 90 штук, на одной из них есть зеленая круглая наклейка и этикетка "RESCREEN". С MPU решил не возиться, вместо этого разбираю алгоритм прямой записи, хочется еще маленькими кусочками память писать а не по 256 байт.
|
|
|
|
Сообщений в этой теме
VslavX Проблема с LPC1768 Dec 6 2010, 20:04 scifi А вообще LPC1768 уже официально доведённый продукт... Dec 7 2010, 07:08 VslavX Цитата(scifi @ Dec 7 2010, 09:08) А вообщ... Dec 7 2010, 13:48 oman Цитата(VslavX @ Dec 6 2010, 23:04) Прочит... Dec 7 2010, 08:09 GetSmart Цитата(oman @ Dec 7 2010, 13:09) не расск... Dec 7 2010, 12:23 GetSmart Возможно напортачили только в 2к теневого флэша. Н... Dec 7 2010, 15:17 VslavX Цитата(GetSmart @ Dec 7 2010, 17:17) Возм... Dec 7 2010, 16:12 GetSmart VslavX, у Вас есть код для чтение 2к теневого флэш... Dec 7 2010, 21:50 VslavX Цитата(GetSmart @ Dec 7 2010, 23:50) Vsla... Dec 8 2010, 05:56 igorsk Теневой ром виден при установке бита 0x40 в слове ... Dec 8 2010, 01:32 VslavX Я балдею дорогая редакция...
NXP ответил что девай... Dec 8 2010, 14:48 GetSmart Цитата(VslavX @ Dec 9 2010, 16:37) С MPU ... Dec 10 2010, 23:06 vmp Этот же баг обнаружился в LPC1759, SN1566.1 01 ZSD... Mar 3 2011, 07:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|