|
Bootloader и прога одним hex файлом. КАК? |
|
|
|
Aug 17 2006, 09:26
|

Частый гость
 
Группа: Свой
Сообщений: 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-го адреса в выходной файл линковщика?
|
|
|
|
|
Aug 17 2006, 09:55
|

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

|
Цитата(KRS @ Aug 17 2006, 12:43)  1. Надо другой программой объеденить 2 HEX файла в один
2. Добавить в проект с основной программой объектный файл скомпилированного бутлоадера
3. В одном проекте и бутлоадер и программа 1. Если не секрет - какой программой. 2. Не понял. 3. В одном проекте? А как потом задать что-бы одни функции ложились по адресам программы, а другие по адресам бутлодера? Вставлять перед каждой функцией указание на нйжный сегмент? Очень это геморно. Притом файлы из основной проги могут называться так-же как и из бутлодера, а пеименовывать их я не хочу. Может можно как-то указать инкуру типа с адреса 0 вставляй этот файл, а с адреса хххх другой?
|
|
|
|
|
Aug 17 2006, 13:48
|

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

|
Цитата(shamray @ Aug 17 2006, 12:55)  Цитата(KRS @ Aug 17 2006, 12:43)  1. Надо другой программой объеденить 2 HEX файла в один
1. Если не секрет - какой программой. Текстовым редактором. Последняя строка hex файла содержит команду конца файла. У первого из сливаемых файлов её надо удалить, а вместо этой строки вставить содержимое второго файла. Весь этот гарнитур можно зашивать сразу в МК.
|
|
|
|
|
Aug 18 2006, 08:41
|

Профессионал
    
Группа: Модераторы
Сообщений: 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= задать, а вот для кода такой прагмы нету
|
|
|
|
|
Aug 28 2006, 13:46
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Если программатор коммандной строки (AVReAl, например), то нужно написать правильный батник и усё (разобраться с кодами возврата несложно). Это раз. IMHO, сливать нужно бинарные файлы. Это самое простое решение. Это два. Вообще, если использовать IAR, то склеивать можно и в проекте, прописав нужные сегменты, но для простоты в бутлоадере не должны использоваться прерывания (от 2-х таблиц векторов у симулятора раньше срывало крышу, компилер тоже себя вёл неадекватно), а startup бутлоадера нужно тоже не забыть положить в проект и в нужный сегмент приписать. Видел работающее, но сам так не делал. Думаю, что если нет необходимости, объединять в проекте не стОит.
--------------------
aka Vit
|
|
|
|
|
Aug 29 2006, 13:19
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
В hex можно n раз писать по одному адресу - это практически невидимая и обычно малозначащая проблемка. После перевода в bin получим файл без пустот, отрезаем с бутового адреса и дописываем туда же. Затем можно перевести и в hex. Иначе можно накатать прогу, залазящую на область бута, склеить так, что вначале не прога, а бут, потом уверенно залить и искать непонятки. По bin прошивки и сравнивать корректнее - чего записано, чего считано... Ведь исходное в hex с пустотами, а сравниваем обычно файлы как минимум по размеру  , а уж потом по содержимому
--------------------
aka Vit
|
|
|
|
|
Aug 31 2006, 11:08
|
Группа: Участник
Сообщений: 13
Регистрация: 8-08-06
Пользователь №: 19 416

|
Я использую утллиту hexmate для объединения hex файлов правда задача была прилепить прошивку DSP к прошивке хоста запускается с коммандной строки, можно в окне cmd, можно BATником, в CodeVision например можно сразу указать Project->Configure->After Make->Program Settings ..... hexmate -help для справки
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|