Определение местоположения массива в сборке MSP430

Я могу определить массив в сборке MSP430:

 array  .byte   00000101b, 00000100b, 00000011b, 00000010b, 00000001b
   lastelement

Но когда я отлаживаю свой ассемблерный код, я понимаю, что компилятор TI Code Composer Studio помещает массив в раздел Boot Memory. По этой причине элементы массива доступны только для чтения. Но я хочу отредактировать содержимое массива (т.е. изменить порядок элементов при сортировке). Для этого я попробовал ключевое слово org, но это не помогло. Как я могу определить местоположение массива, чтобы компилятор поместил массив в указанное мной местоположение, которое является редактируемым сегментом адресного пространства памяти (например, информационная память, ОЗУ и т. д.)?


person Tlos    schedule 19.12.2015    source источник
comment
Ваша полная программа написана на ассемблере? Если вы связываетесь с программой C, у вас уже есть код, позволяющий инициализировать изменчивые данные.   -  person CL.    schedule 20.12.2015
comment
@CL спасибо за ваш комментарий. Моя полная программа написана на ассемблере.   -  person Tlos    schedule 20.12.2015


Ответы (2)


Я не знаю, возможно ли связать данные в адресном пространстве энергозависимой памяти. Но для меня это не имеет смысла. Когда вы переносите свою программу (и массив) на чип, массив будет скопирован, например. Место в оперативной памяти и код будут скопированы во флэш-память. Но что происходит, когда вы отключаете питание? После повторного включения микроконтроллера код останется, но массив исчезнет.

Лучшим решением было бы скопировать массив из пространства кода только для чтения в ОЗУ после запуска вашей программы. Существует секция .data для инициализированных переменных и секция .bss для неинициализированной памяти переменных, которая может использоваться для автоматического копирования данных программы исправления в энергозависимую память во время процесса загрузки.

Вас также может заинтересовать Руководство пользователя средств языка ассемблера MSP430 (PDF): см. разделы 2.3, 3.1.1, 3.5 и 8.5.5; Ключевые слова: перемещение во время выполнения, адрес загрузки, адрес запуска, .text, .data, .bss, разделы программы.

person Peter Paul Kiefer    schedule 20.12.2015
comment
Весь раздел 8.8 посвящен таблицам копирования. - person CL.; 20.12.2015
comment
@peter-paul-kiefer Спасибо за ответ. Вы правы со своими комментариями. Я проверю руководство пользователя. - person Tlos; 20.12.2015

Наконец, мне удалось поместить массив в ОЗУ, используя ключевое слово .data как:

            .data
array       .byte   00000101b, 00000100b, 00000011b, 00000010b, 00000001b
lastelement

Теперь компилятор TI помещает массив в оперативную память, и я могу легко редактировать его содержимое. @CL и @peter-paul-kiefer, спасибо за помощь.

person Tlos    schedule 24.12.2015