misyachniy 0 13 марта, 2016 Опубликовано 13 марта, 2016 · Жалоба Нужно "приклеить" заплатку на ассемблере. По старинке решил объявить сегмент данных и вставить директиву типа .ORG 16334 DCD tasc_Status Но на сколько я понял, IAR ARM Assembler поддерживает только директивы резервирования байт, полуслов, слов, строк. Для размещения байт во флеш есть директива "LTORG" но она дает указание ассемблеру разместить константы с текущего значения счетчика программ. Есть ли директива принудительно указать ассемблеру переменную в конкретном месте ОЗУ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 13 марта, 2016 Опубликовано 13 марта, 2016 · Жалоба ассемблер вообще не знает где озу где пзу... ORG лучше вообще не использовать. Надо размещать переменные в нужных секциях,а где какая секция указывать линкеру! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misyachniy 0 14 марта, 2016 Опубликовано 14 марта, 2016 · Жалоба ассемблер вообще не знает где озу где пзу... 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 14 марта, 2016 Опубликовано 14 марта, 2016 · Жалоба AVR ассемблер понимает DSEG, CSEG, ESEG Во 1ых вопрос про ARM, причем тут AVR - у AVR другая архитектура адресации... Во 2ых Вопрос про IARовский ассемблер - он для AVR кстати не понимает DSEG, CSEG, ESEG там все раньше шло через RSEG а теперь как и в АРМ через SECTION Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misyachniy 0 15 марта, 2016 Опубликовано 15 марта, 2016 · Жалоба Во 1ых вопрос про ARM, причем тут AVR - у AVR другая архитектура адресации... Во 2ых Вопрос про IARовский ассемблер - он для AVR кстати не понимает DSEG, CSEG, ESEG там все раньше шло через RSEG а теперь как и в АРМ через SECTION В ответе было "ассемблер вообще не знает где озу где пзу...". Как на мое мнение, слишком категоричное утверждение. К тому же если директиву LTORG Объявить в ОЗУ, то ассемблер должен как то догадаться об этом и произвести инициализацию данных? __ramfunc по моему еще не упразднили? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 15 марта, 2016 Опубликовано 15 марта, 2016 · Жалоба К тому же если директиву LTORG Объявить в ОЗУ, то ассемблер должен как то догадаться об этом и произвести инициализацию данных? __ramfunc по моему еще не упразднили? если брать микроконтроллеры то из флеши в озу __ramfunc копирует код инициализации в библиотеке или Ваш собственный. LTORG - это вообще вспомогательная директива, она в 99% случаях не нужна. Кроме того если секция кода во флеше - то Вы не сможете к ней сделать LTORG в ОЗУ - слишком большое расстояние ;) Да и потом, раз вы знаете про __ramfunc посмотрите листинг от компилятора или даже лучше asm файл и linker map файл там и секции будут и что куда покладено... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться