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

 
 
 
Reply to this topicStart new topic
> IAR+AVR, (Линковщик. hex + eep)
alex_hyp
сообщение Feb 6 2009, 12:44
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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.
заранее спасибо
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 7 2009, 12:37
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
alex_hyp
сообщение Feb 9 2009, 10:43
Сообщение #3


Участник
*

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



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


про зип - оценил.

вопрос и был как раз о том, чтобы как-то объявить эти константы, чтобы они шли в hex-файл...а не о том, как объеденить эти файлы.
Go to the top of the page
 
+Quote Post
west329_
сообщение Feb 9 2009, 11:13
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



cfg1soim.xcl
//-Z(XDATA)EEPROM_I,EEPROM_N=0-_..X_EEPROM_END

-Z(CODE)EEPROM_I,EEPROM_N=(_..X_FLASH_END+1)-(_..X_FLASH_END+_..X_EEPROM_END+1)
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 9 2009, 11:15
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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, а не в память программ... Что Вас смущает в использовании нескольких файлов для программирования МК?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 9 2009, 11:17
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
alex_hyp
сообщение Feb 9 2009, 11:38
Сообщение #7


Участник
*

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



Цитата(Сергей Борщ @ Feb 9 2009, 14:17) *
Тогда уточните, о каких константах идет речь? Опишите более подробно, зачем это надо. Пока задача не понятна, искать решение очень тяжело.


про константы я не уверен, я у вас и спросил, что конкретно он отсылает в eep-файл? и как объявить это что-то, чтобы оно оказалось в hex-файле?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 9 2009, 12:04
Сообщение #8


Гуру
******

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



Цитата(alex_hyp @ Feb 9 2009, 14:38) *
про константы я не уверен, я у вас и спросил, что конкретно он отсылает в eep-файл?
Выше Вам ответили: начальные значения EEPROM
Цитата(alex_hyp @ Feb 9 2009, 14:38) *
и как объявить это что-то, чтобы оно оказалось в hex-файле?
А, вот это и непонятно... Что же Вы хотите? Не инициализировать EEPROM? Данные, которые размещаются в EEPROM, разместить в памяти программ? Что-то ещё?
Go to the top of the page
 
+Quote Post
alex_hyp
сообщение Feb 9 2009, 12:22
Сообщение #9


Участник
*

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



Цитата(Палыч @ Feb 9 2009, 15:04) *
А, вот это и непонятно... Что же Вы хотите? Не инициализировать EEPROM? Данные, которые размещаются в EEPROM, разместить в памяти программ? Что-то ещё?


да, хотел константы разместить в памяти программы...

баловался с объявлением констант. и в одной из вариаций, линковщик выдал кроме секций CODE, DATA ещё и XDATA.
и тут я вспомнил, что именно XDATA и есть содержимое eep. что же тогда находится в секции DATA?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 9 2009, 12:27
Сообщение #10


Гуру
******

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



Цитата(alex_hyp @ Feb 9 2009, 15:22) *
что же тогда находится в секции DATA?
См. EWAVR_CompilerReference.pdf Раздел "Segment reference"
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 9 2009, 12:39
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 11:03
Рейтинг@Mail.ru


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