Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: sam7se и EBI вопрос
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
kichnamid
есть at91sam7se и 16-контроллер спецшины. 16-контроллер идет как Static Memory. ячейки/регистры в контроллере обозначаю через переменные:

usigned short X1 __at 0x1000XXX0
usigned short X2 __at 0x1000XXX2
usigned short X3 __at 0x1000XXX4
usigned short X4 __at 0x1000XXX6
например

линкер ругается на Х2 и Х4, пишет что они должны быть выровнены по 4 байта.

софт Keil. в настройках проекта thumb-режим выбран. в keil`е в опциях к проекту есть возможность указать внешние RAM/ROM в свойствах проекта, а потом указать для каждого компилируемого юнита куда "совать" переменные. но видимо, я что-то делаю не правильно. как указать, что переменная во внешней памяти? или может есть другой способ обращения к внешней памяти через EBI и SMC?
aaarrr
Правильно будет прописать нужный регион и его содержимое в scatter'е и через #pragma arm section, а не через визард или __at.
kichnamid
подскажите где прочитать про это. или книжку по программированию арм в кейле.

написал ячейки как в хидерах регистры внутренние: #define <имя> *<тип> <адрес>
нужный чипселект появился, записал туда, потом считал - вроде работает.

но хочется узнать как грамотно это делать
aaarrr
Если вкратце:

1. Добавляем в .scat регион внешней памяти.
Код
LOAD_REGION
{
    EXTSRAM 0x60000000 0x100000
    {
        * (extsram)
    }
}

Автоматическую генерацию, естественно, запрещаем.

2. Код/данные размещаем через pragma arm section, например:
Код
#pragma arm section zidata = "extsram"
__align(4) char buffer[BUFFER_SIZE];
#pragma arm section zidata


Про прагмы и скрипт линкера читать нужно в хелпе.
ViKo
Цитата(kichnamid @ May 30 2011, 19:46) *
usigned short X1 __at 0x1000XXX0
как указать, что переменная во внешней памяти?

А что, иксы XXX можно указывать?
А так?
Код
uint16_t X1 __attribute__((at(0x10000000)));
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.