Загрузка кода во Flash LPC2106

Thu Jun 09 2005 11:02, Gerasimov Gerasim wrote to All:

GG> From: Gerasimov Gerasim <gerasimov snipped-for-privacy@zsmk.ru

GG> по существу: Hужен проект (чтобы сохранились настройки линкера, GG> компилера и т.д.) под IAR 4.1A типа BlinkLED для LPC210x, который GG> исполнялся бы из Flash (выключил питание, включил он и заморгал:-), GG> прошивка осуществляется (если такое возможно)по JTAG.

GG> Теперь жалуюсь: GG> //****************************************************************** GG> 1) "Пытаю" LPC2106 и IAR 4.1A для ARM

С ним идет, это с чем? Eval какая-то, из Mt-system?

GG> С ним идёт тестовый проект типа BlikLED GG> , изначально настроен для работы GG> из RAM, но есть фаил настройки линкера под FLASH.Компилю, загружаю GG> Wiggler`ом в RAM, "ПУСК"... светик моргает.

Код бы увидеть, не линкерного скрипта, а программы. Там вектора в озу не ремапятся случаем? Хотя это может влиять, если только прерывания используются.

GG> нормальной работы, нажимаем "Run..." :-( светик не моргает. Делаю ресет, GG> вкл/выкл питания один хрен - не помогает.

Hога P0.14 куда подтянута? Она отвечает за принудительное активироание бутлоадера.

GG> Wiggler`ом прошить флешку не удалось, даже подставив с стартапе по GG> смещению 0х14 соотведствующий DCD с правильной контрольной суммой.

Вообще, у меня 2129 во всяком случае прошивается. В 4.11а прошивался, но как-то непостоянное, через раз, а 4.20a прошивал несколько раз, на ура.

GG> 3) Wiggler`ом через JTAG из IAR`а флешку LPC2106 записать можно или нет, GG> а то вдруг я зря мучаюсь?

Можно.

GG> (контрольную суммы векторов естественно GG> предварительно посчитать с помощью утилиты)

она сама считается и подставляется в загрузчике, во всяком случае я специальным подсчетом не заморачивался.

GG> 4) Какие действия если затрётся бутлодер? GG> Hапример Wiggler`ом, если OCD Commander не воспринимает hex формат, а GG> прошивка бутлодера предоставляется именно в hex?

бутлоадер можно восстановить только через jtag, насколько я понимаю. По jtag в ram заливается управляющая программа, после чего посредством ее запуска производится прошивка флэш, независимо, области программы или бутлоадера.

GG> В общем мои первые впечатления (может и обманчивые), что программление GG> филипсойдных армов крайне не технологично (юзабилити у LPC2000 Flash GG> Utility близко к нулю, постояно пропадает связь с процем, иногда GG> приходится комп перегружать чтобы эта связь восстановилась, доселе я GG> вообще проблем с компортом не знал...)

Вообще я пробовал ей прошивать, в общем-то работает, но для отладки геморно, лучше через jtag, если в озу отлаживаться невозможно по причине его нехватки.

wbr, Andy

Reply to
Andy Mozzhevilov
Loading thread data ...

Здравствуйте! Пытаюсь освоить сабжевый проц, но споткнулся в самом начале пути (да так и валяюсь на дороге уже месяц ;-)))) Описание проблем и эмоции ниже, а по существу: Нужен проект (чтобы сохранились настройки линкера, компилера и т.д.) под IAR 4.1A типа BlinkLED для LPC210x, который исполнялся бы из Flash (выключил питание, включил он и заморгал:-), прошивка осуществляется (если такое возможно)по JTAG.

Теперь жалуюсь: //******************************************************************

1) "Пытаю" LPC2106 и IAR 4.1A для ARM С ним идёт тестовый проект типа BlikLED, изначально настроен для работы из RAM, но есть фаил настройки линкера под FLASH.Компилю, загружаю Wiggler`ом в RAM, "ПУСК"... светик моргает. Ок, теперь попытка прошить прогу во флешку Linker/Config/Linker command file = LPC2106_mac_FLASH.xcl (проверял, действительно определяет область кода от 0х00000 до 0х1FFFF = 128K кода) настроил линкер на генерацию hex чтобы можно было его грузить из LPC2000 Flash Utility (выяснил попутно, что из hex форматов,загрузчик воспринимает только intel-extended)

В тулзе LPC2000 Flash Utility выбираю сгенерированный hex, перед загрузкой выполняю "Vector Calc", т.е. контрольная сумма векторов, так необходимая бутлоадеру чтобы он запустил приложение юзера, корректна... после записи флешки вижу, что её содержимое совпадает с ассемблированным кодом из листинга, убедился что что адреса переходов (__program_start, _cstatup, main) указывают на правильные адреса, т.е. всё готово для нормальной работы, нажимаем "Run..." :-( светик не моргает. Делаю ресет, вкл/выкл питания один хрен - не помогает.

При просмотре ч/з JTAG, код "вращается" в области bootloader`a (7fffe1b0(сюда перадётся управление при сбросе) и выше), т.е. при сбросе, он как положено передаёт управление коду бутлодера, тот проверяет контрольную суммы векторов, и если всё ок передаёт управление коду юзера, но управление так и остаётся в бутлодере.

Wiggler`ом прошить флешку не удалось, даже подставив с стартапе по смещению 0х14 соотведствующий DCD с правильной контрольной суммой.

3) Wiggler`ом через JTAG из IAR`а флешку LPC2106 записать можно или нет, а то вдруг я зря мучаюсь? (контрольную суммы векторов естественно предварительно посчитать с помощью утилиты) 4) Какие действия если затрётся бутлодер? Например Wiggler`ом, если OCD Commander не воспринимает hex формат, а прошивка бутлодера предоставляется именно в hex? И, навсякий случай, информация из LPC2000 Flash Utility, полученная по "Read Device ID": PartID 4293984050 Boot Loader ID 1.3 В общем мои первые впечатления (может и обманчивые), что программление филипсойдных армов крайне не технологично (юзабилити у LPC2000 Flash Utility близко к нулю, постояно пропадает связь с процем, иногда приходится комп перегружать чтобы эта связь восстановилась, доселе я вообще проблем с компортом не знал...)

тем более есть с чем сравнивать:

1* CodeWarrior под Freescale 56F800E + Wiggler(ч/знеделю освоения я уже делал с процем всё что хотел, не всё удобно (напримр настройка линкера), но проблем с записью проги во флэшку не было) 2* Cygnal IDE с её ЕС2 JTAG адаптером - вообще образец для подражания (процесс общения с процем по JTAG прозрачен для юзера, и главное быстрее чем Wiggler`ом)
Reply to
Gerasimov Gerasim

Привет, Gerasimov! Вы писали to All on Thu, 9 Jun 2005 07:02:39 +0000 (UTC):

GG> Пытаюсь освоить сабжевый проц, но споткнулся в самом начале пути GG> (да так и валяюсь на дороге уже месяц ;-)))) Описание проблем и GG> эмоции ниже, а по существу: Нужен проект (чтобы сохранились GG> настройки линкера, компилера и т.д.) под IAR 4.1A типа BlinkLED для GG> LPC210x, который исполнялся бы из Flash (выключил питание, включил GG> он и заморгал:-), прошивка осуществляется (если такое возможно)по GG> JTAG.

Я IAR использую только как компилятор-линкер, без IDE, шью через LPC2000 Flash Utility. Про JTAG далее ...

GG> Теперь жалуюсь: GG> //***************************************************************** GG> 1) "Пытаю" LPC2106 и IAR 4.1A для ARM GG> работы из RAM, но есть фаил настройки линкера под FLASH.Компилю, ... GG> (проверял, действительно определяет область кода от 0х00000 до GG> 0х1FFFF = 128K кода)

Надо бы еще проверить, что бы он ОЗУ правильно определял + стеки + еще чего-то, что должно попадать в ОЗУ.

GG> настроил линкер на генерацию hex чтобы можно было его грузить из GG> LPC2000 Flash Utility (выяснил попутно, что из hex GG> форматов,загрузчик воспринимает только intel-extended) GG> В тулзе LPC2000 Flash Utility выбираю сгенерированный hex, перед GG> загрузкой выполняю "Vector Calc",

Это Utility само делает.

GG> т.е. контрольная сумма векторов, так необходимая бутлоадеру чтобы GG> он запустил приложение юзера, корректна... после записи флешки GG> вижу, что её содержимое совпадает с ассемблированным кодом из GG> листинга, убедился что что адреса переходов (__program_start, GG> _cstatup, main) указывают на правильные адреса, т.е. всё готово для GG> нормальной работы, нажимаем "Run..." :-( светик не моргает. Делаю GG> ресет, вкл/выкл питания один хрен - не помогает. GG> При просмотре ч/з JTAG, код "вращается" в области bootloader`a GG> (7fffe1b0(сюда перадётся управление при сбросе) и выше), т.е. при GG> сбросе, он как положено передаёт управление коду бутлодера, тот GG> проверяет контрольную суммы векторов, и если всё ок передаёт GG> управление коду юзера, но управление так и остаётся в бутлодере.

С JTAG-ом у меня дружба как-то не сложилсь. Мои JTAG и плата от OLIMEX, но думаю что это не важно. Основная, как мне кажется, проблема у меня в том, что JTAG не может номально работать с моим LPT портом. Т.е. он у меня как-то работает (очень медленно), но только при условии, что я двигаю мышкой. Останавливаю мышь - останавливается JTAG. Такой вот парадокс. Загрузка во flush у меня так и не получилась (ты, кстати, не забыл установить флажок Options - Debuger - Download - flush donload?). Однако, когда я использовал Rowley CrossWorks, то загрузка во flush через JTAG выполнялась без шаманства, правда оно загружает файлы только до 0х11000. Почему, я не знаю и не пытался узнать. Добавление точек останова, опять же, не получалось ни в IAR ни в CW. И вообще, наличие подключенного к плате JTAG-а приводило к ее полной неработоспособности в определенных условиях. Отключил JTAG и все ОК. Теперь работаю без JTAG.

GG> 4) Какие действия если затрётся бутлодер? GG> Например Wiggler`ом, если OCD Commander не воспринимает hex GG> формат, а прошивка бутлодера предоставляется именно в hex?

По идее, затереть бутлоадер не возможно. Т.е. система программирования flush устроена так, что записать в бутлоадер нельзя. Хотя у Philips есть какая-то утилита для перепрограммирования бутлоадера, но можно ли ее использовать если бутлоадер все же испортился, я не знаю.

GG> И, навсякий случай, информация из LPC2000 Flash Utility, полученная GG> по "Read Device ID": GG> PartID 4293984050 GG> Boot Loader ID 1.3

У тебя бутлоадер "старый". Где-то (в errata?) есть описание его ограничений, что-то связаное с частотой кварца. Посмотри, м.б. из-за этого у тебя с ним связь плохая.

GG> Всё P.S.ц LPC2106 перестал откликаться LPC2000 Flash Utility, но GG> код продолжает после ресета крутится в бутлодере (это я Wiggler`ом GG> подсмотрел) :-|

Отключи JTAG совсем, физически. Не забудь только оставить резистор, отключающий JTAG.

With best regards, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru

Reply to
Leha Bishletov

Gerasimov Gerasim пишет:

Спасибо всем откликнувшимся добрым людям.

Сегодня чудом LPC2106 вышел на связь, я сразу обновил бутлодер, предварительно подправил в прошивке константу частоты кварца установленного на плате (11.0592МГц). Всё теперь коннект стабильный, версия бутлодера 1.52. Закинул проект во флешку - работает.

По JTAG флэш прошить не получилось, сочтём за баг старой версии IAR (V4.10B)

Reply to
Gerasimov Gerasim

Привет Gerasimov!

Чет Июн 09 2005 11:02, Gerasimov Gerasim -> All:

GG> В тулзе LPC2000 Flash Utility выбираю сгенерированный hex, перед GG> загрузкой выполняю "Vector Calc", т.е. контрольная сумма векторов, так GG> необходимая бутлоадеру чтобы он запустил приложение юзера, GG> корректна... после записи флешки вижу, что её содержимое совпадает с GG> ассемблированным Это нафиг не нужно, контpольная сумма сама считается пpи загpузке.

GG> При просмотре ч/з JTAG, код "вращается" в области bootloader`a GG> (7fffe1b0(сюда перадётся управление при сбросе) и выше), т.е. при GG> сбросе, он как положено передаёт управление коду бутлодера, тот GG> проверяет контрольную суммы векторов, и если всё ок передаёт GG> управление коду юзера, но управление так и остаётся в бутлодере. Есть подозpение, что у тебя нога вызова загpузчика постоянно закоpочена. Вот он и кpутится, ждет сеанса связи. Отпусти ногу - и все заpаботает. :)

GG> 3) Wiggler`ом через JTAG из IAR`а флешку LPC2106 записать можно или GG> нет, а то вдруг я зря мучаюсь? (контрольную суммы векторов естественно GG> предварительно посчитать с помощью утилиты) Можно, но у меня в 90% случаев загpузка пpеpывается. Видимо, дело в кpивом Wiggler'е от MT-System.

GG> 4) Какие действия если затрётся бутлодер? GG> Hапример Wiggler`ом, если OCD Commander не воспринимает hex формат, GG> а прошивка бутлодера предоставляется именно в hex? Загpужай пpошивку чеpез загpузчик, он сам себя не затpет.

GG> В общем мои первые впечатления (может и обманчивые), что программление GG> филипсойдных армов крайне не технологично (юзабилити у LPC2000 Flash GG> Utility близко к нулю, постояно пропадает связь с процем, иногда GG> приходится комп перегружать чтобы эта связь восстановилась, доселе я GG> вообще проблем с компортом не знал...) Я во флешь загpужаю именно этой утилитой, с пpоблемами не сталкивался ни pазу, все pаботает как часы, в отличие от JTAG. Камни, пpавда, дpугие - 2124 и 2292.

GG> Всё P.S.ц LPC2106 перестал откликаться LPC2000 Flash Utility, но код GG> продолжает после ресета крутится в бутлодере (это я Wiggler`ом GG> подсмотрел) :-| Все, сломал. :)

Hа этом все, пока. Anton Abrosimov. ... Ум на земле - величина постоянная. А население-то растет!

Reply to
Anton Abrosimov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.