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

Спасибо!
Непомнящий Евгений
__no_init означает, что переменная не инициализируется вашим стартапом. Соответственно изначально она имеет некое мусорное значение...
aiwa

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