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

 
 
> загрузка программы, с нужного места
TookeR
сообщение Sep 15 2008, 10:27
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 32
Регистрация: 6-06-08
Из: Украина, Одесса
Пользователь №: 38 096



В общем, вопрос просто как заставить грузиться программу в микроконтроллере с нужного мне места (точнее быть увереным что сначала запускается прогрмамма) (при условии, что в программе есть запись во флешь)? Просто при запуске устройства программа не каждый раз функционирует, а именно включил-выключил устройство, то работает, то нет. На устройстве есть ключ, переключая который вы включаем светодиод и вкл. бипер, затем принимаем данные и записываем во флешь. По ощущением просто программа запускается в произвольном месте. Почему я думаю что это программа? Да потому-то если убрать запись во флешь и оставить вектора прерываний на своих местах, а не переносить в область NRWW, тогда все выполняется нормально (за исключением записи естественно smile.gif)
З.Ы. я понимаю что написано довольно "расплывчато" но все же я надеюсь мне кто-нибудь поможет smile.gif


--------------------
Lasciate ogni speranza voi ch 'entrate. © Dante Alighieri
Оставь надежду всяк сюда входящий. © Данте Алигьери

TookeR aka Jasfin
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TookeR
сообщение Sep 15 2008, 12:17
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 32
Регистрация: 6-06-08
Из: Украина, Одесса
Пользователь №: 38 096



Цитата(kamil yaminov @ Sep 15 2008, 14:29) *
По идее у Вас должен быть адрес с которого начинается выполнение программы, например, нулевой. По этому адресу надо разместить переход на начало программы. Иногда по стартовому адресу находится бутлоадер, который говорит куда прыгнуть в зависимости от разных условий, напрмер, от того как включены перемычки. Ну и еще, какой контроллер используется.


контролер ATmega8. Бутлоадер у него начинаеться с адресов 1С00 (BOOTSZ=00).


если использовать стандартный файл настроек то lnkm8s.xcl
Код
-Z(CODE)INTVEC=0-25
-H1895 -h(CODE)0-25
-Z(CODE)INITTAB =26-1FFF
-Z(CODE)CODE=26-1FFF
-Z(CODE)TINY_FLASH=1C26-1FFF
-Z(CODE)CHECKSUM#1FFF


То программа работает прекрасно (за исключением записи во флешь) … Но если перенести вектора прерываний(даже без записи) в NRWW область то тут начинаются проблемы(описанные выше) …

Код
-Z(CODE)INTVEC=1C00-1C25
-H1895 -h(CODE)1C00-1C25

-Z(CODE)INITTAB=0-1FFF
-Z(CODE)CODE=0-1FFF
-Z(CODE)TINY_FLASH=1C26-1FFF
-Z(CODE)CHECKSUM#1FFF


--------------------
Lasciate ogni speranza voi ch 'entrate. © Dante Alighieri
Оставь надежду всяк сюда входящий. © Данте Алигьери

TookeR aka Jasfin
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 15 2008, 14:22
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(TookeR @ Sep 15 2008, 15:17) *
Но если перенести вектора прерываний(даже без записи) в NRWW область то тут начинаются проблемы(описанные выше) …
А вы не забыли во втором случае запрограммировать фуз BOOTRST? иначе как контроллер узнает, что ветор старта вы ему перенесли?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 17:13
Рейтинг@Mail.ru


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