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

 
 
 
Reply to this topicStart new topic
> Размещение данных в памяти программ, В IAR 4.11 для aTMega 16
Vyatsek
сообщение Oct 3 2005, 06:52
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 24-03-05
Пользователь №: 3 637



Необходимо размещать по определенному адресу некоторые данные, как это можно сделать. При помощи чего можно указать, что конкретные данные будут располагаться по конкретному адресу в памяти программ
Go to the top of the page
 
+Quote Post
G}{OST
сообщение Oct 3 2005, 07:27
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 48
Регистрация: 6-05-05
Пользователь №: 4 784



Цитата(Vyatsek @ Oct 3 2005, 10:52)
Необходимо размещать по определенному адресу некоторые данные, как это можно сделать. При помощи чего можно указать, что конкретные данные будут располагаться по конкретному адресу
*

В IAR C это делается так:
Код
const char __flash c @ 0x1000 = 'ы';


--------------------
cul8r!
* #ru_embedded - эмбеддерский чат
Go to the top of the page
 
+Quote Post
Old1
сообщение Oct 3 2005, 07:35
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 697
Регистрация: 26-07-05
Из: Могилев
Пользователь №: 7 095



Цитата(Vyatsek @ Oct 3 2005, 09:52)
Необходимо размещать по определенному адресу некоторые данные, как это можно сделать. При помощи чего можно указать, что конкретные данные будут располагаться по конкретному адресу
*

Где размещаешь во flash или в ОЗУ? В чем программируешь?
Go to the top of the page
 
+Quote Post
Old1
сообщение Oct 3 2005, 07:39
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 697
Регистрация: 26-07-05
Из: Могилев
Пользователь №: 7 095



Пардон, не внимательно прочитал тему blush.gif
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Oct 3 2005, 08:49
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



Можно так
#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
Go to the top of the page
 
+Quote Post
Vyatsek
сообщение Oct 3 2005, 09:53
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 24-03-05
Пользователь №: 3 637



Цитата
const char __flash c @ 0x1000 = 'ы';
на такое компилятор мне пишет Error[Be009]: memory attributes not allowed on auto variables or parameters E:\projects\iar\mega16my\main.c 143 гдн это можно переправить
Go to the top of the page
 
+Quote Post
G}{OST
сообщение Oct 3 2005, 10:02
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 48
Регистрация: 6-05-05
Пользователь №: 4 784



Цитата(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 гдн это можно переправить
*


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


--------------------
cul8r!
* #ru_embedded - эмбеддерский чат
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Oct 3 2005, 10:07
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



Ето произходит потому что делаеш ето в тело функции наверно.

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

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

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

а если хочеш ето в тело функции обявит
static __flash char c @ 0x1000 = 'ы';
Go to the top of the page
 
+Quote Post
G}{OST
сообщение Oct 3 2005, 10:14
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 48
Регистрация: 6-05-05
Пользователь №: 4 784



Цитата(Nikola Kirov @ Oct 3 2005, 14:07)
__flash char c @ 0x1000 = 'ы';  достаточно
*

не достаточно. читаем compiler reference, стр. 48


--------------------
cul8r!
* #ru_embedded - эмбеддерский чат
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Oct 3 2005, 10:49
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



Поглядел на pdf. деиствително там не документировано что можно толко __flash написат но можно поглядет на листинг и убедится что все получается как нада и толко с __flash. Я так и работаю.
Go to the top of the page
 
+Quote Post
Vyatsek
сообщение Oct 3 2005, 11:58
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 24-03-05
Пользователь №: 3 637



спасибо сделал работает...........
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 15:54
Рейтинг@Mail.ru


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