AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
04.03.2015, 11:32
|
|
Частый гость
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
|
AVR Си и переменная по определенному адресу
Привет знатоки!
В общем, решил перейти с АСМа на Си (AVR Studio 6)
более менее понятно, но вот возникла банальная задача определить переменную по определенному адресу в памяти (RAM). На АСМе это делается без проблем, а вот на Си нашел только через указатель.
Что-то типа - #define TestRam ((unsigned char *)0x0100)
ну и обращение к ней соответсвенно - *(TestRam) = 0xEE
Вот только компилятор может на это же место положить какую-то переменную.
|
|
|
|
04.03.2015, 12:11
|
|
Гражданин KAZUS.RU
Регистрация: 03.07.2010
Сообщений: 843
Сказал спасибо: 156
Сказали Спасибо 378 раз(а) в 190 сообщении(ях)
|
Re: AVR Си и переменная по определенному адресу
хз, но для чего это? есть же глобальные переменные видимые из любой процедуры. В этом и прелесть С, что не надо помнить, в каком регистре для чего хранится значение.
|
|
|
|
04.03.2015, 14:08
|
|
Частый гость
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
|
Re: AVR Си и переменная по определенному адресу
Ну может не совсем правильно, но вот такая задача:
Есть внешняя память (XRAM) с определенного адреса (у каждого контроллера по разному). Необходимо ее протестировать путем заполнения разными алгоритмами на наличие дублирования ячеек (не пропаян адрес или кз) или КЗ/непропай по шине данных
|
|
|
|
04.03.2015, 14:16
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: AVR Си и переменная по определенному адресу
CRC используйте. Это правильнее.
|
|
|
|
04.03.2015, 14:45
|
|
Гражданин KAZUS.RU
Регистрация: 03.07.2010
Сообщений: 843
Сказал спасибо: 156
Сказали Спасибо 378 раз(а) в 190 сообщении(ях)
|
Re: AVR Си и переменная по определенному адресу
или создайте массив значений, записали, считали сравнили
|
|
|
|
04.03.2015, 15:20
|
|
Частый гость
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
|
Re: AVR Си и переменная по определенному адресу
CRC ресурсоемкое и в данном случае не эффективное решение. Массив тож не вариант. т.к. он займет память, а ее нельзя занимать, ее надо только проверить. (хотя могу и ошибаться т.к. тоолько осваиваю эту тему) так же бывают случаи, что надо подолбить определенную ящейку памяти разными значениями (проверить плавают ли там биты или нет).
Пока нашел только такой вариант:
Цитата:
|
for(int AdrFill = RAMSTART+0x20; AdrFill‹=RAMEND; AdrFill++ )
{
p = (unsigned char *)(AdrFill);
(*p) = 0xFF;
}
|
вот только не могу понять, почему он сначала пытается записать по адресу 0х0000, а уже потом по AdrFill
|
|
|
|
04.03.2015, 16:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: AVR Си и переменная по определенному адресу
Воспоминания из детства пр тесты памяти.
1. Запись адреса по адресу
2. Запись инверсии адреса по адоесу.
Сначала прописвается вся память, затем вся память считывается.
Определяет правильность адресов и данных.
3. Запись бегущих 1 по памяти.
4. Запись бегущих 0 по памяти.
Это в основном баловство - толку мало.
Ну и взрослые тесты.
5. Запись случайного числа по случайному адресу.
6. Случайные запись/чтение случчайного числа по случайному адресу.
7. Тест максимальных помех
|
|
|
|
04.03.2015, 16:56
|
|
Частый гость
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
|
Re: AVR Си и переменная по определенному адресу
ЭЭЭЭ
это все я знаю (про варианты тестов памяти). Вопрос был в другом:
Как в Си закрепить переменную по определенному адресу?! (пример с очистки памяти - это первое что придло на ум. Как уже написал - это грубый пример )
ИМХО складывается мнение что в Си это не реально.
|
|
|
|
04.03.2015, 17:36
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: AVR Си и переменная по определенному адресу
Сообщение от AlexWonder
|
Как в Си закрепить переменную по определенному адресу?!
ИМХО складывается мнение что в Си это не реально.
|
Возможно. Нужно в проекте определить свою секцию (настройка линкера) и расположить переменную в этой секции (__attribute__ ((section (".my_section")))).
|
|
|
|
04.03.2015, 18:18
|
|
Частый гость
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
|
Re: AVR Си и переменная по определенному адресу
_Артём_,
Спасибо те мил человек!
Теперь хоть буду знать куда копать.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Yagarto GCC объявить массив по определенному адресу
|
svad0 |
Микроконтроллеры, АЦП, память и т.д |
4 |
13.01.2012 19:49 |
Литература по микроконтроллерам (AVR, PIC, ПЛИС и т.д.). Сборка книг - (256 книг+ 27 CD c примерами из книг) [обновление 2011, PDF, DJVU]
|
yurinform |
Микроконтроллеры, АЦП, память и т.д |
5 |
05.07.2011 19:00 |
Архив проектов на AVR
|
fmssp |
Proteus, KiCAD и другие ECAD |
4 |
25.10.2010 17:14 |
Как в CVAVR записать в EEPROM по определенному адресу?
|
woroba |
Микроконтроллеры, АЦП, память и т.д |
8 |
21.06.2007 08:33 |
Часовой пояс GMT +4, время: 19:36.
|
|