Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: загрузка программы
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
TookeR
В общем, вопрос просто как заставить грузиться программу в микроконтроллере с нужного мне места (точнее быть увереным что сначала запускается прогрмамма) (при условии, что в программе есть запись во флешь)? Просто при запуске устройства программа не каждый раз функционирует, а именно включил-выключил устройство, то работает, то нет. На устройстве есть ключ, переключая который вы включаем светодиод и вкл. бипер, затем принимаем данные и записываем во флешь. По ощущением просто программа запускается в произвольном месте. Почему я думаю что это программа? Да потому-то если убрать запись во флешь и оставить вектора прерываний на своих местах, а не переносить в область NRWW, тогда все выполняется нормально (за исключением записи естественно smile.gif)
З.Ы. я понимаю что написано довольно "расплывчато" но все же я надеюсь мне кто-нибудь поможет smile.gif
kamil_yaminov
По идее у Вас должен быть адрес с которого начинается выполнение программы, например, нулевой. По этому адресу надо разместить переход на начало программы. Иногда по стартовому адресу находится бутлоадер, который говорит куда прыгнуть в зависимости от разных условий, напрмер, от того как включены перемычки. Ну и еще, какой контроллер используется.
rezident
Для начала нужно указать тип МК. Выполнение программы у большинства МК начинается с адреса, указанного по вектору сброса. Если у вас сброс формируется нестабильно (например, отсутствует супервизор, формирующий сигнал сброса, а встроенной в МК схемы BOR/BOD нету), то может быть все что угодно.
TookeR
Цитата(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
Сергей Борщ
Цитата(TookeR @ Sep 15 2008, 15:17) *
Но если перенести вектора прерываний(даже без записи) в NRWW область то тут начинаются проблемы(описанные выше) …
А вы не забыли во втором случае запрограммировать фуз BOOTRST? иначе как контроллер узнает, что ветор старта вы ему перенесли?
TookeR
Цитата(Сергей Борщ @ Sep 15 2008, 17:22) *
А вы не забыли во втором случае запрограммировать фуз BOOTRST? иначе как контроллер узнает, что ветор старта вы ему перенесли?

Полность согласен! ... нет придела человеческой невнимательности sad.gif

Стало работать довольно стабильно НО (как всегда есть это но) иногда слитает некоторые значения флешь памяти,
Нажмите для просмотра прикрепленного файла
(желтым отмечены "слетевшая" часть памяти) из-за чего бы это могло быть?
Сергей Борщ
Цитата(TookeR @ Sep 15 2008, 17:45) *
(желтым отмечены "слетевшая" часть памяти) из-за чего бы это могло быть?
Похоже она не слетела, а не записалась.
TookeR
Цитата(Сергей Борщ @ Sep 15 2008, 18:06) *
Похоже она не слетела, а не записалась.


Ну с самых первых моментов она же была записана туда ... а после нескольких перезапусков (вкл. выкл. питания) оказываеться стертой/ незаписаной.
Сергей Борщ
Цитата(TookeR @ Sep 17 2008, 11:12) *
а после нескольких перезапусков (вкл. выкл. питания) оказываеться стертой/ незаписаной.
Супервизор (BOD) включен? Похоже, ваша программа при просадке питания начинает выполнять случайные участки кода и попадает на процедуру стирания.
TookeR
я тоже так что BOD отключен ... проверил включен был ... взял другую микросхему провожу тесты.
Цыкетчик
Цитата(Сергей Борщ @ Sep 17 2008, 12:18) *
при просадке питания начинает выполнять случайные участки кода и попадает на процедуру стирания.


Ну я на этот случай непосредственно перед SPM делаю проверку было ли санкционировано выполнение SPM команды. И для безопасности у меня в программе всего одна команда SPM
TookeR
Слетания флеши больше не происходит на новом микрике, но все же тот эффект (писк бипера и/или не реагирования на переключения ключа) остались, хотя стали намного - намного реже! ... Как же от них избавиться полностью ?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.