|
Защита секция кода во FLASH в ATmega, Как защититься от несанкционированного выполнения кода |
|
|
|
Feb 11 2008, 17:42
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
А кто как защищает код в MCU от несанкционированного выполнения в результате случайного перехода из одной точки программы в другую от воздействия помехонесущего электромагнитного поля (искажения записанного в счётчике команд значения). А? Приведу пример -------------------- lab_1_input: ldi R16 , $00 mov R16 , $98 ... lab_1_output: mov R17 , R5 ----------------------- lab_2_1_input: mov R18, R17 Т.е. допустим программа предусматривает переход к выполнению кодового фрагмента, начинающегося с метки lab_2_1_input только после отработки до конца фрагмента [lab_1_input;lab_1_output] А представим , что от помехи произошёл случайный переход из произвольной точки 1-го фрагмента кода в произвольную точку 2-го фрагмента кода.... Как вы ПРОГРАММНО отлавливаете такие ситуации? Т.е. как Вы реализовываете в своих программах для микроконтроллеров ATmega механизм защиты FLASH-памяти от несанкционированного выполнения кода. Ну т.е. как контролировать, что в данный фрагмент кода вошли не где попало, а через строго определённые на этапе проектирования программы, точки Цитата(Дон Амброзио @ Feb 11 2008, 20:36)  А кто как защищает код в MCU от несанкционированного выполнения в результате случайного перехода из одной точки программы в другую от воздействия помехонесущего электромагнитного поля (искажения записанного в счётчике команд значения). Кстати, причины такого случайного джампа могут быть не только в разрушении PC. Может также случайным образом измениться содержимое ячейки FLASH или содержимое хранимой в ОЗУ таблицы переходов... В любом случае МОЖЕТ произойти переход в точку некоторого логического сегмента кода, которая не предусмотрена данным логическим сегментом FLASH
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
 |
Ответов
|
Feb 12 2008, 16:18
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
Цитата(Kris2007 @ Feb 12 2008, 16:21)  А че такое бывает чтобы из-за электромагнитных помех грохнулся счетчик команд? Бывает, бывает. Молодой человек. Я написал тестовую прогу для ATmega8 которая представляет собой следующее: .cseg .org 0 ;----------------- .set Number = 0 ;----------------- Begin_Loop : .set Number = Number +1 ldi R16 , Number nop ... nop cpi R16 , Number breq PC+0x02 rjmp Crash ;----------------- .set Number = Number +1 ldi R16 , Number nop ... nop cpi R16 , Number breq PC+0x02 rjmp Crash ;----------------- .set Number = Number +1 ldi R16 , Number nop ... nop cpi R16 , Number breq PC+0x02 rjmp Crash ;----------------------- ...... ...... ...... ;----------------- .set Number = Number +1 ldi R16 , Number nop ... nop cpi R16 , Number breq PC+0x02 rjmp Crash ;----------------------- rjmp Begin_Loop ;----------------------- Crash : ; Зажечь светодиод ... ; Остановиться ;------------------------ После подачи помехи в виде электромагнитной наводки от пьёзозажигалки мне удавалось как зажечь светодиод Цитата(Kris2007 @ Feb 12 2008, 16:21)  Импульсник на 3квт делали на атмеге. Там тАкие помехи идут и все ок. Я уж не говорю о других устройствах. Если некая помеха по питанию и на пине это еще понятно но случайная запись в PC .. У меня тоже в условиях эксплуатация все девайсы работают нормально. А когда я над ними "издеваюсь" с помощью пьезозажигалки, то порой такие "чудеса" наблюдаю Цитата(SasaVitebsk @ Feb 12 2008, 16:36)  А с какими ты работал? Сейчас практически все AVR "такие" Не звизди.. "Все такие" говоришь? А как же ATmega 8, 8515, 8535, 64, 128..А? Цитата(Дон Амброзио @ Feb 12 2008, 18:54)  А как же ATmega 8, 8515, 8535, 64, 128..А? В них по WDT происходит полноценный сброс, а не прерывание Цитата(SasaVitebsk @ Feb 12 2008, 16:36)  Просто к моменту когда ты начал обдумывать свои "правильные" методики борьбы, человечество с этим уже работало и над этим думало не один десяток лет. И WDT оказался одним из самых эффективных методов борьбы с зависаниями и сбоями. Дык с зависаниями или сбоями? Вы уж определитесь.. Ибо понятие "сбой" гораздо шире понятия "зависание" Цитата(SasaVitebsk @ Feb 12 2008, 16:36)  раз уж ты уходишь от переписывания моей процедуры. Странный ты.. Ну на тебе твою переделанную процедуру (хотя я же объяснял тебе выше как это сделать. Неужели для тебя это так сложно?  ) ... ldi R25 , high ( Border_Counter) ldi R24 , low ( Border_Counter) ReadLptEPP: sbiw R25:R24 , 1 breq Crash sbic pinc,LptSTB ; Строб пришёл? rjmp ReadLptEPP ; иначе повторить ...
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
Feb 13 2008, 06:12
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата(Дон Амброзио @ Feb 12 2008, 19:18)  Странный ты.. Ну на тебе твою переделанную процедуру (хотя я же объяснял тебе выше как это сделать. Неужели для тебя это так сложно?  ) ... ldi R25 , high ( Border_Counter) ldi R24 , low ( Border_Counter) ReadLptEPP: sbiw R25:R24 , 1 breq Crash sbic pinc,LptSTB ; Строб пришёл? rjmp ReadLptEPP ; иначе повторить ... Всегда пишу именно так, но хочу заметить что попав в результате сбоя, к примеру, на метку ReadLptEPP (не загрузив константы в регистры) можно превысить допустимое значение ожидание со всеми вытекающими из этого последствиями. Предпочитаю использовать WDT + обязательный выход из цикла по переполнению описанный Вами.
--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
|
|
|
|
|
Feb 13 2008, 09:26
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
Цитата(adc @ Feb 13 2008, 09:12)  Всегда пишу именно так, но хочу заметить что попав в результате сбоя, к примеру, на метку ReadLptEPP (не загрузив константы в регистры) можно превысить допустимое значение ожидание со всеми вытекающими из этого последствиями. Согласен.. Просто я привык уже работать в среде мной же разработанной RTOS, где любой поток может быть вытеснен другим более высокоприоритетным потоком вообще говоря на случайное время. И как в этом случае Вы рассчитаете на сколько должен быть запрограммирован WDT? Поэтому в этом случае счётчик ограничитель количества итераций выглядит более предпочтитетельным. Тем более бывают задачи, где важно именно количество итерация цикла, а не время его выполнения Цитата(adc @ Feb 13 2008, 09:12)  Предпочитаю использовать WDT + обязательный выход из цикла по переполнению описанный Вами. Хорошее решение.. Но только для программ не работающих в RTOS с вытесняющей многозадачностью. Я же использую в многозадачной среде виртуальные таймеры и WDT, которые фактически являются обратными счётчиками CPU_Time потока. Т.е. у меня любой поток может посмотреть в любой момент своё CPU_Time - время, которое бы он выполнялся если бы он были один в системе. Фактически CPU_Time - это счётчик тактов выполнения кода потока. Отсюда можно делать следующее. Вы прикидываете сколько максимальное количество тактов будет выполняться поток от точки A до точки B. Инициализируете в точке A виртуальный WDT, а в точке B его реинициализируете новым значением. Если этот виртуальный WDT обнулиться до прихода CPU в точку B потока, то это сбой и система это отработает. Кроме максимального времени работы некоторого участка кода, которое контролируется виртуальным WDT. Я ещё контролирую минимальное.. Ведь если известно, например, что подсчёт CRC 256-ти байтного пакета не может быть меньше 547788 тактов (цифры взяты просто для иллюстрации примера) и мы попадаем на точку завершения подсчёта и видим, что этот участок кода выполнился за 10790 тактов - то ясно же что имеет место сбой.... Цитата(arttab @ Feb 13 2008, 05:02)  хорошо что не подрались... Да млин, всё-таки неприятно, когда человек не врубившись "что почём" начинает меня "мордой тыкать" в такую элементарщину, что создаётся впечатление, что либо человек меня принимает за полного ламера (и это с моим-то более чем 15-ти летним опытом разработчика девайсов на базе MCU) либо сам таковым и является Цитата(arttab @ Feb 13 2008, 05:02)  может для начала определить с какими сбоими в работе мк боремся ... В этой теме я рассматриваю только один вид сбоев: несанкционированное выполнение код во FLASH, вызванное аппаратным сбоем. Этот сбой проявляется в том, что осуществляется переход в запрещённую точку секции кода , либо в разрешённую, но тогда, когда условия для выполнения этой секции кода не наступили. Среди основных причин этого сбоя можно назвать следующие: 1) Случайное изменение значение счётчика команд из-за помех 2) Случайное изменение содержимого в ячейке ОЗУ в области, где храниться таблица переходов 3) Случайное изменение ОЗУ стека или указателся стека, в результате чего после команд ret/reri мы "улетаем" не пойми куда СЮДА Я НЕ ОТНОШУ те сбои в командах перехода, когда в программе содержиться ошибка, проявляющаяся в том, что при не которых наборах данных она вычисляет не верный адрес точки перехода Цитата(Дон Амброзио @ Feb 13 2008, 12:21)  В этой теме я рассматриваю только один вид сбоев: несанкционированное выполнение код во FLASH, вызванное аппаратным сбоем. Этот сбой проявляется в том, что осуществляется переход в запрещённую точку секции кода , либо в разрешённую, но тогда, когда условия для выполнения этой секции кода не наступили.
Среди основных причин этого сбоя можно назвать следующие: 1) Случайное изменение значение счётчика команд из-за помех 2) Случайное изменение содержимого в ячейке ОЗУ в области, где храниться таблица переходов 3) Случайное изменение ОЗУ стека или указателся стека, в результате чего после команд ret/reri мы "улетаем" не пойми куда СЮДА Я НЕ ОТНОШУ те сбои в командах перехода, когда в программе содержиться ошибка, проявляющаяся в том, что при не которых наборах данных она вычисляет не верный адрес точки перехода Если сказать короче: здесь рассматривается сбой, проявлящийся в том, что происходит переход от одной точки программы к другой и этот переход не относиться к множеству всех возможных переходов, определённых на этапе разработки программы
Сообщение отредактировал Дон Амброзио - Feb 13 2008, 09:05
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
Feb 13 2008, 09:39
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата(Дон Амброзио @ Feb 13 2008, 12:26)  В этой теме я рассматриваю только один вид сбоев: несанкционированное выполнение код во FLASH, вызванное аппаратным сбоем. Этот сбой проявляется в том, что осуществляется переход в запрещённую точку секции кода , либо в разрешённую, но тогда, когда условия для выполнения этой секции кода не наступили. Если сказать короче: здесь рассматривается сбой, проявлящийся в том, что происходит переход от одной точки программы к другой и этот переход не относиться к множеству всех возможных переходов, определённых на этапе разработки программы Вы спрашивали почему тут все уперлись в WDT?. Объясняется это тем что это решение практически на уровни железа. Как можно программными методами отследить случайный переход на случайную точку программы? Даже если в программе большая часть функций направлена на контроль правильности выполнения кода, ни что не защитит программу от перехода на случайный адрес с последующим нарушением нормальной работы устройства. Как мне кажется решение должно быть на уровне железа.. (внешние контролирующие устройства(тотже только внешний WDT), дублирующий контроллер(возможно выполняющий туже задачу) и т.п.) Это мое ИМХО.
--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
|
|
|
|
|
Feb 13 2008, 09:57
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
Цитата(adc @ Feb 13 2008, 12:39)  Как можно программными методами отследить случайный переход на случайную точку программы? Вы задали вопрос, который собственно и должен "красной нитью" идти через всю тему. Ради того, чтобы услышать ответы участников форума на него я , собственно говоря, и создал эту тему Цитата(adc @ Feb 13 2008, 12:39)  Даже если в программе большая часть функций направлена на контроль правильности выполнения кода, ни что не защитит программу от перехода на случайный адрес с последующим нарушением нормальной работы устройства. Согласен, что программа от таких сбоев не защищает, но она может помочь в их обнаружении и оповещении о них. Ибо нафига мне "суперпупернадёжная" система, у которой происходит один сбой в год, но он НЕ ОБНАРУЖИВАЕТСЯ СИСТЕМОЙ. Я лучше возьму систему, у которой сбои происходят каждый день, ну у которой эти сбои НЕ ПРОХОДЯТ НЕЗАМЕЧЕННЫМИ СИСТЕМОЙ Цитата(adc @ Feb 13 2008, 12:39)  Как мне кажется решение должно быть на уровне железа.. (внешние контролирующие устройства(тотже только внешний WDT), дублирующий контроллер(возможно выполняющий туже задачу) и т.п.) Это мое ИМХО. Моё ИМХО такое же.. Но всё же лучше "соломки подстелить". Ибо лучше перебдеть, чем недобдеть Цитата(zltigo @ Feb 13 2008, 12:42)  За темой следить не вижу ни малейшего смысла. А я никого и не заставляю читать эту тему или чтото писать в ней. Так же как оставляю за собой право НЕ ЧИТАТЬ и НЕ ОТВЕЧАТЬ в неинтересных мне темах
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
Feb 13 2008, 10:19
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Дон Амброзио @ Feb 13 2008, 12:57)  Согласен, что программа от таких сбоев не защищает, но она может помочь в их обнаружении и оповещении о них.
Ибо нафига мне "суперпупернадёжная" система, у которой происходит один сбой в год, но он НЕ ОБНАРУЖИВАЕТСЯ СИСТЕМОЙ. Я лучше возьму систему, у которой сбои происходят каждый день, ну у которой эти сбои НЕ ПРОХОДЯТ НЕЗАМЕЧЕННЫМИ СИСТЕМОЙ +1 Как можно программными методами отследить случайный переход на случайную точку программы? Я от этого контролем данных защищаюсь - см. мой предыдущий пост. Подсчётом их CRC, сравнением с инверсией и т.д. ИМХО в случае несанкционированного перехода, данные и в регистрах и в ОЗУ, несоответствующие программе будут. Это не 100% конечно. Но и CRC у порченных данных тоже совпасть может! А если программа хотя-бы диапазоны данных проверяет - то и больших бед не натворит. И восстановиться потом можно будет!
|
|
|
|
Сообщений в этой теме
Дон Амброзио Защита секция кода во FLASH в ATmega Feb 11 2008, 17:42 Liseev А как вы будете защищать "механизм защиты от ... Feb 11 2008, 18:05 Дон Амброзио Цитата(Liseev @ Feb 11 2008, 21:05) Испол... Feb 11 2008, 18:40  Liseev Цитата(Дон Амброзио @ Feb 11 2008, 21:40)... Feb 11 2008, 19:32  SasaVitebsk Цитата(Дон Амброзио @ Feb 11 2008, 22:40)... Feb 11 2008, 21:34   Дон Амброзио Цитата(SasaVitebsk @ Feb 12 2008, 00:34) ... Feb 11 2008, 21:52    SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 01:52)... Feb 11 2008, 22:45     Дон Амброзио Цитата(SasaVitebsk @ Feb 12 2008, 01:45) ... Feb 11 2008, 23:08      SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 03:02)... Feb 11 2008, 23:11       Дон Амброзио Цитата(SasaVitebsk @ Feb 12 2008, 02:11) ... Feb 11 2008, 23:31        SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 03:31)... Feb 12 2008, 08:41         Дон Амброзио Цитата(SasaVitebsk @ Feb 12 2008, 11:41) ... Feb 12 2008, 12:01        defunct Цитата(Дон Амброзио @ Feb 12 2008, 01:31)... Feb 13 2008, 12:47         Дон Амброзио Цитата(defunct @ Feb 13 2008, 15:47) это ... Feb 13 2008, 16:08          defunct ЦитатаА кто как организует код программы, чтобы пр... Feb 13 2008, 23:51           Дон Амброзио Цитата(defunct @ Feb 14 2008, 02:51) Дете... Feb 14 2008, 00:30            defunct Цитата(Дон Амброзио @ Feb 14 2008, 02:13)... Feb 14 2008, 00:33             Дон Амброзио Цитата(defunct @ Feb 14 2008, 03:33) Пото... Feb 14 2008, 00:49              defunct Цитата(Дон Амброзио @ Feb 14 2008, 02:49)... Feb 14 2008, 00:55               Дон Амброзио Цитата(defunct @ Feb 14 2008, 03:55) Вооб... Feb 14 2008, 01:26                defunct Цитата(Дон Амброзио @ Feb 14 2008, 03:21)... Feb 14 2008, 01:34                 Дон Амброзио Цитата(defunct @ Feb 14 2008, 04:34) Поче... Feb 14 2008, 01:40                  defunct Цитата(Дон Амброзио @ Feb 14 2008, 03:40)... Feb 14 2008, 01:43                singlskv Цитата(Дон Амброзио @ Feb 14 2008, 04:26)... Feb 14 2008, 09:38             Дон Амброзио Цитата(defunct @ Feb 14 2008, 03:33) А во... Feb 14 2008, 01:05              defunct Цитата(Дон Амброзио @ Feb 14 2008, 02:56)... Feb 14 2008, 01:06             galjoen Цитата(defunct @ Feb 14 2008, 03:33) Ну и... Feb 14 2008, 07:11              defunct Цитата(galjoen @ Feb 14 2008, 09:11) Сове... Feb 14 2008, 15:18              Дон Амброзио Цитата(galjoen @ Feb 14 2008, 10:11) У AR... Feb 14 2008, 15:35               singlskv Цитата(Дон Амброзио @ Feb 14 2008, 18:35)... Feb 14 2008, 18:10                Дон Амброзио Цитата(singlskv @ Feb 14 2008, 21:10) Ой.... Feb 14 2008, 18:45                 singlskv Цитата(Дон Амброзио @ Feb 14 2008, 21:35)... Feb 14 2008, 18:51            Дон Амброзио Цитата(Дон Амброзио @ Feb 14 2008, 03:30)... Feb 14 2008, 00:35            defunct Цитата(Дон Амброзио @ Feb 14 2008, 02:30)... Feb 14 2008, 00:45      galjoen Цитата(Дон Амброзио @ Feb 12 2008, 02:08)... Feb 12 2008, 00:33   galjoen Цитата(Дон Амброзио @ Feb 11 2008, 20:42)... Feb 11 2008, 22:05 Непомнящий Евгений Ну как вариант - расставить assert-ы по всей проге... Feb 11 2008, 19:26 Дон Амброзио Цитата(Непомнящий Евгений @ Feb 11 2008, 22... Feb 11 2008, 20:15 arttab Средства должны оправдывать цели.
уровень защиты о... Feb 12 2008, 01:45 Дон Амброзио Цитата(arttab @ Feb 12 2008, 04:45) Средс... Feb 12 2008, 05:05  VladimirYU Цитата(Дон Амброзио @ Feb 12 2008, 08:05)... Feb 12 2008, 06:23   Дон Амброзио Цитата(VladimirYU @ Feb 12 2008, 09:23) К... Feb 12 2008, 06:35  adc Цитата(Дон Амброзио @ Feb 12 2008, 08:05)... Feb 12 2008, 12:49   Дон Амброзио Цитата(adc @ Feb 12 2008, 15:49) Вот вот.... Feb 12 2008, 13:03    SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 17:03)... Feb 12 2008, 13:36  tyro Цитата(Дон Амброзио @ Feb 12 2008, 08:05)... Feb 13 2008, 07:56   Дон Амброзио Цитата(tyro @ Feb 13 2008, 10:56) Обсужда... Feb 13 2008, 09:39    zltigo Цитата(Дон Амброзио @ Feb 13 2008, 12:36)... Feb 13 2008, 09:42     Dog Pawlowa Цитата(zltigo @ Feb 13 2008, 13:42) За те... Feb 13 2008, 09:49      zltigo Цитата(Dog Pawlowa @ Feb 13 2008, 12:49) ... Feb 13 2008, 10:02       Дон Амброзио Цитата(zltigo @ Feb 13 2008, 13:02) Для н... Feb 13 2008, 10:51 Непомнящий Евгений ИМХО, стратегия поведения после обнаружения ошибки... Feb 12 2008, 06:39 VladimirYU Цитата(Непомнящий Евгений @ Feb 12 2008, 09... Feb 12 2008, 06:43  SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 20:18)... Feb 12 2008, 17:00   Дон Амброзио Цитата(SasaVitebsk @ Feb 12 2008, 20:00) ... Feb 12 2008, 17:14    SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 21:14)... Feb 12 2008, 19:16     Дон Амброзио Цитата(SasaVitebsk @ Feb 12 2008, 22:16) ... Feb 12 2008, 19:56      SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 23:56)... Feb 12 2008, 21:34       Дон Амброзио Цитата(SasaVitebsk @ Feb 13 2008, 00:34) ... Feb 12 2008, 21:44       galjoen Цитата(galjoen @ Feb 13 2008, 13:19)
Я т... Feb 13 2008, 10:53       adc Цитата(galjoen @ Feb 13 2008, 13:19) Цита... Feb 13 2008, 11:25        galjoen Цитата(adc @ Feb 13 2008, 14:25) Но ведь ... Feb 13 2008, 12:24   galjoen Цитата(adc @ Feb 13 2008, 09:12) Всегда п... Feb 13 2008, 09:41 Rst7 ЦитатаНе я выбираю MCU: что мне дали, то я и юзаю ... Feb 12 2008, 18:23 Дон Амброзио Цитата(Rst7 @ Feb 12 2008, 21:23) Если не... Feb 12 2008, 18:50 arttab хорошо что не подрались...
может для начала оп... Feb 13 2008, 02:02 Schtirlitz Надо отделить мух от котлет. Ибо проблема надежнос... Feb 13 2008, 09:31 Дон Амброзио Цитата(Schtirlitz @ Feb 13 2008, 12:31) И... Feb 13 2008, 09:41 Дон Амброзио Цитата(Schtirlitz @ Feb 13 2008, 12:31) Н... Feb 13 2008, 09:44  Schtirlitz Цитата(Дон Амброзио @ Feb 13 2008, 12:44)... Feb 13 2008, 10:01   Дон Амброзио Цитата(Schtirlitz @ Feb 13 2008, 13:01) А... Feb 13 2008, 11:14 mig2002 Возвращаясь к первоначальному вопросу могу посовет... Feb 13 2008, 11:01 mig2002 В принципе, однозначного решения данного вопроса б... Feb 13 2008, 11:43 Дон Амброзио Цитата(mig2002 @ Feb 13 2008, 14:43) В пр... Feb 13 2008, 12:09  mig2002 Цитата(Дон Амброзио @ Feb 13 2008, 14:09)... Feb 13 2008, 13:20 Дон Амброзио Вообще сейчас скажу крамольную мысль (только чур н... Feb 13 2008, 12:16 Rst7 ЦитатаА у вас как с ЭМС? С наносекундными импульса... Feb 13 2008, 12:50 galjoen Цитата(Rst7 @ Feb 13 2008, 15:50) У меня ... Feb 13 2008, 14:34  defunct Цитата(galjoen @ Feb 13 2008, 16:34) Може... Feb 13 2008, 15:12   Дон Амброзио Цитата(defunct @ Feb 13 2008, 18:12) угу,... Feb 13 2008, 15:51    defunct Цитата(Дон Амброзио @ Feb 13 2008, 17:51)... Feb 13 2008, 17:16     Дон Амброзио Цитата(defunct @ Feb 13 2008, 20:16) Я же... Feb 13 2008, 18:35      galjoen Цитата(Дон Амброзио @ Feb 13 2008, 21:35)... Feb 13 2008, 19:17 IgorKossak Считаю своим долгом всем напомнить, что неплохо бы... Feb 13 2008, 13:26 adnega Недавно дорабатывал текстовое информационное табло... Feb 13 2008, 13:50 defunct ЦитатаПосле аппаратных доделок табло перестало лов... Feb 13 2008, 14:09 Rst7 ЦитатаУ меня-то пластмассовый корпус 120*60*32 мм.... Feb 13 2008, 14:41 galjoen Цитата(Rst7 @ Feb 13 2008, 17:41) И в под... Feb 13 2008, 15:53  Rst7 Цитата(galjoen @ Feb 13 2008, 17:53) Объя... Feb 14 2008, 06:25 Дон Амброзио Не секрет, что стоимость простых MCU упала до стои... Feb 14 2008, 15:56 zltigo Цитата(Дон Амброзио @ Feb 14 2008, 18:56)... Feb 14 2008, 16:05 Rst7 ЦитатаСтранно.. Я читал совершенно другие "ме... Feb 14 2008, 17:35
3 страниц
1 2 3 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|