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

 
 
> LPC23xx, firmware upgrade, Intel HEX, Keil, Как выловить EPT из HEX-файла?
svss
сообщение Jun 16 2011, 14:53
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 19-12-08
Из: Новосибирск
Пользователь №: 42 594



Здравствуйте, коллеги ARMатурщики.

Пришла нужда, сделал я, было, LPC2368/78 firmware upgrade (IAP+UART/IPMI) методом заливки Intel HEX файла и
интерпретации его на контроллере. По дороге заливщик/загрузчик вылавливает из HEX-потока стартовый
адрес (EPT) и хранит его вместе с дескриптором "upgrade"-кода во flash для последующих boot up.
Получаю HEX-файл с помощью IAR.

Ладно было дело, пока не заставила жизнь получить тот же HEX-файл с помощью Keil. Всё хорошо кроме одного:
не могу догадаться, где в полученном HEX-файле ловить EPT.

Если кто использует Intel HEX файл, полученный Keil, для прошивки fw upgrade, поделитесь, пож., опытом.

Спасибо. sm.gif
---

В принципе можно чуть продолжить для порядка: форум я читал, следов ответа найти не удалось,
знаю, что EPT попадает в HEX-файл из LPC2300.s, только попадает в "шифрованном" компилятором виде,
а уж дизассемблер на контроллере делать - вовсе тухлое занятие.
Потому и совет хочется. (Идеальный совет - "правильный" LPC2300.s,- только кто его даст... biggrin.gif )
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Jun 16 2011, 15:27
Сообщение #2


Гуру
******

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



QUOTE (svss @ Jun 16 2011, 17:53) *
не могу догадаться, где в полученном HEX-файле ловить EPT.

Возьмите описание Intel HEX формата и реализуйте его ПОЛНОСТЬЮ. И настанет Вам счастье и независимость.
QUOTE
попадает в "шифрованном" компилятором виде,

Смешно sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
svss
сообщение Jun 16 2011, 16:07
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 19-12-08
Из: Новосибирск
Пользователь №: 42 594



Цитата(zltigo @ Jun 16 2011, 22:27) *
Возьмите описание Intel HEX формата и реализуйте его ПОЛНОСТЬЮ. И настанет Вам счастье и независимость.

Смешно sad.gif

Я знаю, что Вы любите больше давать советы, чем отвечать на вопросы. Спасибо, но тема не про то.
Intel HEX формат я давно "взял", реализовал "полностью" и оно даже работает.

Если у Вас есть сомнения или возражения (например, Вы знаете конструкцию HEX, описывающую EPT), не сочтите за
труд ткнуть меня туда носом явно, а не намёком.

Если Вы найдёте время и силы для написания совета без отсылки к "сделай сам", спасибо. sm.gif
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 16 2011, 16:23
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(svss @ Jun 16 2011, 20:07) *
Если Вы найдёте время и силы для написания совета без отсылки к "сделай сам", спасибо. sm.gif

Ну это уже просто неприлично. См. тут: Wikipedia: Intel HEX
Внимательно смотрим на record type 03, record type 05.
А вообще можно зафиксировать точку входа и не париться.
Go to the top of the page
 
+Quote Post
svss
сообщение Jun 16 2011, 17:56
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 19-12-08
Из: Новосибирск
Пользователь №: 42 594



Цитата(scifi @ Jun 16 2011, 23:23) *
Ну это уже просто неприлично. См. тут: Wikipedia: Intel HEX

Я понимаю, что тема про моветон вечна и потому приведу для Вас специально
отрывок от HEX-файла имени Keil, о котором и тема (она - не про Википедию, как Вам показалось)

Код
:0400000500000000F7
:020000040000FA
:0400000500020000F5
:020000040002F8

(секции с кодом "0" и "1" по понятным причинам опущены.)
Всё, других секций нету.

Так вот, Record Type 5 не имеет ничего общего с EPT, а Record Type 2 (и 3) в файле от Keil отсутствуют вовсе.
Возможно, проблема с проектом.

(для справки - огрызок от map-файла:
"Image Entry point : 0x0000016c" - стартовый адрес factory code (Image Validation &bootstrap). - он нам не нужен, его контроллер найдёт сам.
"main 0x00020035 Thumb Code" - очень похоже на то, что надо, но этот адрес есть только "зарытый" в виде индекса в инструкцию,
напоминающую branch(R0). Прошу прощения, я мнемонику ассемблера ещё на память не выучил всю blush.gif ))
Это я к тому, что Rec type 5 не описывает EPT, да и наличие двух стартовых точек комментировать таки просто неприлично.

(PSPS)
К предположению об ошибке в проекте - скриншот. Подскажите, если знаете, пож., что там плохо и где.
Второй файл - тот самый HEX от Keil - для сомневающихся в моём утверждении. Rec Type 5 там не две, а примерно четыре.


Цитата
А вообще можно зафиксировать точку входа и не париться.
Это я не понял. Разжуйте несчастному, как ея зафиксировать: возможно о том и плач. rolleyes.gif

Сообщение отредактировал svss - Jun 16 2011, 18:03
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  blade_ipmi_hex.txt ( 220.45 килобайт ) Кол-во скачиваний: 46
 
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 16 2011, 21:25
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(svss @ Jun 16 2011, 21:56) *
К предположению об ошибке в проекте - скриншот. Подскажите, если знаете, пож., что там плохо и где.

Приложите лучше получившиеся scat и map. Галки и визарды - это всегда плохо.
Go to the top of the page
 
+Quote Post
svss
сообщение Jun 17 2011, 01:37
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 19-12-08
Из: Новосибирск
Пользователь №: 42 594



Цитата(aaarrr @ Jun 17 2011, 04:25) *
Приложите лучше получившиеся scat и map. Галки и визарды - это всегда плохо.

Да-да, выведите меня, пожалуйста, на чистую воду поскорее. Скучно тонуть в болоте. sm.gif

Цитата(KRS @ Jun 17 2011, 04:35) *
так отладка стартует все равно по Reset вектору.

ну main то уж точно точкой входа не может быть!
точка входа обычно в библиотеке находится, там стек инитится, сегменты и т.п.

Да, причём этот вектор указывает на boot loader. Он, boot loader, всё "инитит", что может,
проверяет валидность "настоящей" области векторов и передаёт туда управление.

IAR генерирует первую инструкцию, исполняемую после ResetVector, -
"B __iar_program_start" - переход в область update кода - то, что нужно.

Keil - делает что-то другое, там участвует выше упомянутый ("от Бога" даденный) файл lpc2300.s
На этом глубина моего познания Keil заканчивается и начинается мель проблем.

Внутренний голос мне уже подсказывает, что вы (команда уделивших внимание теме) сказали
достаточно полезных слов, чтоб я "дожал" проблему до внятного результата.
Тема, однако, пока не закрыта и если кто (например, aaarrr) сможет/захочет чего добавить,
упростить мне задачу - заранее спасибо.
Прикрепленные файлы
Прикрепленный файл  blade_ipmi.sct.txt ( 608 байт ) Кол-во скачиваний: 77
Прикрепленный файл  blade_ipmi.map.txt ( 110 килобайт ) Кол-во скачиваний: 415
 
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 17 2011, 06:46
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(svss @ Jun 17 2011, 05:37) *
Да-да, выведите меня, пожалуйста, на чистую воду поскорее. Скучно тонуть в болоте. sm.gif

Ваш проект имеет два load region'а, с адресами 0x00 и 0x20000. HEX получился совершенно корректный - двумя кусками с этими адресами. Так какие претензии к Keil'у?
Go to the top of the page
 
+Quote Post
svss
сообщение Jun 17 2011, 09:26
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 19-12-08
Из: Новосибирск
Пользователь №: 42 594



Цитата(aaarrr @ Jun 17 2011, 13:46) *
Ваш проект имеет два load region'а, с адресами 0x00 и 0x20000. HEX получился совершенно корректный - двумя кусками с этими адресами. Так какие претензии к Keil'у?

Это-то (то, что код корректный и работает) меня, похоже и сбило с толку, как я начинаю догадываться.

Региона - да- два, а вот кусков в HEX-файле три. (правда, между вторым и третьим нет дырки)
Претензия к Кейлу - в том, что *каждый* из трёх HEX-кусков сопровождается RecType5. Нужны только RecType4.
RecType5 должен быть единственным - описывающим адрес старта.

А пепел сыплю голова потому, что моё предположение о том, что код должен *работать* было, похоже, ошибочным.
Нужно генерировать Update код целиком в Update сегменте, тогда стартовый адрес совпадёт с базовым адресом сегмента и
один из трёх RecType5 имени Keil укажет на него.
(Как бы ещё гуманно выбрать из трёх наилучший? По наибольшей похожести на "ноль"?)

Однако такой код запустить из-под uVision IDE и пройти "по шагам" едва ли получится.
Пожелание к Кейлу есть. Указать бы как-то стартовый адрес, отличный от базового адреса сегмента.
Тогда описанное неудобство исчезнет.

Спасибо, Ваш комментарий добавил уверенности в том, что нет грубого промаха в проекте.

Сообщение отредактировал svss - Jun 17 2011, 09:27
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 17 2011, 10:18
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(svss @ Jun 17 2011, 13:26) *
тогда стартовый адрес совпадёт с базовым адресом сегмента и
один из трёх RecType5 имени Keil укажет на него.

Если базовый адрес сегмента (и, следовательно, точка входа) заранее известны, то зачем искать RecType5, который его сообщит?

Цитата(svss @ Jun 17 2011, 13:26) *
Однако такой код запустить из-под uVision IDE и пройти "по шагам" едва ли получится.

Получится. Отладчик uVision умеет много такого, о чём вы и не догадываетесь. Посказка: см. тут.
Go to the top of the page
 
+Quote Post
svss
сообщение Jun 18 2011, 04:46
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 19-12-08
Из: Новосибирск
Пользователь №: 42 594



Цитата(scifi @ Jun 17 2011, 17:18) *
Если базовый адрес сегмента (и, следовательно, точка входа) заранее известны, то зачем искать RecType5, который его сообщит?

Хороший вопрос. (Правда я на него неявно ответил выше)
Действительно искать не нужно, если код отлажен и его не нужно ходить по шагам.
Иначе стартовый адрес, как известно, всегда равен нулю, а точку входа нужно искать самому,
либо уговорить Keil поместить нужное в RecType5.

(Спасиб за ссылк.)

Цитата(scifi @ Jun 17 2011, 21:19) *
Спасибо, у меня уже давно всё работает :-) Это я топикстартеру забот накидываю, чтобы не расслаблялся :-)

Да, это дело.
Правда и у меня уже всё работает.

Тему можно было бы считать закрытой, но остался один вопрос, заданный в самом начале темы относительно
"правильного" lpc2300.s файла для Update кода. В случае его применения Update код можно отлаживать по
шагам.
Следуем правилу: "спросил-не ответили-ответь сам"

lpc2300_update.s
Код
;/*****************************************************************************/
;/* LPC2300_upd.S: Startup file for NXP LPC23xx/LPC24xx devices (update area) */
;/*****************************************************************************/
; Author: svss
; Note: this file was created using LPC2300.s (c)Philips/NXP/Keil as a sample.
; All copyrights are recognized.

; Area Definition and Entry Point
;  Startup Code must be linked first at Address at which it expects to run.

                AREA    RESET, CODE, READONLY
                ARM
Vectors         LDR     PC, __main        
;               LDR     PC, Undef_Addr
;               LDR     PC, SWI_Addr
;               LDR     PC, PAbt_Addr
;               LDR     PC, DAbt_Addr
                END
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 18 2011, 09:37
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(svss @ Jun 18 2011, 08:46) *
Тему можно было бы считать закрытой, но остался один вопрос, заданный в самом начале темы относительно
"правильного" lpc2300.s файла для Update кода. В случае его применения Update код можно отлаживать по
шагам.

Правильно будет настроить стек и кучу, а затем перейти на __main. То что вы привели не есть правильно, хотя при определенных условиях работоспособно.
Go to the top of the page
 
+Quote Post
svss
сообщение Jun 18 2011, 11:17
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 19-12-08
Из: Новосибирск
Пользователь №: 42 594



Цитата(aaarrr @ Jun 18 2011, 16:37) *
Правильно будет настроить стек и кучу, а затем перейти на __main. То что вы привели не есть правильно, хотя при определенных условиях работоспособно.

Спасибо.
Я здесь же отвечу и zltigo.
Правильно ли, нет ли писать максимум кода на C, оставляя ассемблера не более, чем обойтись нельзя, наверное, спорить смысла нет.
Нельзя обойтись числом ассемблерных инструкций, меньшим одной.

То, что код из одной ассемблерной инструкции уродлив я предлагаю считать частным мнением автора высказывания,
зато он позволяет с помощью Keil получать результат эквивалентный IAR.

Тут нелишне пожаловаться на судьбу и на рок в лице заказывающего музЫку и объяснить, что я всюду имел в виду Keil 3.0.
Я это умалчивал, чтоб не исчез интерес пишущих к теме и избежать совета потребовать от свышестоящих заменить среду разработки.
Такие дела. rolleyes.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- svss   LPC23xx, firmware upgrade, Intel HEX, Keil   Jun 16 2011, 14:53
|- - zltigo   QUOTE (scifi @ Jun 16 2011, 19:23) Внимат...   Jun 16 2011, 16:28
|- - zltigo   QUOTE (svss @ Jun 16 2011, 20:56) Так вот...   Jun 16 2011, 18:08
||- - svss   Цитата(zltigo @ Jun 17 2011, 01:08) Не зн...   Jun 16 2011, 18:34
||- - zltigo   QUOTE (svss @ Jun 16 2011, 21:34) Что кас...   Jun 16 2011, 18:44
||- - svss   Цитата(zltigo @ Jun 17 2011, 01:44) Может...   Jun 16 2011, 18:59
||- - zltigo   QUOTE (svss @ Jun 16 2011, 21:59) Ммм... ...   Jun 16 2011, 19:09
||- - svss   Цитата(zltigo @ Jun 17 2011, 02:09) Не ве...   Jun 16 2011, 19:28
|- - zltigo   QUOTE (scifi @ Jun 17 2011, 13:18) Если б...   Jun 17 2011, 11:08
||- - scifi   Цитата(zltigo @ Jun 17 2011, 15:08) Речь ...   Jun 17 2011, 11:35
||- - zltigo   QUOTE (scifi @ Jun 17 2011, 14:35) Ну так...   Jun 17 2011, 12:20
||- - scifi   Цитата(zltigo @ Jun 17 2011, 16:20) Ну и ...   Jun 17 2011, 14:19
|- - zltigo   QUOTE (svss @ Jun 18 2011, 07:46) Следуем...   Jun 18 2011, 08:48
|- - zltigo   QUOTE (svss @ Jun 18 2011, 14:17) Я здесь...   Jun 18 2011, 15:24
- - KRS   я тоже первый раз слышу про EPT в данном контексте...   Jun 16 2011, 20:32
- - svss   Цитата(KRS @ Jun 17 2011, 03:32) я тоже п...   Jun 16 2011, 21:09
- - KRS   Цитата(svss @ Jun 17 2011, 01:09) Table -...   Jun 16 2011, 21:35


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

 


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


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