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

 
 
> Расположение векторов прерываний, обработка прерываний, Само - программирование МК и прерывания
Alex ma
сообщение Jul 19 2007, 18:23
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 9-08-06
Пользователь №: 19 445



Вектора прерываний можно разместить как в области загрузчика, так и в начале памяти программ.
Есть программа загрузчик, есть основная программа, та и другая использует прерывания.
Но подпрограммы обслуживания прерывания разные для загрузчика своя для основной программы своя.

Так как таблица прерываний одна, а подпрограмм обработки прерываний две – одна относится к загрузчику, вторая к основной программе. Как это реализовать. И вообще если программа загрузчика и основная программа – разные программы и компилируются по разному, как быть с прерываниями непонятно, ведь таблицы прерываний будут определены два раза, а в памяти можно хранить только одну таблицу прерываний.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Igor26
сообщение Jul 26 2007, 07:34
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата
чесно сказать мне мало понятно зачем ей вообще туда лезть

Представте себе ситуацию. У Вас N устройств на луче RS-485. Все они выполняют свою работу. Теперь программист говорит - "Ааа!!! я нашел косяк и ПО нужно обновить"! Как это сделать? Один вариант: придти с ЛапТопом плюс программатор и перешить нужные девайсы. Попробуйте поскакать на стремянке, где устройство находится на высоте метров эдак 5 от пола и устройств порядка 80-ти. Я так думаю, энтузиазма эти телодвижения у Вас вызовут мало.

Что было сделано. В основную программу добавлен небольшой фрагмент, который переводит устройсво в БутЛоадер. При инициализации БутЛоадера сразу переключаются вектора прерываний, понятно куда. Обновляем ПО и по окончании процесса командой JMP 0x0000 передаем управление основной программе. И эти телодвижения делаются из, например, центрального поста, пультовой, или как там это ещё можно назвать. Т.е. со стремянкой бегать не нужно, потому, что обновление ПО делается из одного места в комфортных условиях.
Убедил?
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 26 2007, 19:19
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(Igor26 @ Jul 26 2007, 10:34) *
Убедил?


Нет не убедили .Хотя как вариант он имеет право на жизнь. smile.gif

Давайте опять вспомним молодость ,когда впервые нам удалось вывести свой первый символ на экран ЖКИ,потом перепрошивка для вывода уже строки с оставленным включенным и инициализированным ЖКИ ,ввели строку ,выключили питание ,включили ... и болт smile.gif Круглые глаза какого не пашет ,ведь только что работало smile.gifПотом спустя час догадываемся что накосячили с инициализацией или таймингами пока переделывали программу smile.gif
Я привел самый простой и безобидный пример с которым сталкивались если не каждый то многие.Тоесть к чему может привести перепрошивка МК в уже инициализированной системе.

Поэтому нужно предусмотреть не только вызов конкретного МК для перепрошивки ,а также чтобы остальые МК заткнулись на шине и не мешали ,также после перепрошивки дать всем знать чтобы могли продолжить работу ,кроме того в программе перепрошиваемого МК неоходимо предусмотреть корректный вход в уже инициализированную систему.
Не слишком ли много головной боли ?
Я уже не говорю ,что можно просто накосячить в проге и посадить всю сеть ,тогда уж точно без стремянки не обойтись lol.gif

Поэтому для меня переход по ресету остается наиболее надежным способом входа в бут.И к томуже
он вполне подходит и для прошивки нескольких МК на шине.
У меня нет 50устройств ,я прошивал Мегу8 и мегу88 на одной шине ,чисто ради интереса - без проблем .
Способ работы своих бутов я уже описывал.

1Включаем питание и ждем 2 сек команду соединения,если нет переходим на выполнение программы.

2 Если есть - все МК входят в бут и ждут команды.(для разных МК разные комманды ,но есть две одинаковые "IN" и "OUT"),если например одинаковые МК можно придумать свой ID,сам принцип я думаю понятен.

3 Шьем,читаем и д.т.,на выбор

4 "OUT" - одновременно все выходим и стартуем.

Все smile.gif Просто и надежно,при этом можем иметь свой независимый протокол и скорость чисто для перепрошивки.


Цитата
- Непредвиденный прыжек в область бутлоадера в результате глюка программы, либо в результате просадки питания с летальным исходом для содержимого внешнего RAM'а.

Глюк программы - не в счет,тем более я напоминал ,что ей еще нужно угадать ,так как просто вход в секцию ничего недаст.

Насчет просадки питания ,незнаю как у Вас ,но у меня при просадке МК входил в такой ступор ,что я его не мог вывести даже внешним ресетом ,не то что протоколом или собакой.
Меня даже не это расстраивает ,а то что сносит ЕЕПРОМ при этом.
Поэтому в данной ситуации мне помог только BOD ,если раньше сносило целые блоки ,то сейчас очень редко первых пару байт ,решил проще ,занес базовые настройки во ФЛЕШ ,а пользовательские оставил в ЕЕПРОМ.Перейду на ULP серию - возможно мне полегчает smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 26 2007, 20:26
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(bodja74 @ Jul 26 2007, 22:19) *
Глюк программы - не в счет,тем более я напоминал ,что ей еще нужно угадать ,

Очень даже в счет. Представьте, есть некий контроллер электроподстанции 35KV, что-то глюкануло (на подстанциях всяко бывает), и вместо перезагрузки, у контроллера вдруг сотрется флеш. Считайте город остался без света на пару дней (если есть запасной контроллер, тогда на пару часов). Не будь там бутлоадера флеш бы не стерся, программа бы перезапустилась по WDT и все бы работало дальше. Выходит бутлоадер виноват, и ведь так и есть, кто как не бутлоадер флеш стер?..
Цитата
так как просто вход в секцию ничего недаст.

Полезного - ничего, а вредного запросто, по самые "нехочу".
Затрется пара страниц флеша, и ищи потом причину месяцами..

Цитата
Насчет просадки питания ,незнаю как у Вас ,но у меня при просадке МК входил в такой ступор ,что я его не мог вывести даже внешним ресетом ,не то что протоколом или собакой.

Я говорю не про MK, который кстати может свободно перенести скачек питания 5->1.8->5. А про внешний RAM, который 5->1.8->5 однозначно не перенесет.
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 29 2007, 09:47
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(defunct @ Jul 26 2007, 23:26) *
Очень даже в счет. Представьте, есть некий контроллер электроподстанции 35KV, что-то глюкануло (на подстанциях всяко бывает), и вместо перезагрузки, у контроллера вдруг сотрется флеш. Считайте город остался без света на пару дней (если есть запасной контроллер, тогда на пару часов). Не будь там бутлоадера флеш бы не стерся, программа бы перезапустилась по WDT и все бы работало дальше. Выходит бутлоадер виноват, и ведь так и есть, кто как не бутлоадер флеш стер?..

Полезного - ничего, а вредного запросто, по самые "нехочу".
Затрется пара страниц флеша, и ищи потом причину месяцами..
Я говорю не про MK, который кстати может свободно перенести скачек питания 5->1.8->5. А про внешний RAM, который 5->1.8->5 однозначно не перенесет.


В принципе все верно и можно согласиться,но вы упустили пару моментов.

1 чем отличасеться глюк программы с бутлоадером по протоколу и с бутлоадером по ресету ?
Такой же самый может глюк произойти- не вижу разницы.
2 Бут по ресету ,так же само как и бут по протоколу нуждается в протоколе
,таже команда входа,таже команда записи,поступление данных и только после этого запись.

Даже если вести разговор про какие то вероятные глюки ,то вероятность входа в бутлоадер программы переходящей по протоколу выше ,чем чем переход в бут по ресету,так как команда перехода опрашиваеться только первых пару секунд ,а у протокольного перехода должна опрашиваться постоянно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alex ma   Расположение векторов прерываний, обработка прерываний   Jul 19 2007, 18:23
- - bodja74   Делается очень просто , вспоминаете молодость ,ког...   Jul 19 2007, 20:11
|- - KRS   Цитата(bodja74 @ Jul 20 2007, 00:11) дела...   Jul 19 2007, 20:47
|- - defunct   Цитата(KRS @ Jul 19 2007, 23:47) +1. IMHO...   Jul 19 2007, 20:49
- - defunct   Цитата(Alex ma @ Jul 19 2007, 21:23) Так ...   Jul 19 2007, 20:46
- - _Алекс   При заливке программы нужно как то реализовать тай...   Jul 20 2007, 03:43
- - bodja74   Прерывания полезно для ускорения процесса программ...   Jul 20 2007, 10:05
|- - IEC   Цитата(bodja74 @ Jul 20 2007, 13:05) Прер...   Jul 23 2007, 13:43
|- - Сергей Борщ   Цитата(IEC @ Jul 23 2007, 16:43) Круто...   Jul 23 2007, 14:48
|- - bodja74   Цитата(IEC @ Jul 23 2007, 16:43) Круто...   Jul 23 2007, 15:49
|- - defunct   Цитата(bodja74 @ Jul 23 2007, 18:49) Собс...   Jul 23 2007, 21:26
|- - IEC   Цитата(defunct @ Jul 24 2007, 00:26) Или ...   Jul 24 2007, 07:54
|- - bodja74   Цитата(defunct @ Jul 24 2007, 00:26) Все ...   Jul 24 2007, 11:19
|- - defunct   Цитата(bodja74 @ Jul 24 2007, 14:19) Из о...   Jul 24 2007, 20:25
- - Igor26   Цитатанужно шаманить с переносом таблицы "Ша...   Jul 20 2007, 10:40
- - Igor26   ЦитатаWDT надо учитывать в бутлоадере Безоговорочн...   Jul 24 2007, 04:53
- - Igor26   Цитатаего действие можно запретить програмно? Наоб...   Jul 24 2007, 08:24
- - Igor26   Цитатаэто самый лучший способ отладки контроллеров...   Jul 24 2007, 11:40
- - bodja74   Дело не в этом Если Вы хотите что бы Ваше мнение...   Jul 24 2007, 18:27
- - bodja74   Ну допустим я сторонник входа в бутлоадер по ресет...   Jul 25 2007, 17:02
|- - defunct   Цитата(bodja74 @ Jul 25 2007, 20:02) Ну д...   Jul 26 2007, 11:09
- - Igor26   РАЗ. Попадаем в Лоадер, ДВА-глядим, а какая ...   Jul 26 2007, 13:25
- - _artem_   А через вотчдог можно есше скопировать стек и реги...   Jul 26 2007, 13:45
|- - Igor26   Цитата(_artem_ @ Jul 26 2007, 17:45) А че...   Jul 26 2007, 13:49
- - Igor26   ЦитатаЯ уже не говорю ,что можно просто накосячить...   Jul 27 2007, 10:23


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:47
Рейтинг@Mail.ru


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