|
|
  |
IAR+AVR, (Линковщик. hex + eep) |
|
|
|
Feb 6 2009, 12:44
|
Участник

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

|
Цитата IAR Universal Linker V4.59R/386 616 bytes of CODE memory (+ 4 range fill ) 102 bytes of DATA memory (+ 7 absolute ) поясните, пожалуйста, то, что в скобках... и ещё, как сделать так, чтобы eep не генерировался? правильно я понимаю, там размещаются какие-то константы? как сделать так, чтобы всё вошло в один файл? пусть он будет больше по объёму, но он один hex. заранее спасибо
|
|
|
|
|
Feb 7 2009, 12:37
|

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

|
Цитата(alex_hyp @ Feb 6 2009, 14:44)  поясните, пожалуйста, то, что в скобках... В первой строке - не помню. Возможно, компилятор заполнил неким значением "по умолчанию" 4 области, образовавшиеся при выравнивании кода или еще по какой-то причине (например, при явном требовании оставить пустую область в скрипте линкера) Во второй - 7 переменных по абсолютным адресам (скорее всего регистры периферии). Цитата(alex_hyp @ Feb 6 2009, 14:44)  и ещё, как сделать так, чтобы eep не генерировался? правильно я понимаю, там размещаются какие-то константы? Убрать соответствующую опцию из командной строки или скрипта линкера. Такое расширение используется для файла, содержащего начальные значения eeprom. Цитата(alex_hyp @ Feb 6 2009, 14:44)  как сделать так, чтобы всё вошло в один файл? пусть он будет больше по объёму, но он один hex. Да сделать-то можно. А как вы его прошивать будете? Эти данные идут в другое адресное пространство и большинство (про все не могу утверждать) программ программаторов хотят эти данные в отдельном файле. Если вас смущают три файла для прошивки одного контроллера (код, eeprom, описание fuses) - запакуйте их в один .zip архив.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Feb 9 2009, 10:43
|
Участник

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

|
Цитата(Сергей Борщ @ Feb 7 2009, 15:37)  Да сделать-то можно. А как вы его прошивать будете? Эти данные идут в другое адресное пространство и большинство (про все не могу утверждать) программ программаторов хотят эти данные в отдельном файле. Если вас смущают три файла для прошивки одного контроллера (код, eeprom, описание fuses) - запакуйте их в один .zip архив. про зип - оценил. вопрос и был как раз о том, чтобы как-то объявить эти константы, чтобы они шли в hex-файл...а не о том, как объеденить эти файлы.
|
|
|
|
|
Feb 9 2009, 11:15
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(alex_hyp @ Feb 6 2009, 15:44)  как сделать так, чтобы всё вошло в один файл? пусть он будет больше по объёму, но он один hex. Цитата(alex_hyp @ Feb 9 2009, 13:43)  вопрос и был как раз о том, чтобы как-то объявить эти константы, чтобы они шли в hex-файл...а не о том, как объеденить эти файлы. Так Вам - чтобы генерировался файл eep или, всё-таки объединить? Объединить eep с hex - не получится: как программатор определит, что данные по адресу ХХХ нужно поместить в EEPROM, а не в память программ... Что Вас смущает в использовании нескольких файлов для программирования МК?
|
|
|
|
|
Feb 9 2009, 11:17
|

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

|
Цитата(alex_hyp @ Feb 9 2009, 12:43)  вопрос и был как раз о том, чтобы как-то объявить эти константы, чтобы они шли в hex-файл...а не о том, как объеденить эти файлы. Тогда уточните, о каких константах идет речь? Опишите более подробно, зачем это надо. Пока задача не понятна, искать решение очень тяжело.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Feb 9 2009, 11:38
|
Участник

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

|
Цитата(Сергей Борщ @ Feb 9 2009, 14:17)  Тогда уточните, о каких константах идет речь? Опишите более подробно, зачем это надо. Пока задача не понятна, искать решение очень тяжело. про константы я не уверен, я у вас и спросил, что конкретно он отсылает в eep-файл? и как объявить это что-то, чтобы оно оказалось в hex-файле?
|
|
|
|
|
Feb 9 2009, 12:22
|
Участник

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

|
Цитата(Палыч @ Feb 9 2009, 15:04)  А, вот это и непонятно... Что же Вы хотите? Не инициализировать EEPROM? Данные, которые размещаются в EEPROM, разместить в памяти программ? Что-то ещё? да, хотел константы разместить в памяти программы... баловался с объявлением констант. и в одной из вариаций, линковщик выдал кроме секций CODE, DATA ещё и XDATA. и тут я вспомнил, что именно XDATA и есть содержимое eep. что же тогда находится в секции DATA?
|
|
|
|
|
Feb 9 2009, 12:39
|

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

|
Цитата(alex_hyp @ Feb 9 2009, 14:22)  и тут я вспомнил, что именно XDATA и есть содержимое eep. что же тогда находится в секции DATA? Код int a; // <- Статическая переменная. Память под нее выделяется в секции DATA, сегменте NEAR_Z
int b = 2; // Статическая инициализированная переменная. Память под нее выделяется в секции DATA, сегменте NEAR_I, начальное значение 2 хранится в секции CONST, сегменте NEAR_ID
__flash char const [] String = "Tipa test"; // константа во флеш. Размещается в секции CONST, сегменте NEAR_F Все это, и даже подробнее, вы могли прочитать в описании компилятора, не тратя напрасно время на баловство с объявлением констант.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|