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

 
 
> ISP команды для NXP
DreamTwister
сообщение Apr 21 2010, 11:31
Сообщение #1


Участник
*

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



Добрый день.
Собственно, такая проблема.
Делаю свою утилиту для заливки прошивок под процессор NXP2388.

Собственно, заинтересовала ISP команда T. В описании на процессор ее нет. В интернете подробного описания - тоже.
Какой ее синтаксис и что она делает?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Apr 22 2010, 07:56
Сообщение #2


Профессионал
*****

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



Цитата(DreamTwister @ Apr 21 2010, 15:46) *
Собственно, заинтересовала ISP команда T.

Есть такая команда! Когда ковырялся с бутлоадером от LPC2129, там еще баги были можно было защищенный flash легко считать.
Но толку от нее мало - парралельная загрузка.
http://electronix.ru/forum/index.php?s=&am...st&p=133717
Go to the top of the page
 
+Quote Post
DreamTwister
сообщение Apr 22 2010, 08:42
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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, ставил второй режим на случай "а вдруг заработает").
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 22 2010, 08:53
Сообщение #4


Профессионал
*****

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



Цитата(DreamTwister @ Apr 22 2010, 12:57) *
Но у меня еще одна проблема. Процессор не реагирует на команду 'G'. Точнее отказывается запускать программу.
В ответ получаю 0\r\n\. А дальше - тишина.

А что должно быть?
0 - это ответ бутлоадера, что все ок! Он запихивает его в FIFO UART и делает вызов по адресу указанному в G, в принципе можно вернуться! (BX LR) и продолжить работу с бутлоадером. Например, для корректной работы надо загрузить функцию, которая отмапит flash на адрес 0. Я еще грузил функции которые позволяли быстро загрузить 8кб в RAM, а потом уже обычными командами бутлоадера шить flash, ( а то родной загрузкой через USB->UART из-за полудуплексоного простокола очень медленно).
И первоначальные тесты платы гружу по очереди в RAM и выполняю, так что G работает без проблем!
Go to the top of the page
 
+Quote Post
DreamTwister
сообщение Apr 22 2010, 09:17
Сообщение #5


Участник
*

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



Цитата(KRS @ Apr 22 2010, 15:08) *
И первоначальные тесты платы гружу по очереди в RAM и выполняю, так что G работает без проблем!


А можно узнать модели и версии процессоров, с которыми Вы работали? Я только что провел эксперимент с 'G ' на 2144, все отработало на ура!
Аналогичная последовательность команд на 2388 не приводит к должному результату. Причем 2388 запускается после передергивания питания.
Вот, что самое интересное.

Дак почему же один процессор запускается с "адреса сброса", а второй нет?
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 22 2010, 10:21
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 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
Go to the top of the page
 
+Quote Post
DreamTwister
сообщение Apr 22 2010, 11:47
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 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. Вот, собственно, потому и спросил.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 22 2010, 12:22
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
DreamTwister
сообщение Apr 23 2010, 03:27
Сообщение #9


Участник
*

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



Цитата(zltigo @ Apr 22 2010, 18:37) *
Да ну? От какой сырости таблица стала не с 0 начинаться....

Проблема совершенно не ясна, поскольку вместо всего это Вам следует после прошивки послать контроллер на 0 адрес И ВСЕ. Причем думать на какой адрес на самом деле не надо - в HEX файле он есть.


Вот в том то и дело, что утилита по прошивке определяет начальный адрес из *.hex файла не 0, что само по себе странно.
Но, как выяснилось после манипуляций с IAR, прошивка стартует, но не замыкает PLL.
Причем с обоих адресов. Вероятно, утилита определяет стартовый адрес не 0, а тот, куда мы попадаем из 0. unsure.gif
Интересная ситуация.

Сейчас меня интересует вопрос сброса после прошивки. Так как выяснилось, что просто перейти на 0-ой адрес - мало!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - zltigo   Цитата(DreamTwister @ Apr 23 2010, 05:42)...   Apr 23 2010, 05:06
|- - DreamTwister   Цитата(zltigo @ Apr 23 2010, 11:21) Прост...   Apr 23 2010, 05:23
|- - zltigo   Цитата(DreamTwister @ Apr 23 2010, 07:38)...   Apr 23 2010, 05:31
- - 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


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

 


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


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