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

 
 
 
Reply to this topicStart new topic
> Размещение переменной по строго определённому адресу, Нужно корректно указать компилятору адрес
Д_М
сообщение 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
Непомнящий Евген...
сообщение Jun 5 2017, 11:45
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



__no_init означает, что переменная не инициализируется вашим стартапом. Соответственно изначально она имеет некое мусорное значение...
Go to the top of the page
 
+Quote Post
aiwa
сообщение Jun 5 2017, 12:13
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 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 Текстовая версия Сейчас: 19th August 2025 - 16:30
Рейтинг@Mail.ru


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