Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прошивка LPC2124 с адреса 0x10000
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
zltigo
Потребовалось залить дополнительную прошивочку для загрузки в FPGA в старшую область Flash
LPC2124. Казалось-бы какие могут быть проблемы?
В распоряжении имеется:
1. J-Flash 3.10D + MT-Link
2. Родной Philips ISP LPC2000 2.2.1
3. Альтернативный ISP lpc21isp 1.31

Что мучаем:
- Чип LPC2124 - bootloader 1.63;
- тестовый тектстовый файлик размером 16664 байта перегнанный в linear HEX.

1. Вообще-то потребуется в основном заливка через RS-232, но начал с J-Flash.
Не залилось! Ругань на сектор 0x12000. К счатью заметил (после многих месяцев использования),
что какой-то размер странный индицирует J-Flash для LPC2124 - 120K и 14 секторов. Ошибочка у
Segger - подправил описание чипа - порядок. Прошилось все как надо.

2. Переходим к Филипсофской утилите. Загружаем. Зашиваем. Слова худого в ответ не слышим.
А что во Flash? Во Flash каша:
- Собственно код с 0x00000 стерт, правда с адреса 0 записаны 64 байта мусора.
- C адреса 0x10000 располагается залитый файл, но он обрывается на
0x13FFF. Дальше 0xFF

Контролирую через Buffer->Flash Bufer Operation...
Все нормально... Но шьет аналогично.

3. Возвращаюсь к J-Flash - Жуть! Он не может стереть те самые 64байта в начале.
Не может и все! Весь чип чистится а 64байта нет. Сдох? Включаем-Выключаем-Перегружаем-Опять..
Не помогает. Запускаю ISP LPC2000 - Стереть-Проверить- говорит порядок. Читаем через J-Flash -
64байта на месте. Записать - ну естественно облом.

4. Берем другой чип - ПОВТОРИЛОСЬ!!!!

5. Берем альтернативный ISP - пробуем грузить программу с 0 адреса - загрузилась! Правильно!
Запускаем J-Flash - Стирается! Пишется!
Повторяю порчу еще несколько раз - СТАБИЛЬНЫЙ эффект.

6. Ну его этот Philips. Беру lpc21isp.
Зашиваю с 0x10000 требуемый файл. Уже при загрузке ясно,
что lpc21isp шьет с 0 до 0x10000 адреса нули :-(. Смотрим результат - Ой!
С нулевого адреса 32байта (не 64) мусора. Далее 0x00. Далее с 0x10000 искомое. НО!
после конца забито нулями и еще повторяется кусок текста.
Хорошо, что J-Flash без проблем это все стирает.

Теперь собственно вопрос:
Как залить через RS232 дополнительную (не одновременно с основной) прошивку
по старшим адресам Flash. Кто-то чем-то делал?

P.S.
Я конечно буду пробовать в случае чего копаться в исходниках lpc21isp, но сдается мне, что
может быть бесполезным и/или изрядно хлопоттым - уж очень похоже на баг в bootloader :-(((
На Philips, естественно, тоже напишу...

P.P.S.
Повторил эксперимент с LPC2294 - проблем НЕТ!
Повтори эксперимент с LPC2124 сказав, что это LPC2294 - проблемы ЕСТЬ!

P.P.P.S.
Попробовал заливать одним файлом:
- проблема с 32/64 байтами с 0 адреса исчезла у обоих
- осталось обрезание файла для филипса и добавление мусора в конце для lpc21isp
DASM
Немного не по-сути вопроса. Вы не забыли в опциях проекта J-Flash
на закладке ARM прописать два макроса. 1-ый - Reset , 2-ой
Write32bit по E01FC040 со значением 1 ? Может вопрос звучит и глупо,
но я не сразу до этого дошел, тоже долго мучился :-)))
zltigo
Цитата(DASM @ Feb 26 2006, 16:26) *
Немного не по-сути вопроса. Вы не забыли в опциях проекта J-Flash
на закладке ARM прописать два макроса. 1-ый - Reset , 2-ой
Write32bit по E01FC040 со значением 1 ?

AAAAAAA!!!!!!!!
Ну и туманно Вы изьяснились! Но это практически наверняка ПО ТЕМЕ!!!!!!

Этот $%U^&*%^&$ Philips ISP LPC2000 вроде как на первый взгляд не стирает
код НО ГРОБИТ контрольную сумму. Ну а дальше "Boot Loader Mode" и 64 бита ремапинга!
Ну дальше J-Flash в ступоре. Полагаю несомненно это ОНО!

ISP lpc21isp, напротив, тупо пишет контрольную сумму ВСЕГДА, но стирает все сектора перед
этим. Начал грубо латать код lpc21isp - недоработок там вагон и маленькая тележка.
Память под прошивку выделяет своеобразно и не оединичивает и прочее.. прочее...
Главное он в принципе не может шить никак, кроме как с нуля. Причем все так странно писано, что править и латать и латать придется. Но поскольку главный "глюк" нашел свое объяснение,
то работа не пропадет даром. С остальным уже разберусь.

Спасибо! О результатах эксперимента доложу.

Я вот только одного пока не пойму - ПОЧЕМУ LPC2294 прошился???????
DASM
Иногда и у меня с первого раза прошивался без этих макросов. Возможно там уже была зашита прога, которая делала remap на user flash. А сам J-Flash кстати reset не делает, если его не попросить. Вобщем допер до этого сам, а потом оказалось что все проще - у них в поставке есть готовые примеры jflash проектов - там так и сделано.
zltigo
Цитата(DASM @ Feb 26 2006, 17:49) *
Иногда и у меня с первого раза прошивался без этих макросов. Возможно там уже была зашита прога, которая делала remap на user flash.

В том-то и дело, что нет - стерто все начисто!
Velund
Похожие фокусы имел в J-Flash с LPC2138.
zltigo
Цитата(Velund @ Feb 27 2006, 04:47) *
Похожие фокусы имел в J-Flash с LPC2138.

Это само-собой - ЭТОТ эффект для всех един и теперь понятен и обходим средствами
J-Flash.

А вот то, что ни одной двух из известных мне ISP утилит нельзя прошить Flash не с 0 сектора
это меня поразило. Еще больше поразило, что вроде как 'можно', но дерьмо по полной программе.
Да и при штатном прошивании с 0 сектра появляются эффекты - филипс режет в старших сегментах
а LPC21ISP оставляет мусор и пачки 0 в хвосте в любом случае.

Вчера грубо помахал шашкой и залатал LPC21ISP - теперь шьет с начала любого сектора и без мусора.
Все хорошо, но неожиданно потерял время :-(.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.