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

 
 
 
Reply to this topicStart new topic
> IAR ARM Assembler., Разместить даные в ОЗУ в определенном месте.
misyachniy
сообщение Mar 13 2016, 18:06
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Нужно "приклеить" заплатку на ассемблере.
По старинке решил объявить сегмент данных и вставить директиву типа
Код
.ORG 16334
  DCD  tasc_Status


Но на сколько я понял, IAR ARM Assembler поддерживает только директивы резервирования байт, полуслов, слов, строк.

Для размещения байт во флеш есть директива "LTORG" но она дает указание
ассемблеру разместить константы с текущего значения счетчика программ.

Есть ли директива принудительно указать ассемблеру переменную в конкретном месте ОЗУ?
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 13 2016, 19:43
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



ассемблер вообще не знает где озу где пзу...
ORG лучше вообще не использовать.
Надо размещать переменные в нужных секциях,а где какая секция указывать линкеру!
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Mar 14 2016, 16:26
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(KRS @ Mar 13 2016, 21:43) *
ассемблер вообще не знает где озу где пзу...
ORG лучше вообще не использовать.
Надо размещать переменные в нужных секциях,а где какая секция указывать линкеру!


Директивы ORG в IAR ARM assembler нет.
Утверждение о том, что ассемблер и не знает где озу где пзу сомнительно.
AVR ассемблер понимает DSEG, CSEG, ESEG

http://www.atmel.com/webdoc/avrassembler/a..._directives.ORG

Код
.DSEG; Start data segment
.ORG 0x120; Set SRAM address to hex 120
variable: .BYTE 1; Reserve a byte at SRAM adr. 0x120

.CSEG
.ORG 0x10; Set Program Counter to hex 10
mov r0,r1; Do something

Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 14 2016, 19:08
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(misyachniy @ Mar 14 2016, 19:26) *
AVR ассемблер понимает DSEG, CSEG, ESEG

Во 1ых
вопрос про ARM, причем тут AVR - у AVR другая архитектура адресации...
Во 2ых
Вопрос про IARовский ассемблер - он для AVR кстати не понимает DSEG, CSEG, ESEG
там все раньше шло через RSEG а теперь как и в АРМ через SECTION
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Mar 15 2016, 16:55
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(KRS @ Mar 14 2016, 21:08) *
Во 1ых
вопрос про ARM, причем тут AVR - у AVR другая архитектура адресации...
Во 2ых
Вопрос про IARовский ассемблер - он для AVR кстати не понимает DSEG, CSEG, ESEG
там все раньше шло через RSEG а теперь как и в АРМ через SECTION


В ответе было "ассемблер вообще не знает где озу где пзу...".
Как на мое мнение, слишком категоричное утверждение.

К тому же если директиву LTORG Объявить в ОЗУ, то ассемблер должен как то догадаться об этом и произвести инициализацию данных?
__ramfunc по моему еще не упразднили?
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 15 2016, 18:28
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(misyachniy @ Mar 15 2016, 19:55) *
К тому же если директиву LTORG Объявить в ОЗУ, то ассемблер должен как то догадаться об этом и произвести инициализацию данных?
__ramfunc по моему еще не упразднили?

если брать микроконтроллеры то из флеши в озу __ramfunc копирует код инициализации в библиотеке или Ваш собственный.

LTORG - это вообще вспомогательная директива, она в 99% случаях не нужна.

Кроме того если секция кода во флеше - то Вы не сможете к ней сделать LTORG в ОЗУ - слишком большое расстояние wink.gif

Да и потом, раз вы знаете про __ramfunc посмотрите листинг от компилятора или даже лучше asm файл и linker map файл там и секции будут и что куда покладено...
Go to the top of the page
 
+Quote Post

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

 


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


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