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

 
 
> Размещение переменной по строго определённому адресу, Нужно корректно указать компилятору адрес
Д_М
сообщение Jun 5 2017, 11:17
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



Приветствую!
Это нужно для того, чтобы векторы прерываний, расположенные в загрузочном секторе, передавали управление функциям, расположенном в секторе приложений. Адрес может быть произвольным, но одинаковым, как для загрузчика, так и для приложения. Делал вот так __no_init volatile unsigned int Sys_ptr @0x0100; Компилятор IAR ошибок не выдает. Работает. Смущает, что в начале работы программы в этой ячейке не нулевое значение. Правильно ли я делал? Можно ли быть уверенным, что при такой декларации переменной не будет пересечения со стеками и данными? Хотел, для уверенности, разместить эту переменную в области I/O (0x00..0xFF), на какой-то зарезервированный адрес, в частности 0x76. Не тут то было! Значение постоянно плавает. Если адрес зарезервирован, то это не значит, что его можно использовать, как ячейку памяти.

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aiwa
сообщение Jun 5 2017, 12:13
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682




То, что в ячейке содержится ненулевое значение - это результат действия __no_init, так и должно быть. По идее 0xFF.
Размещать переменную в области I/O нельзя: там уже атмел разместил регистры своих устройств.

Сообщение отредактировал aiwa - Jun 5 2017, 12:13
Go to the top of the page
 
+Quote Post



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

 


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


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