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

 
 
> Bootloader и прога одним hex файлом. КАК?
shamray
сообщение Aug 17 2006, 09:26
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Я делаю bootloader для свой программы. Создал 2 проэкта в пределах одного Workspace. Хотелось бы что-бы файлы генерируемые из каждого роекта ложились в один hex.
Для бутлодера определил сегменты так:

Код
//=============================================================================
// Interrupt vectors

-Z(CODE)INTVEC=(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-BOOT_SIZE+IVT_SIZE-1)

//=============================================================================
// Code memory

-Z(CODE)NEAR_F,HUGE_F,SWITCH,INITTAB,CODE=(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-1)
-Z(FARCODE)FAR_F,FARCODE=(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-1)

//=============================================================================
// RAM

-Z(DATA)NEAR_I,NEAR_Z=RAM_BASE-(RAM_BASE+RAM_SIZE-1)
-Z(DATA)RSTACK+40=RAM_BASE-(RAM_BASE+RAM_SIZE-1)
-Z(DATA)CSTACK+(RAM_SIZE-40-APP_SRAM_USAGE)=RAM_BASE-(RAM_BASE+RAM_SIZE-1)

-Z(CODE)TINY_ID,NEAR_ID,HUGE_ID=(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-1)


вроде по map файлу ложится нормально. Но вот как добавить код основной прогаммы с 0-го адреса в выходной файл линковщика?
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 16)
KRS
сообщение Aug 17 2006, 09:43
Сообщение #2


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

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



1. Надо другой программой объеденить 2 HEX файла в один

2. Добавить в проект с основной программой объектный файл скомпилированного бутлоадера

3. В одном проекте и бутлоадер и программа
Go to the top of the page
 
+Quote Post
shamray
сообщение Aug 17 2006, 09:55
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Цитата(KRS @ Aug 17 2006, 12:43) *
1. Надо другой программой объеденить 2 HEX файла в один

2. Добавить в проект с основной программой объектный файл скомпилированного бутлоадера

3. В одном проекте и бутлоадер и программа



1. Если не секрет - какой программой.

2. Не понял.

3. В одном проекте? А как потом задать что-бы одни функции ложились по адресам программы, а другие по адресам бутлодера? Вставлять перед каждой функцией указание на нйжный сегмент? Очень это геморно. Притом файлы из основной проги могут называться так-же как и из бутлодера, а пеименовывать их я не хочу.

Может можно как-то указать инкуру типа с адреса 0 вставляй этот файл, а с адреса хххх другой?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Aug 17 2006, 13:48
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(shamray @ Aug 17 2006, 12:55) *
Цитата(KRS @ Aug 17 2006, 12:43) *

1. Надо другой программой объеденить 2 HEX файла в один


1. Если не секрет - какой программой.

Текстовым редактором.

Последняя строка hex файла содержит команду конца файла.
У первого из сливаемых файлов её надо удалить, а вместо этой строки вставить содержимое второго файла.
Весь этот гарнитур можно зашивать сразу в МК.
Go to the top of the page
 
+Quote Post
Harbour
сообщение Aug 18 2006, 02:14
Сообщение #5


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



Вот один из вариантов для atmega8515, выдержка из makefil'а

....
binmerge:
dd if=/dev/zero of=code.bin bs=1024 count=8
dd if=app.bin conv=notrunc of=code.bin
dd if=boot.bin conv=notrunc of=code.bin bs=1 seek=6144
bin2hex code.bin code.hex
.......
Go to the top of the page
 
+Quote Post
KRS
сообщение Aug 18 2006, 08:41
Сообщение #6


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

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



Цитата(shamray @ Aug 17 2006, 13:55) *
Цитата(KRS @ Aug 17 2006, 12:43) *

2. Добавить в проект с основной программой объектный файл скомпилированного бутлоадера

2. Не понял.


Можно в проект добавить объектный файл, обычным сопсобом как и с файлы.
Можно в xcl файле указать дополнительбные объектники или библиотеки

Но все равно придется код и данные по разным сегментам раскидывать!
с данными и константами проще достаочно один раз
Код
#pragma constseg=
#pragma dataseg=


задать, а вот для кода такой прагмы нету sad.gif
Go to the top of the page
 
+Quote Post
IEC
сообщение Aug 25 2006, 10:01
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Господа, теряем суть проблемы: Зачем вообще нужен BOOTLOADER?
Ответ: для загрузки программного кода!
Тогда сначало загружается BOOTLOADER, а затем загружается программный код столько раз сколько нужно!
Зачем две независимые программы объеденять в один файл????
Go to the top of the page
 
+Quote Post
vet
сообщение Aug 25 2006, 10:03
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Для первоначальной прошивки кристалла, видимо.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
IEC
сообщение Aug 25 2006, 10:07
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



В таком случае первоначальной прошивкой будет прошивка бутлоадера!
Go to the top of the page
 
+Quote Post
vet
сообщение Aug 25 2006, 10:26
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Ну, скажем, нужно прошить партию в тысячу кристаллов. Прошивка в два этапа (зашить бутлодер программатором, затем залить программу по UART или другому интерфейсу) усложнит и замедлит процесс.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
IEC
сообщение Aug 25 2006, 10:32
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Согласен! Такой вариант не продумал!
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Aug 28 2006, 13:46
Сообщение #12


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

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Если программатор коммандной строки (AVReAl, например), то нужно написать правильный батник и усё (разобраться с кодами возврата несложно). Это раз.
IMHO, сливать нужно бинарные файлы. Это самое простое решение. Это два.
Вообще, если использовать IAR, то склеивать можно и в проекте, прописав нужные сегменты, но для простоты в бутлоадере не должны использоваться прерывания (от 2-х таблиц векторов у симулятора раньше срывало крышу, компилер тоже себя вёл неадекватно), а startup бутлоадера нужно тоже не забыть положить в проект и в нужный сегмент приписать. Видел работающее, но сам так не делал.
Думаю, что если нет необходимости, объединять в проекте не стОит.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Aug 28 2006, 20:04
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Не бинарные, а *.hex. Это корректнее..., толерантнее (щас так модно выражаться)
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Aug 29 2006, 13:19
Сообщение #14


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

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



В hex можно n раз писать по одному адресу - это практически невидимая и обычно малозначащая проблемка. После перевода в bin получим файл без пустот, отрезаем с бутового адреса и дописываем туда же. Затем можно перевести и в hex.
Иначе можно накатать прогу, залазящую на область бута, склеить так, что вначале не прога, а бут, потом уверенно залить и искать непонятки.
По bin прошивки и сравнивать корректнее - чего записано, чего считано... Ведь исходное в hex с пустотами, а сравниваем обычно файлы как минимум по размеруwink.gif , а уж потом по содержимому


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Aug 30 2006, 16:07
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Где-то видел утилиту типа hexmerge, порылся - не нашел. Objcopy еще можно попробовать - вдруг получится...
Go to the top of the page
 
+Quote Post
relex
сообщение Aug 31 2006, 11:08
Сообщение #16





Группа: Участник
Сообщений: 13
Регистрация: 8-08-06
Пользователь №: 19 416



Я использую утллиту hexmate для объединения hex файлов
правда задача была прилепить прошивку DSP к прошивке хоста

запускается с коммандной строки, можно в окне cmd, можно BATником,
в CodeVision например можно сразу указать
Project->Configure->After Make->Program Settings .....

hexmate -help для справки
Прикрепленные файлы
Прикрепленный файл  hexmate.zip ( 20.6 килобайт ) Кол-во скачиваний: 49
 
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Aug 31 2006, 15:20
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



А еще есть пакет SRecord, так там столько утилит на все случаи жизни... Понятно, hex тоже понимает.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 17:14
Рейтинг@Mail.ru


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