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

 
 
> 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
zltigo
сообщение Jun 17 2011, 11:08
Сообщение #11


Гуру
******

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



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

Речь идет, насколько я понял, не о полном образе, для которого точка входа совпадает с вектором сброса и совпадает с началом образа, а о некоем подменяемом приложении. Для этого случая возможны варианты.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 17 2011, 11:35
Сообщение #12


Гуру
******

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



Цитата(zltigo @ Jun 17 2011, 15:08) *
Речь идет, насколько я понял, не о полном образе, для которого точка входа совпадает с вектором сброса и совпадает с началом образа, а о некоем подменяемом приложении. Для этого случая возможны варианты.

Ну так я и агитирую за вариант, при котором у подменяемого приложения точка входа была в самом младшем адресе двоичного образа. Тогда нет нужды искать эту точку в формате HEX. В конце концов, на загружаемый образ накладываются и иные требования (прежде всего разрешённый диапазон адресов, неплохо ещё добавить поле размера и контрольной суммы), так что фиксация точки входа не сильно затруднит.
Кроме того, есть интересная "уязвимость" формата Intel HEX, ведь в нём могут быть повторяющиеся или перекрывающиеся записи, а также записи с обратным порядком адресов. Так что должна быть гарантия, что файл прошивки пришёл из добросовестного источника, либо защита от дурака и/или хулигана.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2011, 12:20
Сообщение #13


Гуру
******

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



QUOTE (scifi @ Jun 17 2011, 14:35) *
Ну так я и агитирую за вариант, при котором у подменяемого приложения точка входа была в самом младшем адресе двоичного образа.

Ну и делайте в startup, все, что душа пожелает. Но в общем это не проблема. Сдается мне, что вы своими руками изобразили какую-то кашу из загрузчиков-ядер-приложений в ОДНОМ, а не разных проектах и теперь думаете а чего это оно получилось-то такое????
QUOTE (scifi @ Jun 17 2011, 14:35) *
Так что должна быть гарантия, что файл прошивки пришёл из добросовестного источника, либо защита от дурака и/или хулигана.

Ну так заливаете шифрованные. Я в HEX лью обычно только вторичный загрузчик. Дальше работает он. Заливку в HEX он тоже поддерживает, если очень попросить, но с контролем адресов - себя затереть не даст.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 17 2011, 14:19
Сообщение #14


Гуру
******

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



Цитата(zltigo @ Jun 17 2011, 16:20) *
Ну и делайте в startup, все, что душа пожелает.
...
Ну так заливаете шифрованные.

Спасибо, у меня уже давно всё работает :-) Это я топикстартеру забот накидываю, чтобы не расслаблялся :-)
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
|- - svss   Цитата(scifi @ Jun 17 2011, 17:18) Если б...   Jun 18 2011, 04:46
|- - zltigo   QUOTE (svss @ Jun 18 2011, 07:46) Следуем...   Jun 18 2011, 08:48
|- - aaarrr   Цитата(svss @ Jun 18 2011, 08:46) Тему мо...   Jun 18 2011, 09:37
|- - svss   Цитата(aaarrr @ Jun 18 2011, 16:37) Прави...   Jun 18 2011, 11:17
|- - 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 Текстовая версия Сейчас: 23rd July 2025 - 21:12
Рейтинг@Mail.ru


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