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

 
 
 
Reply to this topicStart new topic
> загрузка программы, с нужного места
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
kamil_yaminov
сообщение Sep 15 2008, 11:29
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 395
Регистрация: 15-02-08
Из: Новосибирск
Пользователь №: 35 064



По идее у Вас должен быть адрес с которого начинается выполнение программы, например, нулевой. По этому адресу надо разместить переход на начало программы. Иногда по стартовому адресу находится бутлоадер, который говорит куда прыгнуть в зависимости от разных условий, напрмер, от того как включены перемычки. Ну и еще, какой контроллер используется.
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 15 2008, 11:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Для начала нужно указать тип МК. Выполнение программы у большинства МК начинается с адреса, указанного по вектору сброса. Если у вас сброс формируется нестабильно (например, отсутствует супервизор, формирующий сигнал сброса, а встроенной в МК схемы BOR/BOD нету), то может быть все что угодно.
Go to the top of the page
 
+Quote Post
TookeR
сообщение Sep 15 2008, 12:17
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 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
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 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
TookeR
сообщение Sep 15 2008, 14:45
Сообщение #6


Участник
*

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



Цитата(Сергей Борщ @ Sep 15 2008, 17:22) *
А вы не забыли во втором случае запрограммировать фуз BOOTRST? иначе как контроллер узнает, что ветор старта вы ему перенесли?

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

Стало работать довольно стабильно НО (как всегда есть это но) иногда слитает некоторые значения флешь памяти,
Прикрепленное изображение

(желтым отмечены "слетевшая" часть памяти) из-за чего бы это могло быть?

Сообщение отредактировал TookeR - Sep 15 2008, 14:46


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

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


Гуру
******

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



Цитата(TookeR @ Sep 15 2008, 17:45) *
(желтым отмечены "слетевшая" часть памяти) из-за чего бы это могло быть?
Похоже она не слетела, а не записалась.


--------------------
На любой вопрос даю любой ответ
"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
TookeR
сообщение Sep 17 2008, 08:12
Сообщение #8


Участник
*

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



Цитата(Сергей Борщ @ Sep 15 2008, 18:06) *
Похоже она не слетела, а не записалась.


Ну с самых первых моментов она же была записана туда ... а после нескольких перезапусков (вкл. выкл. питания) оказываеться стертой/ незаписаной.


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

TookeR aka Jasfin
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 17 2008, 08:18
Сообщение #9


Гуру
******

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



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


--------------------
На любой вопрос даю любой ответ
"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
TookeR
сообщение Sep 17 2008, 09:01
Сообщение #10


Участник
*

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



я тоже так что BOD отключен ... проверил включен был ... взял другую микросхему провожу тесты.


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

TookeR aka Jasfin
Go to the top of the page
 
+Quote Post
Guest_Цыкетчик_*
сообщение Sep 17 2008, 19:41
Сообщение #11





Guests






Цитата(Сергей Борщ @ Sep 17 2008, 12:18) *
при просадке питания начинает выполнять случайные участки кода и попадает на процедуру стирания.


Ну я на этот случай непосредственно перед SPM делаю проверку было ли санкционировано выполнение SPM команды. И для безопасности у меня в программе всего одна команда SPM

Сообщение отредактировал Цыкетчик - Sep 17 2008, 19:44
Go to the top of the page
 
+Quote Post
TookeR
сообщение Sep 18 2008, 12:51
Сообщение #12


Участник
*

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



Слетания флеши больше не происходит на новом микрике, но все же тот эффект (писк бипера и/или не реагирования на переключения ключа) остались, хотя стали намного - намного реже! ... Как же от них избавиться полностью ?


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

TookeR aka Jasfin
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 06:57
Рейтинг@Mail.ru


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