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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 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
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
zltigo
сообщение Jun 16 2011, 16:28
Сообщение #5


Гуру
******

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



QUOTE (scifi @ Jun 16 2011, 19:23) *
Внимательно смотрим на record type 02, record type 05.

Не 02 а 03




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


Местный
***

Группа: Свой
Сообщений: 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
zltigo
сообщение Jun 16 2011, 18:08
Сообщение #7


Гуру
******

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



QUOTE (svss @ Jun 16 2011, 20:56) *
Так вот, Record Type 5 не имеет ничего общего с EPT

Не знаю, что Вы за три буквы http://www.google.lv/search?client=opera&a...channel=suggest упорно твердите, но 3 или 5 это именно Start Address в одном из двух форматах 20 или линейном 32bit. Для ARM использование '3' странновато, но как-то встречал.
QUOTE
Это я не понял. Разжуйте несчастному, как ея зафиксировать

Решите для себя и хотя-бы попытайтесь объяснить кто это такая "ея".


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


Местный
***

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



Цитата(zltigo @ Jun 17 2011, 01:08) *
Не знаю, что Вы за три буквы http://www.google.lv/search?client=opera&a...channel=suggest упорно твердите, но 3 или 5 это именно Start Address в одном из двух форматах 20 или линейном 32bit. Для ARM использование '3' странновато, но как-то встречал.

Решите для себя и хотя-бы попытайтесь объяснить кто это такая "ея".

Ея (старорусск) - её, стартовую точку то есть. Ея её предлагали зафиксировать.
Не хочется предполагать, что предлагали с помощью
Код
#define __at(_addr) __attribute__ ((at(_addr)))
"дырявить" код.

Слово из трёх букв EPT в переводе с иностранного означает Entry Point (Table).
http://www.acronymattic.com/EPT.html
Это - не менее распространённое сокращение, чем RTFM.
(В первом посте перевод был уже дан, правда без ссылки)

Что касается Record Type 5, то он имеет отношение к Start Address для Intel x86, а в нашем случае (я файл выложил) указывает на начало
сегмента и к делу не относится, imho.
Вы, увы, не ссылаетесь на свой опыт. crying.gif Гугль- не панацея, википедия - не кладезь.

Сообщение отредактировал svss - Jun 16 2011, 18:35
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 16 2011, 18:44
Сообщение #9


Гуру
******

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



QUOTE (svss @ Jun 16 2011, 21:34) *
Что касается Record Type 5, то он имеет отношение к Start Address...

Можете верить, можете не верить, мне все равно, но это он и есть.
QUOTE
Вы, увы, не ссылаетесь на свой опыт.

Мой опыт простирается от использования Intel HEX формата со времен когда писал загрузчики с перфоленты в 8080 и до нынешнего времени, когда использую его-же для загрузки Firmware в ARM. Полегчало?



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


Местный
***

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



Цитата(zltigo @ Jun 17 2011, 01:44) *
Можете верить, можете не верить, мне все равно, но это он и есть.

Ммм... Причём их четыре, да? По-моему не смешно.
Тут вопрос не столько в вере сколько в здравом смысле и в генерируемом коде.
Я абсолютно не сомневаюсь, что Вы знаете, о чём пишете (просто потому, что я читаю этот форум давно: пишу редко),
однако мне Keil не показывает стартовый адрес в (единственной, я надеюсь) RT5. Как его "уговорить" я пока не догадался.

Цитата(zltigo @ Jun 17 2011, 01:44) *
Мой опыт простирается от использования Intel HEX формата со времен когда писал загрузчики с перфоленты в 8080 и до нынешнего времени, когда использую его-же для загрузки Firmware в ARM. Полегчало?

А как же! Родственная душа, всегда приятно. Я впервые парсил Hex во времена до 8080. Такой программатор был, Intellec назывался.
Крутая машина, чисто импортная, жгла ПЗУшки 256*4 (для Intel3000), понимал Hex-формат.
А в какой ARM Вы грузите FW и чем HEX получаете?


(ЗЫ) Я начал тему с того, что всё сделал и всё получилось из-под IAR. Сейчас глянул - действительно там (в HEX от IAR) -единственная
запись Type 5, и в ней - правильная точка входа. Как-то всё "само" работало, и я просто не интересовался, а тут - нате Вам... Keil.
Его, Кейла, ругать нельзя, его многие любят. (Но что-то в тему пока не пишут) :-;

Сообщение отредактировал svss - Jun 16 2011, 19:11
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 16 2011, 19:09
Сообщение #11


Гуру
******

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



QUOTE (svss @ Jun 16 2011, 21:59) *
Ммм... Причём их четыре, да?

Не верю.
QUOTE
А в какой ARM Вы грузите FW и чем HEX получаете?

В LPC,ST,TI IAR/Keil/GCC
QUOTE (svss @ Jun 16 2011, 21:59) *
Такой программатор был, Intellec назывался.
Крутая машина, чисто импортная, жгла ПЗУшки 256*4 (для Intel3000), понимал Hex-формат.

Это не программатор, это отладочная система. Программатор там среди прочего. Как и HEX формат в первую очередь создавался не для программаторов а для ЗАГРУЗЧИКОВ, посему адрес по которому передавать управление после загрузки вещь обязательнейшая.


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


Местный
***

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



Цитата(zltigo @ Jun 17 2011, 02:09) *
Не верю.

Справедливо не верите, я плохо посчитал. Там их не четыре, а всего три. Файл - выше, о какой вере речь?

Цитата(zltigo @ Jun 17 2011, 02:09) *
Это не программатор, это отладочная система. Программатор там среди прочего.

Я пользовал только программатор, о нём и написал. Да, это была пара стоек, в одной из них компьютер Hewlett Packard... bb-offtopic.gif

Собственно, спасибо Вам за труд и время. Надеюсь я был не слишком назойлив.
Доктор сказал: "в морг", значит - в морг. Если никто не подскажет как победить Keil, я напишу пост-процессор для HEX-файла, стирающий
лишние RT5 и внедряющий одну правильную. Коль нет автомата, поможет лопата. maniac.gif
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 16 2011, 20:32
Сообщение #13


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

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



я тоже первый раз слышу про EPT в данном контексте.
Причем здесь вообще таблица?
Используется понятие точка входа (entry point) без всяких таблиц, в данном случае.
И кстати типы записей 2 и 3 (с сегментами) я уже очень давно не встречал в HEX файлах.
А часть программ вообще с ними криво работает, особенно если сегменты перекрываются.

А если у вас в HEX файле несколько точек входа указано - значит проблема в исходниках.

Go to the top of the page
 
+Quote Post
svss
сообщение Jun 16 2011, 21:09
Сообщение #14


Местный
***

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



Цитата(KRS @ Jun 17 2011, 03:32) *
я тоже первый раз слышу про EPT в данном контексте.
Причем здесь вообще таблица?

Лингвистика сложна, ну её к Microsoft. (Это у них я научился называть точку входе EntryPoinT)
Table - обобщение. У контроллера LPC*subj это таки таблица. Таблица векторов прерываний. (Предлагаю измерение длины остановить и считать меня виноватым) biggrin.gif

Цитата(KRS @ Jun 17 2011, 03:32) *
А если у вас в HEX файле несколько точек входа указано - значит проблема в исходниках.

Возможно. Причём IAR этого не замечает, оба (IAR & Keil) через Jlink всё правильно заливают и отлаживают, и только Keil чего-то видит, но молчит и генерирует бессмысленный (если верить Вам и zltigo - а не верить тоже нехорошо) HEX-файл.
Вообще, я предпочитаю отделять вопросы религии от вопросов настройки проекта и багов-глюков инструментов.

Как, зачем компилятор (простите, скорее тут дело в линкере), будучи популярен и не убит молча генерирует три HEX записи типа 5?
Как исходные тексты, где нет и намёка на точку входа (кроме секретного слова "main") могут убивать компилятор линкер?
Простите эмоции. Желательна идея. Где, в каком месте проекта Keil я должен явно указать, что main() - точка входа?
Ну, или не main, а что-то другое (что, где)?

Наверное я слегка перегрелся и нуждаюсь в отдыхе с последующим чтением мануала от Кейл - чтоб он сдох был здоров.
У нас тут в Сибири уже 3 часа ночи, я пошёл спать. Завтра вернусь, всего вам.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 16 2011, 21:25
Сообщение #15


Гуру
******

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



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

Приложите лучше получившиеся scat и map. Галки и визарды - это всегда плохо.
Go to the top of the page
 
+Quote Post

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

 


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


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