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

 
 
 
Reply to this topicStart new topic
> PIC24F08 как hex-файл пишется во флэш
vardik
сообщение Oct 20 2011, 07:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 6-10-11
Пользователь №: 67 579



Разрабатываю девайс, фрагмент задачи - получить по Ethernet прошивку (hex-файл) и зашить ею PIC24F08.
Написал интерфейс для программирования PIC'a, для получения прошивки, синтаксического анализа строк hex-файла. Встал вопрос, как именно данные из hex-файла должны быть прописаны во флэш PIC'a.

У меня есть некий тестовый хекс-файл, с прошивкой. Я PICkit'ом прошиваю микроконтроллер и смотрю содержимое флеш памяти и пытаюсь сопоставить с тем, что в хекс-файле, которым я его только что прошил было написано.

Вот например кусок

:100800000080FA003400F9004F0078000040060034
:10081000801F78003400F80000002000A00188004C
:100820000200FA00004180000000E0001E003A00D3
:100830001900370022C2BF00624060000004E000DF

Разберем его
Размер Адрес Тип записи Данные КС
: 10 0800 00 00 80 FA 00 34 00 F9 00 4F 00 78 00 00 40 06 00 34
: 10 0810 00 80 1F 78 00 34 00 F8 00 00 00 20 00 A0 01 88 00 4C
: 10 0820 00 02 00 FA 00 00 41 80 00 00 00 E0 00 1E 00 3A 00 D3
: 10 0830 00 19 00 37 00 22 C2 BF 00 62 40 60 00 00 04 E0 00 DF

Что я вижу в памяти PIC,а.



Проблема в следующем. Очевидно, что данные из первой строки записались по адресу 0x0400 вместо 0x0800 (это не совпадение и по адресу 0x0800 память пуста, FFFFFF там). Также непонятно куда делись выделенные жирным в хексе байты.

Сообщение отредактировал vardik - Oct 20 2011, 07:16
Go to the top of the page
 
+Quote Post
Danis
сообщение Oct 20 2011, 08:52
Сообщение #2


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Цитата(vardik @ Oct 20 2011, 11:13) *
Разрабатываю девайс....


А нужен ли вам именно hex файл. Его ведь разбирать надо (парсить). Hex файл это не просто карта флеш памяти для контроллера, там много другой служебной информации. Проще сразу «бинарник» удаленно получать и писать. Либо, все таки, разберитесь со структурой hex. А нули это фантомные байты, с ними ничего делать не надо.


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
vardik
сообщение Oct 20 2011, 09:17
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 6-10-11
Пользователь №: 67 579



Цитата(Danis @ Oct 20 2011, 12:52) *
А нужен ли вам именно hex файл. Его ведь разбирать надо (парсить). Hex файл это не просто карта флеш памяти для контроллера, там много другой служебной информации. Проще сразу «бинарник» удаленно получать и писать. Либо, все таки, разберитесь со структурой hex. А нули это фантомные байты, с ними ничего делать не надо.


Немного разобрался, насчет нулей ты действительно прав, спасибо.
А с адресами ситуация следующая. Дело в том, что в hex-файле адресация идет по байтам, а на представленном скриншоте из PICKIT'a адресация идет по словам, каждое из которых состоит из трех байт. В хексе каждый четвертый байт, те которые выделены жирным шрифтом. как верно заметил коллега Danis "фантомные".
Одно слово занимает диапазон адресов длиной 0x2, например

0x000000 - 0x000002 - 1ое слово (3 байта)
0x000002 - 0x000004 - 2ое слово (3 байта)

Для записи такого диапазона берем 3 байта из поля данных Hex-файла + 1 "фантомный байт", итого 4 байта.

Таким образом одно слово занимает 2 адреса при адресации по словам
Это же слово в hex-файле занимает 4 байта и соответственно 4 адреса при адресации по байтам.
Этим и обусловлено удвоение адресов в hex-файле.

Насчет бинарника согласен, но задача именно через hex-файл стоит, да и парсер уже написан ; )

Сообщение отредактировал vardik - Oct 20 2011, 09:18
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 5th June 2024 - 08:06
Рейтинг@Mail.ru


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