|
|
 |
Ответов
|
Apr 22 2010, 08:42
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436

|
Цитата(KRS @ Apr 22 2010, 14:11)  Есть такая команда! Когда ковырялся с бутлоадером от LPC2129, там еще баги были можно было защищенный flash легко считать. Но толку от нее мало - парралельная загрузка. http://electronix.ru/forum/index.php?s=&am...st&p=133717Спасибо! Буду теперь знать! Думаю пригодится в ближайшем будущем. Но у меня еще одна проблема. Процессор не реагирует на команду 'G'. Точнее отказывается запускать программу. В ответ получаю 0\r\n\. А дальше - тишина. В качестве операндов перепробовал несколько комбинаций адресов. Интересно, что адрес вычисленный процедурой-донором тоже не подошел. Не подходит ни нулевой адрес, ни адрес таблицы векторов прерываний. Переключение между ARM и Thumb не помогло(запускаю в ARM, ставил второй режим на случай "а вдруг заработает").
|
|
|
|
|
Apr 22 2010, 09:17
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436

|
Цитата(KRS @ Apr 22 2010, 15:08)  И первоначальные тесты платы гружу по очереди в RAM и выполняю, так что G работает без проблем! А можно узнать модели и версии процессоров, с которыми Вы работали? Я только что провел эксперимент с 'G ' на 2144, все отработало на ура! Аналогичная последовательность команд на 2388 не приводит к должному результату. Причем 2388 запускается после передергивания питания. Вот, что самое интересное. Дак почему же один процессор запускается с "адреса сброса", а второй нет?
|
|
|
|
|
Apr 22 2010, 10:21
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(DreamTwister @ Apr 22 2010, 13:32)  Аналогичная последовательность команд на 2388 не приводит к должному результату. Причем 2388 запускается после передергивания питания. Так вы из флеша пытаетесь запустить штатный код? Т.к. бутлоадер частично инициализирует переферию, в частности на 23xx, 24xx PLL. Возможно вы его неккорректно отключаете или переинециализируете. И чип виснет. Цитата(DreamTwister @ Apr 22 2010, 13:32)  А можно узнать модели и версии процессоров, с которыми Вы работали? 2129, 2103, 1768, 2368, 2478
|
|
|
|
|
Apr 22 2010, 11:47
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436

|
Цитата(KRS @ Apr 22 2010, 16:36)  Так вы из флеша пытаетесь запустить штатный код? Т.к. бутлоадер частично инициализирует переферию, в частности на 23xx, 24xx PLL. Возможно вы его неккорректно отключаете или переинециализируете. И чип виснет. Так и есть! Через IAR глянул, что творится в процессоре - висим на while (!PLLSTAT_bit.PLOCK);. Цитата Это уже проблемы Вашей программы. Загрузчик запускает исполнение с любого адреса. А чего там у Вас не работает ему не ведомо. Не забудьте только добавить A или T. А какого, Вы запускаете с какого-то магического адреса, а не с того, с которого он стартует по включению питания, т.е. 0 ? Магическим адресом является, по сути, адрес таблици векторов прерываний(как я понял), а не 0. Разницы, кстати, замечено не было. Собственно, проблема ясна. Теперь о путях решения: 1)Правильно инициализировать PLL. Но есть проблема. Не факт, что все прошивки, заливаемые моей утилитой, будут моими, и PLL там будет адекватно проинициализирован. 2)После заливки основной программы прошивать по адресу 0x40000000 прошивку, которая будет делать сброс по WDT и все. После такого сброса можно быть уверенным, что процессор перешел а дефолтовые настройки. 3)Сбросить процессор программно через свою утилиту сразу после загрузки flash. При помощи какого-нибудь недокументированного способа. Но возможно ли это? Что посоветуете? Писать микроутилиту для RAM, как бы долго это не был? Цитата(zltigo @ Apr 22 2010, 16:58)  исходя из кода эти телодвижения для какого-то неведомого контроллера, который ответит на '?' "Bootloader" я лично таких НЕ знаю. Наверное какие-нибудь старинные версии загрузчиков.
Не забудьте только добавить A или T. Самого удивило! G без выбора режима, а на ? не Synchronized. Вот, собственно, потому и спросил.
|
|
|
|
|
Apr 22 2010, 12:22
|

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

|
Цитата(DreamTwister @ Apr 22 2010, 14:02)  Магическим адресом является, по сути, адрес таблици векторов прерываний(как я понял), а не 0. Разницы, кстати, замечено не было. Да ну? От какой сырости таблица стала не с 0 начинаться.... Цитата Собственно, проблема ясна. Теперь о путях решения: Проблема совершенно не ясна, поскольку вместо всего это Вам следует после прошивки послать контроллер на 0 адрес И ВСЕ. Причем думать на какой адрес на самом деле не надо - в HEX файле он есть. Код AT200/AES ISP/Terminal for LPC2/1000 V0.31.4 by I.Zalts. Windows 5.1 Erase all FLASH! Set Boot Control mode: 0 HEX file: [Ctrl+F9] .\works\exe\loader_usm3.hex Serial Port: COM12 Baud: 115200 Oscilator: 72000KHz
Dumb Terminal started [Alt+X] to exit
Go to LPC2000 Bootloader... Wait... Entering to LPC2000 Bootloader -Ok Bootcode: 3.3.0 Chip ID: LPC2378 512KB ROM/32KB SRAM Rev:B (ID:385940773/0x1700FD25)
Erased Sectors 0..27 File : '.\works\exe\loader_usm3.hex' -Loaded Linear Address: 00000000 Load Address: 00000000 Run Address Found: 00000000 End of File Image size: 8192 Sector 00.............................................................................. ............... Sector 01.............................................................................. ............... Download Finished. Now launching (000000) the brand new code....Success.
Found LPC2378 (Watchdog Mode) Loader CRC: Valid Kernel CRC: Not Found(FFFFFFFF)
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 23 2010, 03:27
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436

|
Цитата(zltigo @ Apr 22 2010, 18:37)  Да ну? От какой сырости таблица стала не с 0 начинаться....
Проблема совершенно не ясна, поскольку вместо всего это Вам следует после прошивки послать контроллер на 0 адрес И ВСЕ. Причем думать на какой адрес на самом деле не надо - в HEX файле он есть. Вот в том то и дело, что утилита по прошивке определяет начальный адрес из *.hex файла не 0, что само по себе странно. Но, как выяснилось после манипуляций с IAR, прошивка стартует, но не замыкает PLL. Причем с обоих адресов. Вероятно, утилита определяет стартовый адрес не 0, а тот, куда мы попадаем из 0. Интересная ситуация. Сейчас меня интересует вопрос сброса после прошивки. Так как выяснилось, что просто перейти на 0-ой адрес - мало!
|
|
|
|
|
Apr 23 2010, 05:06
|

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

|
Цитата(DreamTwister @ Apr 23 2010, 05:42)  Вот в том то и дело, что утилита по прошивке определяет начальный адрес из *.hex файла не 0... .....Так как выяснилось, что просто перейти на 0-ой адрес - мало! Простите, но выяснилось только одно - сначала надо научиться писать и написать, то, что прошивать. А потом уже прошивать. И тогда все будет и определяться, и всего будет достаточно.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 23 2010, 05:23
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436

|
Цитата(zltigo @ Apr 23 2010, 11:21)  Простите, но выяснилось только одно - сначала надо научиться писать и написать, то, что прошивать. А потом уже прошивать. И тогда все будет и определяться, и всего будет достаточно. Был бы этот *.hex файл полностью моей разработкой - проблем бы не было. Но это не так. Приходиться выкручиваться.
|
|
|
|
Сообщений в этой теме
DreamTwister ISP команды для NXP Apr 21 2010, 11:31 zltigo Цитата(DreamTwister @ Apr 21 2010, 14:46)... Apr 21 2010, 12:48 DreamTwister Врятли это префикс команда 'G'. Для своей ... Apr 22 2010, 03:22 zltigo Цитата(DreamTwister @ Apr 22 2010, 05:37)... Apr 22 2010, 10:43 KRS А почему бы вам не устроить ресет с помощью watchd... Apr 23 2010, 14:02 zltigo Цитата(KRS @ Apr 23 2010, 16:17) А почему... Apr 23 2010, 15:47 DreamTwister Цитата(KRS @ Apr 23 2010, 20:02) А почему... Apr 26 2010, 05:38
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|