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

 
 
 
Reply to this topicStart new topic
> Внешняя память данных и IAR
LoLo
сообщение Aug 19 2011, 09:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 22-12-08
Пользователь №: 42 664



К контроллеру Mega64 подключена внешняя память данных.
Как в IAR записать байт во внешнюю память по определенному адресу, а также считать байт по определенному адресу.
В Keil это делается очень просто через XDATA.

А как сделать в IAR?
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Aug 19 2011, 13:19
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Код
//8К расположены по адресу 0x8000
#pragma location=0x8000
volatile __no_init unsigned char mem[8192];


Ну и компилятору намекнуть
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Kavlav
сообщение Aug 19 2011, 20:41
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 30-06-06
Пользователь №: 18 486



Цитата(LoLo @ Aug 19 2011, 12:14) *
К контроллеру Mega64 подключена внешняя память данных.
Как в IAR записать байт во внешнюю память по определенному адресу, а также считать байт по определенному адресу.
В Keil это делается очень просто через XDATA.

А как сделать в IAR?

По правильному это делается так. В папке ...Iar Systems...\avr\config находите подходящий конфигурационный файл для линкера, например lnkm64s.xcl. В этом фале и прописываются все сегменты, стеки и т.д. В нем есть подробные коментарии, разобраться будет просто.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Aug 20 2011, 05:45
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Это если надо чтобы линкер какие-нибудь сегменты, кучу например, размещал во внешней памяти. Задача автора читать/писать байт по абсолютному адресу. Для этого либо переменная размещается по абсолютному адресу и используется как переменная
Код
#pragma location=0x8000
volatile __no_init unsigned char var;

Либо можно по указателю доступ делать
Код
unsigned char *mem = 0x8000;
*mem = *mem;

Go to the top of the page
 
+Quote Post

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

 


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


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