Бляттть... (AlexB, поправь, если чего не вкупил) Хочется простого - boot область, защищенную от записи, и надежное обновление фирмвари, ну защиту от считывания, наконец...
Задача: дать юзверю возможность элегантно и ненапряжно обновлять фирмварь девайса с SD карточки. Типа воткнул карточку, бутлодырь нашел на диске файлик "firmware.bin" и перешил целевую область. (короче все то, что влехкую позволяет atmega)
В dsPIC/24H очень шибко заебатая фишка - CodeGuard™ Security.
Курил бумажонки от некрочипа весь вечер и пришел к выводу, что вся эта говенная начинка и нахер не фперлась, ибо не позволяет достичь требуемого результата:
Вариант1:
Защищаем Вoot сегмент (запись/чтение), в нем загрузчик. Защищаем General Segment от чтения. Вроде все красиво. Типа после сброса обновляем фирмварь, если требуется, в General Segment и передаем туда управление. (я именно так это дело и реализовал на сей момент)
Но!
Хоть и пишут вот это:
"If any of the code-protect bits in FBS, FSS
or FGS is clear, then the entire device
must be erased before it can be
reprogrammed.",
там-же пониже есть "ICSP 0x404D "Erase General Segment and FGS Configuration register".
Т.е. ничего не мешает извне выполнить командочку ICSP 0x404D, стреть GS и его защиту (не стирая кристалл целиком/оставив boot), воткнуть карточку, подождать и спокойненько считать все, что бутлодырь прописал.
Как это понять?
Сколько не рылся в бумажонках, точной информации не нашел.
Ибо всякие PicKit оболочки и прочие МПлабы трут кристаллы целиком пикоманам.
Фсе Щасливы...
Способ, назойливо предлагаемый некрочипровцами (приложение стартует в GS и при необходимости передает управление в защищенный CodeGuard-ом загрузчик для обновления) не катит - а вдруг питание дернется, или банально выдернут SD в это время и получаем трупик... Ибо более долбнутой реализации таблицы векторов, чем у некрочипа, мне еще не встречалось ;)
Вариант2:
Оставляем только GS (как в PIC24F). Схема такая-же. При попытке стереть извне, трется весь кристалл. Но бутлодырь в этом случае не защищен от случайной записи из самой фирмвари. Как-то некузяво по сравнению с той-же мегой...
Хоть и есть вроде отдельный битик защиты boot сегмента от записи, но как я понимаю, он актуален в комплексе с другими битами Boot Segment Program Memory Code Protection.
А?
-
- Да кому нахрен нужна твоя прошивка? Alex B.(173 знак., 17.03.2009 10:36)
- Мне нужна. Этого мало? Гудвин(114 знак., 17.03.2009 11:05)
- Да кому нахрен нужна твоя прошивка? Alex B.(173 знак., 17.03.2009 10:36)