Vyatsek
Oct 3 2005, 06:52
Необходимо размещать по определенному адресу некоторые данные, как это можно сделать. При помощи чего можно указать, что конкретные данные будут располагаться по конкретному адресу в памяти программ
Цитата(Vyatsek @ Oct 3 2005, 10:52)
Необходимо размещать по определенному адресу некоторые данные, как это можно сделать. При помощи чего можно указать, что конкретные данные будут располагаться по конкретному адресу
В IAR C это делается так:
Код
const char __flash c @ 0x1000 = 'ы';
Цитата(Vyatsek @ Oct 3 2005, 09:52)
Необходимо размещать по определенному адресу некоторые данные, как это можно сделать. При помощи чего можно указать, что конкретные данные будут располагаться по конкретному адресу
Где размещаешь во flash или в ОЗУ? В чем программируешь?
Пардон, не внимательно прочитал тему
Nikola Kirov
Oct 3 2005, 08:49
Можно так
#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
Oct 3 2005, 09:53
Цитата
const char __flash c @ 0x1000 = 'ы';
на такое компилятор мне пишет
Error[Be009]: memory attributes not allowed on auto variables or parameters E:\projects\iar\mega16my\main.c 143 гдн это можно переправить
Цитата(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
Oct 3 2005, 10:07
Ето произходит потому что делаеш ето в тело функции наверно.
и почему
const char __flash c @ 0x1000 = 'ы';
__flash означает и const для компилятора
__flash char c @ 0x1000 = 'ы'; достаточно
а если хочеш ето в тело функции обявит
static __flash char c @ 0x1000 = 'ы';
Цитата(Nikola Kirov @ Oct 3 2005, 14:07)
__flash char c @ 0x1000 = 'ы'; достаточно
не достаточно. читаем compiler reference, стр. 48
Nikola Kirov
Oct 3 2005, 10:49
Поглядел на pdf. деиствително там не документировано что можно толко __flash написат но можно поглядет на листинг и убедится что все получается как нада и толко с __flash. Я так и работаю.
Vyatsek
Oct 3 2005, 11:58
спасибо сделал работает...........
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.