|
Как сгенерить hex для ARM IAR-ом v4.20A? |
|
|
|
Jan 12 2009, 08:23
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Собственно сабж. Чего только в настройках проекта не делал.. Получается только *.а79  Поиск по форуму к сожалению ничего не дал... Hex нужен для прошивки lpc2103 через mt-link сегером v4.0. Заранее спасибо за помощь!
--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
|
|
|
|
|
Jan 12 2009, 09:10
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата(rvk @ Jan 12 2009, 11:36)  Заходите в Project\Option\Linker, ставите галочку в окне Output File, и вписываете расширение hex вместо a79. Затем там же идете в окно Format, нажимаете на точку Other и выбираете формат intel standard или intel extended Все, теперь у Вас скомпилируется hex файл по Intel стандарту. Эти операции проделывал... Hex то получается... только какой то корявый... Не воспринимается он сегером... Добавлю проект.. может кто посмотрит. (Программирование на С только начинаю.. и с IAR-ом.. только знакомлюсь...) Цитата(zltigo @ Jan 12 2009, 11:30)  Ну-ну так укажите ЛЮБОЕ желаемое расширение вместо a79 использующегося для любого формата по умолчанию. При установки птички "override default" и изменении расширения файла на hex выдает сообщение при компиляции: Код Fatal Error[e62]: File name "D:\Programm\arm\LPC_H2103_BLINKING_LED(my)\Debug\Exe\ LPC_H2103_BLINKING_LED(my).hex" used for multiple files Вы где то писали, непомню в какой ветке, что возможно надо выбрать другой файл в конфиге линкера?! у меня неактивная строчка $TOOLKIT_DIR$\config\lnkarm.xcl. Имеет ли это отношение к вопросу?
--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
|
|
|
|
|
Jan 12 2009, 09:51
|

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

|
Цитата(adc @ Jan 12 2009, 12:10)  При установки птички "override default" и изменении расширения файла на hex выдает сообщение при компиляции: Код Fatal Error[e62]: File name "D:\Programm\arm\LPC_H2103_BLINKING_LED(my)\Debug\Exe\ LPC_H2103_BLINKING_LED(my).hex" used for multiple files Значит где-то еще галочки болтаются после экспериментов. А Intel формат развивался и Вам надо 32bit-Extended выбрать, как наиболее "совершенный" и понимаемый в том числе и segger. Цитата Вы где то писали, непомню в какой ветке, что возможно надо выбрать другой файл в конфиге линкера?! Я не знаю, что там по умолчанию - всегда пользуюсь индивидуальным а в нем соответственно согласно документации на линкер форматов можно заказать зараз два вагона в том числе и HEX Код // Additional HEX File generation... -Ointel-extended,(CODE)=.hex
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 12 2009, 11:09
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(adc @ Jan 12 2009, 15:10)  При установки птички "override default" и изменении расширения файла на hex выдает сообщение при компиляции: Код Fatal Error[e62]: File name "D:\Programm\arm\LPC_H2103_BLINKING_LED(my)\Debug\Exe\ LPC_H2103_BLINKING_LED(my).hex" used for multiple files Вы где то писали, непомню в какой ветке, что возможно надо выбрать другой файл в конфиге линкера?! у меня неактивная строчка $TOOLKIT_DIR$\config\lnkarm.xcl. Имеет ли это отношение к вопросу? Ошибка потому что на второй вкладке линкера стоит такое же имя файла. Достаточно на первой вкладке поставить расширение HEX, а создание второго файла (на второй вкладке) выключить. Я попытался скомпилить этот проект и тоже HEX получился пустым. Даже в отладчике пустой код. Перепробовал все галки в опциях - не помогло. Потом удалил конфигурацию Debug и создал её заново. Сразу всё скомпилилось и HEX стал нормальным. Глюк какой-то. При желании можно текст в файлах проекта почитать, там должо быть что-то лишнее или наоборот чего-то нехватать. У меня раз был такой глюк в CrossWorks 1.6.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jan 13 2009, 08:54
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата(GetSmart @ Jan 12 2009, 14:09)  ...Потом удалил конфигурацию Debug и создал её заново. Сразу всё скомпилилось и HEX стал нормальным. Глюк какой-то.... Ага.. тоже получил HEX, только при открытии его в Segger J-Flash обнаружилось что адрес записываемый во флеш начинается с 0х8000?! 2 zltigo: Цитата Вы где то писали, непомню в какой ветке, что возможно надо выбрать другой файл в конфиге линкера?! у меня неактивная строчка $TOOLKIT_DIR$\config\lnkarm.xcl. Этот файл придется править?.. или ручками в настройке можно выставить...?!
--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
|
|
|
|
|
Jan 13 2009, 09:50
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата(GetSmart @ Jan 13 2009, 12:27)  Всё правильно. Стандартный XCL содержит именно этот адрес начала флэш. Фиг знает почему. Нужно взять любой (более подходящий) стандартный и подправить в нём адреса. Потом записать в папку проекта и подключить в настройках линкера для Release и Debug. Хотя я обычно для каждой конфигурации делаю свой XCL. хм..?! мдя.. что же.. разработчики IAR-а поленились сразу сделать нормальные адреса.. Это по меньшей мере странно. Попытался сам из IAR-а поправить.. при установке значений ром 0000-7FFF пишет Цитата Range must not overlap other ranges in other regions Если есть возможность, поделитесь примером конфигурации линкера(для lpc2103).
--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
|
|
|
|
|
Jan 13 2009, 11:17
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(adc @ Jan 13 2009, 15:50)  Если есть возможность, поделитесь примером конфигурации линкера(для lpc2103). 100% рабочий, но нет в мире совершенства. zltigo в нём как обычно найдёт недостатки  Размеры там сами подправите под себя. CODE -carm
-DROMSTART=00000000 -DROMEND=00007fff
-Z(CODE)INTVEC=00000000-0000003f -Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND -Z(CODE)SWITAB=ROMSTART-ROMEND -Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND -Z(CODE)CODE=ROMSTART-ROMEND -Z(CONST)CODE_ID=ROMSTART-ROMEND -Z(CONST)CHECKSUM=ROMSTART-ROMEND
-DRAMSTART=40000000 -DRAMEND=40001fff
-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND -Z(DATA)CODE_I=RAMSTART-RAMEND
-QCODE_I=CODE_ID
-D_CSTACK_SIZE=400 -D_SVC_STACK_SIZE=10 -D_IRQ_STACK_SIZE=200 -D_HEAP_SIZE=800 -D_FIQ_STACK_SIZE=0
-Z(DATA)FIQ_STACK+_FIQ_STACK_SIZE=RAMSTART-RAMEND -Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND -Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND -Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND ЗЫ. Файлы прикреплять к сообщению всё ещё не сделали  ЗЗЫ. codebox удалил пустые строки !?!
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jan 13 2009, 11:39
|

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

|
Цитата(GetSmart @ Jan 13 2009, 14:17)  100% рабочий, но нет в мире совершенства. zltigo в нём как обычно найдёт недостатки  Какая проницательность  !!! То, что в глаза бросилось - Стеки (если Heap не используется - а если не используется, то зачем задавать HEAP_SIZE...) разумнее цеплять к концу RAM так: Код -Z(DATA)XXX_STACK+_XXX_STACK_SIZE#RAMSTART-RAMEND дабы не оставлять ненужных пустот при этом подумав о их порядке, дабы стек рабочего режима был побольше..... И не забыть про 64 байта в конце для IAP (хотя можно его с одним из ненужных в данный момент стеков объединить), если его используете.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 14 2009, 20:11
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(adc @ Jan 15 2009, 00:56)  Может быть содержание не устраивает администраторов? Ну вы бы хоть как-то предупредили что ли..  Поскольку служба ЛС пока еще не работает, поясняю как модератор раздела. Ваше сообщение скрыл один из моих сомодераторов. Наивероятная причина - публичное обсуждение программы для взлома проприетарного софта. В следующий раз прежде чем писать, думайте немного, где можно, а где не следует обсуждать такие темы.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|