Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Размещение данных в памяти программ
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Vyatsek
Необходимо размещать по определенному адресу некоторые данные, как это можно сделать. При помощи чего можно указать, что конкретные данные будут располагаться по конкретному адресу в памяти программ
G}{OST
Цитата(Vyatsek @ Oct 3 2005, 10:52)
Необходимо размещать по определенному адресу некоторые данные, как это можно сделать. При помощи чего можно указать, что конкретные данные будут располагаться по конкретному адресу
*

В IAR C это делается так:
Код
const char __flash c @ 0x1000 = 'ы';
Old1
Цитата(Vyatsek @ Oct 3 2005, 09:52)
Необходимо размещать по определенному адресу некоторые данные, как это можно сделать. При помощи чего можно указать, что конкретные данные будут располагаться по конкретному адресу
*

Где размещаешь во flash или в ОЗУ? В чем программируешь?
Old1
Пардон, не внимательно прочитал тему blush.gif
Nikola Kirov
Можно так
#pragma location=0x600
__flash char[] = {0x01,0x02 ......... 0xXX};
можно и так
__flash char[] @ 0x200 = "test";

А в новъие версии ест в опциях Linker -> Config
Raw binary image
tam:
file -> бинарнъи фаил
simbol -> идентификатор можно въибрат что удобно например MYDATA
segment -> Имя сегмента в CODE каторъи создали для имиджа
align 1
в Linker -> Extra Option
-Z(CODE)MYSEGMENT=C00-FFF -> ето делает сегмент MYSEGMENT
-gMYDATA -> ето указъвает линкера вставит MYDATA


можно и директно в Linker -> Extra Option
вот пример как вставляется бин фаил боотлоадера
-Z(CODE)BOOT=2C00-2FFF
--image_input=C:\noname.rnn,Bootloader,BOOT,2
-gBootloader
Vyatsek
Цитата
const char __flash c @ 0x1000 = 'ы';
на такое компилятор мне пишет Error[Be009]: memory attributes not allowed on auto variables or parameters E:\projects\iar\mega16my\main.c 143 гдн это можно переправить
G}{OST
Цитата(Vyatsek @ Oct 3 2005, 13:53)
Цитата
const char __flash c @ 0x1000 = 'ы';
на такое компилятор мне пишет Error[Be009]: memory attributes not allowed on auto variables or parameters E:\projects\iar\mega16my\main.c 143 гдн это можно переправить
*


Потому что это должна быть глобальная переменная (вытащить код из процедуры наружу)
Nikola Kirov
Ето произходит потому что делаеш ето в тело функции наверно.

и почему
const char __flash c @ 0x1000 = 'ы';

__flash означает и const для компилятора

__flash char c @ 0x1000 = 'ы'; достаточно

а если хочеш ето в тело функции обявит
static __flash char c @ 0x1000 = 'ы';
G}{OST
Цитата(Nikola Kirov @ Oct 3 2005, 14:07)
__flash char c @ 0x1000 = 'ы';  достаточно
*

не достаточно. читаем compiler reference, стр. 48
Nikola Kirov
Поглядел на pdf. деиствително там не документировано что можно толко __flash написат но можно поглядет на листинг и убедится что все получается как нада и толко с __flash. Я так и работаю.
Vyatsek
спасибо сделал работает...........
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.