|
|
  |
Как заполнить свободную память?, программная защита |
|
|
|
Sep 28 2007, 10:35
|

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

|
Цитата(aaarrr @ Sep 28 2007, 02:27)  Вставлю-ка я свои 5 копеек: Как уже упоминалось ранее, значение 0xFFFF - это код команды SBRS R31, 7. Но никто почему-то не обратил внимания на то, что при R31.7=1 процессор может и не выйти на нулевой адрес. Вы имеете в виду, выход на адрес 0x0001 вместо 0x0000. Да действительно возможно, но не проще ли будет по адресу 0x0001 поставить JMP туда же куда делается в инструкции по адресу 0x0000. Тем более вы упускаете тот факт, что процессор может прыгнуть в несуществующую область памяти, при чтении которой возвращается тот же 0xFFFF, вероятность прыжка в несуществующую область памяти прямопропорциональна количеству оной, например для M16 вероятность прыжка в несуществующую область памяти = (128 - 16)/128 = 7/8 = 0.875 Цитата(zltigo @ Sep 28 2007, 10:59)  В принципе до этого эффекта Watchdog в этом софте размером порядка 300K даже не активировался. Давить программные ошибки Watchdog-ом чистый моветон  Позволю себе несогласиться с вашим выводом. Про моветон можете говорить в форуме по АРМ, у которого имеется возможность обработать или "задампить" крашевую ситуацию (DABT/PABT/UNDF). У AVR'ра нет обработчиков исключений и в промышленных изделиях только WDT может подстраховать в случае серьезного программного сбоя. WDT в AVR можно рассматривать как обработчик исключений. Считаю, что конечный продукт на AVR с отключенным WDT - дилетанство, такое же как если в изделии оставить чип в отладочном режиме (фуз OCDEN).
|
|
|
|
|
Sep 28 2007, 10:49
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(defunct @ Sep 28 2007, 13:35)  Считаю, что конечный продукт на AVR с отключенным WDT дилетанство... Речь шла не о том использовать или нет Watchdog - использовать, а о том, что латать Watcdog-ом программные ошибки, а не фатальные сбои аппаратуры неправильно - софтово система должна быть живучей, обрабатывающей нештатные ситуации и самовыбирающейся из всевозможных положений. Естественно это стоит трудов, времени и кода....
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 28 2007, 11:07
|

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

|
Цитата(zltigo @ Sep 28 2007, 13:49)  Речь шла не о том использовать или нет Watchdog - использовать, а о том, что латать Watcdog-ом программные ошибки, а не фатальные сбои аппаратуры неправильно - софтово система должна быть живучей, обрабатывающей нештатные ситуации и самовыбирающейся из всевозможных положений. Естественно это стоит трудов, времени и кода.... Тогда вы возможно не так поняли мой первый пост. Никто никогда не застрахован от программных ошибок, которые часто проявляются в полевых условиях, а не на стадии цикла тестирования. В ARM с отловом таких ошибок проще - по факту abort'a, сразу есть и место ошибки и стек (в AVR только по WDT). Отлаживать и устранять приходится по дампу памяти снятому в полевых условиях - такой процесс иногда затягивается на месяцы, и пока проблема устраняется, WDT скрывает проблему от потребителя (системе ж надо как-то работать), но он ни в коем случае не скрывает проблему от разработчика.
|
|
|
|
|
Sep 28 2007, 11:18
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(defunct @ Sep 28 2007, 14:35)  Вы имеете в виду, выход на адрес 0x0001 вместо 0x0000. Да действительно возможно, но не проще ли будет по адресу 0x0001 поставить JMP туда же куда делается в инструкции по адресу 0x0000. Тем более вы упускаете тот факт, что процессор может прыгнуть в несуществующую область памяти, при чтении которой возвращается тот же 0xFFFF, вероятность прыжка в несуществующую область памяти прямопропорциональна количеству оной, например для M16 вероятность прыжка в несуществующую область памяти = (128 - 16)/128 = 7/8 = 0.875  Допустим, для MEGA16 PC "13-bit wide", как пишут на несравненном атмеле. Я так понимаю: старшие биты уже в нулях. Далее, пусть глюк пошел по адресной шине. Ну и что - будет не 0xFFFF, а выборка случайной команды по модулю 2^16 или 2^13, т.е. конкретный глюк. Таким образом, в прямую пропорциональность вероятности прыжка... не верю
|
|
|
|
|
Sep 28 2007, 11:22
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 12-01-07
Из: Крым
Пользователь №: 24 378

|
Цитата(Petka @ Sep 28 2007, 12:51)  В который раз повторяю: нежелательно вешать на ресет ёмкости! Почему? А обьясните мне что будет при пропадании питания? Обьясняю : Если вы рассмотрите структуру порта , то увидите что каждый порт защищён защитными диодами , причём один диод на землю анодом ( защита от отрицательных напряжений ) , другой диод катодом об питание процессора . Так вот при выключении питания верхний диод будет смещён в прямом направлении и разрядит ёмкость на питание . . . Непойму в чём проблема ? Неужели это надо обьяснять ?
|
|
|
|
|
Sep 28 2007, 11:38
|

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

|
Цитата(_Pasha @ Sep 28 2007, 14:18)  для MEGA16 PC "13-bit wide" точно. упустил. Цитата Таким образом, в прямую пропорциональность вероятности прыжка... не верю да ее нет. Но предложение добавить команду перехода по адресу 0x0001 остается в силе, тем более для МК с >=16k флеш, это можно сделать не жертвуя вектором INT0.
|
|
|
|
|
Sep 28 2007, 11:45
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 12-01-07
Из: Крым
Пользователь №: 24 378

|
Цитата(Rst7 @ Sep 28 2007, 14:18)  Это откуда же такое тайное знание? Вы видели исходник?  Достаточно хотя бы посмотреть в документации на любой AVR тактирование ALU , и попытаться разобраться как вообще происходит работа за 1 такт . MSC-51 делили такты на 12 от нечего делать ? Сейчас MSC-51 как правило делят на 4 , или поступают аналогично AVR. Если верите больше своим глазам , то можите поставить эксперимент : берёте AVR , запускаете на 16 MHz например . Затем вместо 16 MHz запаивает например 27 MHz ( можно найти кристаллы , которые запустятся на этой частоте ) . Так вот работать они будут медленнее чем на 16 MHz . Почему надеюсь обьяснять ненадо ? Цитата(Rst7 @ Sep 28 2007, 15:39)  Проблема в том, что на сбросе этого диода НЕТ. Да , ошибся , извиняюсь . Так а кто его мешает поставить ? ( желательно Шоттки )
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|