|
|
  |
Мой первый блин), Перехожу на Си |
|
|
|
Dec 11 2009, 13:41
|
Частый гость
 
Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645

|
Спасибо, получилось. В программе это выглядит следующим образом - volatile unsigned char bar[] __attribute__ ((section (".myInfo"))) = "Это должно жить по адресу 0xDEAD";, а для линкера указал - LDFLAGS += -Wl,--section-start=.myInfo=0x1DEAD -Wl,-Map=gcc_tst.map. В хексе имеем: Код :10DEAD00DDF2EE20E4EEEBE6EDEE20E6E8F2FC200E :10DEBD00EFEE20E0E4F0E5F1F32030784445414405 Огромное спасибо.
Сообщение отредактировал Omen_13 - Dec 12 2009, 01:48
Причина редактирования: Оформление
|
|
|
|
|
Dec 11 2009, 14:51
|

Чайник, 1 литр
   
Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168

|
Если: Цитата(novlev @ Dec 11 2009, 16:41)  char bar[] __attribute__ ((section (".myInfo"))) = "Это должно жить по адресу 0xDEAD"; Но: Цитата(novlev @ Dec 11 2009, 16:41)  LDFLAGS += -Wl,--section-start=.myInfo=0x1DEAD поселит строку по дресу однако 0x1DEAD. Не срастается у увас что-то желание с действительностью
|
|
|
|
|
Dec 14 2009, 07:55
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(novlev @ Dec 14 2009, 08:13)  А учитываются только 4 младших, в хексе больше и не отведено под адрес Вообще-то в Intel-HEX под адрес отведено 32 бита. 16 бит отведено под смещение. Цитата(novlev @ Dec 14 2009, 08:13)  , все что перед DEAD(взято просто для наглядности) игнорируется. Вами - возможно и игнорируется. Но любая программа, корректно читающая IntelHEX не должна игнорировать записи типа "Extended segment address" и "Extended linear address". Именно в эти записи и попадают старшие биты.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Dec 14 2009, 13:08
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(novlev @ Dec 14 2009, 13:49)  Так а почему в самом хексе всегда одинаково? А в нем точно нет строчек, начинающихся с :02000004 или :02000002? Тогда показывайте команду, которой avr-objcopy делает из вашего .elf этот .hex
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Dec 14 2009, 13:46
|
Частый гость
 
Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645

|
Цитата(Сергей Борщ @ Dec 14 2009, 16:08)  А в нем точно нет строчек, начинающихся с :02000004 или :02000002? есть строчки, протупил я серьезно... :0A070E00101234567890000000002D :020000040010EA :10DEAD00DDF2EE20E4EEEBE6EDEE20E6E8F2FC200E :10DEBD00EFEE20E0E4F0E5F1F32030784445414405 :01DECD000054 :00000001FF Нашел норм документацию на интел хекс формат, спасибо что надоумили)
Сообщение отредактировал novlev - Dec 14 2009, 14:02
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|