Страница 1 из 1

ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Чт май 03, 2012 23:33:00
coredumped
Предлагаю обсудить методы защиты содержимого flash от копирования. Я тему сам только начинаю изучать-разрабатывать, тк раньше не заморачивался. В моих изделиях используются FPGA, их и защищаю (есть методы). Сейчас продумываю новый проект, там вся надежда только на возможности Cortex-M3 от TI.
А проблема имеет место быть. Защиту flash обеспечить проблематично, тк биты защиты ставятся на целый сектор. Все выглядит неплохо, есть атрибут execute only - именно этот вариант делает считывание сектора невозможным, но одно огромное НО! После установления такого атрибута чтение содержимого сектора даже самой программой становится невозможным. Самая большаая проблема, по словам TI, в том, что нет на сегодняшний день компиляторов (опять-же с их слов), способных разместить только выполняемый код и константы в разных сегментах flash, что делает применеие атрибута execute only невозможным. Единственное, что приходит на ум - написание кода на асемблере, с явной адресацией, однако это - каменный топор. Может я чета не правильно понял в фирменных доках, и солюшн имеется?
Предлагаю обсудить данную проблему. Я если чего нарою, сразу отпишусь.

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Пт май 04, 2012 12:43:26
Kavka
Что-то как-то подозрительно. Где те слова TI на которые вы ссылаетесь? Ссылку на документ и место в документе.

А как на счёт разбиения на сегменты кода и данных? gcc точно умеет. Не исключено, конечно, что где-то ещё напильником не до точили до нужной кондиции. Да же winavr такое умеет и статистику при компиляции показывает.

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Пт май 04, 2012 12:51:53
Satyr
Постановка вопроса неверная. Флеш находится не в ядре Cortex-M3, а снаружи.
Соотв. оставляем в покое Cortex-M3, переходим к обсуждению конкретных семейств МК :))
В каждом по своему.

И что и от кого защищаем ? Зачем 'execute only' и т.п. ? защита от внутренней угрозы или от слива прошивки снаружи, как показалось из названия темы ?

Так у всех (за всех не поручусь, но другого не видел) МК на АРМах есть средства защиты от считывания прошивки через интерфейсы отладки и программирования.

Конкретно на AT91SAM7Sxxx, LPC24xx, LPC17xx, STM32F2xx пробовал. Вполне себе функционально.

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Пт май 04, 2012 12:53:40
Satyr
Kavka писал(а): А как на счёт разбиения на сегменты кода и данных? gcc точно умеет.
У Thumb2 с этим трудности. нельзя там сделать большой сегмент данных и большой сегмент кода отдельно.
Если посмотреть мапы линкера - то он чередует небольшие сегменты кода и данных. И этому есть объяснение.

Ну и главное - как это связано с защитой флеша от дублирования ???

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Пт май 04, 2012 12:58:28
Satyr
Вот, под рукой есть -))

#if MCU == LPC1785

#ifndef _DEBUG

# define CRP_PATTERN_CRP2 0x87654321
# pragma section=".CRP"
# pragma location=".CRP"

const __root U32 CRP_VALUE = CRP_PATTERN_CRP2;

#endif
#endif

В линкерсрипт:
place at address mem:0x000002fc { readonly section .CRP };



Скомпилироват в релизе, влить один раз, и при следующем включении JTAG уже начисто не работает, а IAP на ком порту из всех комманд будет воспринимать единственную - полное стирание всего флеша.

Надо чтото еще ?

В STM32Fxxx, насколько помню, записью неких магических чисел в опр. регистр включается.

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Пт май 04, 2012 13:02:28
Kavka
Satyr писал(а):У Thumb2 с этим трудности. нельзя там сделать большой сегмент данных и большой сегмент кода отдельно.
Если посмотреть мапы линкера - то он чередует небольшие сегменты кода и данных. И этому есть объяснение.
Satyr, а где про эту особенность можно почитать?

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Пт май 04, 2012 13:08:38
Satyr
Насчет TI
http://www.ti.com/lit/an/spma011/spma011.pdf

Все эти ридонли, экзекушн онли - это от внутренних угроз.

от слива прошивки активировать это

Permanently Disabling Debug
For extremely sensitive applications, the debug interface to the processor and peripherals can be
permanently disabled, blocking all accesses to the device through the JTAG or SWD interfaces. With
the debug interface disabled, it is still possible to perform standard IEEE instructions (such as
boundary scan operations), but access to the processor and peripherals is blocked.

и всё

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Пт май 04, 2012 13:23:29
Satyr
Kavka писал(а):
Satyr писал(а):У Thumb2 с этим трудности. нельзя там сделать большой сегмент данных и большой сегмент кода отдельно.
Если посмотреть мапы линкера - то он чередует небольшие сегменты кода и данных. И этому есть объяснение.
Satyr, а где про эту особенность можно почитать?
Thumb2 ISA

Напомню суть - в Thumb2 нельзя загрузить в регистр из непосредственно 32bit значение. Можно только +- 4095 и пару совсем изощренных чисел.

Соотв. нельзя в коде поставить в регистр дальний указатель. Можешь все те же +- 4095 от PC.
Хочешь загрузить 32 бит константу ? ОК, она должна быть быть где то в радиусе 4кб от тебя, грузишь по относительному адресу -)))

Так что пусть не сами данные, но их адреса должны валяться где то поблизости. Но чтоб было меньше инструкций загрузки, ессно лучше, чтоб в радиусе 4кб лежали сами данные, а не их адрес где то далеко.

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Пт май 04, 2012 13:38:07
Satyr
Почитал еще раз - как то в ТИ неподумавши.
Или ничего толком не защищай, или совсем руби концы.

У NXP и ST как то гибче. И защитишься, и сам себе не мешаешь, и отступать, если чо, есть куда.

Ну и до кучи, самый неочевидный вопрос автору темы - почему TI ? :))
Ведь одни из самых дорогих, если в серию. И из весьма дефицитных, если штучно.

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Пн май 07, 2012 07:06:57
coredumped
Сорри, отлучился на пару дней.
Насчет, где про это написано, уже указал Satyr (http://www.ti.com/lit/an/spma011/spma011.pdf страница 4)
Вот насчет отключения доступа по JTAG/SWD я как-то не подумал...
Почему TI - не хочется еще с кучей семейств связываться. C TI все понятно, налажена поставка камешков, есть разработки итп... Еще используем Atmel SAM9G20 - но это уже другая "весовая категория" :)
С STM принципиально не буду иметь дело - наелся их г..на еще с STB камнями. Дока ужасная, саппорт (за деньги!) еще хуже. Правда это было уже давно, но общение с их саппортом навсегда отбило желание ... Но это отдельная история.

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Пн май 07, 2012 08:34:59
Satyr
Так то с STM32 ничего общего не имеет. Документация вполне терпимая.
У TI с кортексами как то дорого, недодуманно (хотя есть примеры и обратные - у них самый лучший, полностью 16550 воместимый UART с FIFO), мееедленно (ну почему у всех было 72Мгц, у них 50?) и т.д. и т.п.

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Вт май 08, 2012 09:29:35
coredumped
Satyr писал(а): Ну и до кучи, самый неочевидный вопрос автору темы - почему TI ? :))
Ведь одни из самых дорогих, если в серию. И из весьма дефицитных, если штучно.
Насчет цен, тут можно поспорить.
Возьмем LM3S9B95 - я его сейчас использую.
LM3S9B95 80MHz / 256K flash / 96K RAM / Ethernet100 / QFP100 - цена по которой я покупаю $9.5
Самый близкий аналог ST
ST32F107VC 72MHz / 256K flash / 64K RAM / Ethernet100 / QFP100 - самая маленькая цена, которую я нашел $5.5
Но, у ST Ethernet c RMII интерфейсом, сл-но нужен внешний PHY а это еще $3-4 итого получаем 5.5 + 3 = 8.5
Получается $1 экономии, но меньше RAM на 32К (очень критично для меня) За мегагерцы спорить уже не будем. При этом в ROM Stellaris лежит ихняя либа с дровами и кучей вкусностей, что реально уменьшает размер поедания флешки.
Вопщем сравнение не в пользу ST (для моего проекта!)
Интересен камешек STM32F417 - тут да, не спорю и цена вполне и производительность вроде как 168МГц.

PS:А в целом, я уже убедился давно, что цены на аналогичные камни у разных вендоров приблизительно одинаковы. Не надо смотреть на голый камень, а посчитайте цену проекта с его использованием - и цены окажутся практически одинаковыми.

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Вт май 08, 2012 09:38:05
Satyr
PHY, если мне не изменяет память, ~1$ стоит.
Ну, не в розницу за 1шт ессно.
Да что там, насколько помню, я в розницу рилтек какой то за ~50р брал

Ну, если надо очень мелкую плату, где чисто езернет и ничо нет - там TI со встроенным PHY в тему. Сам именно изза этого на lm3s6432 делал.
Но это так - узкоспециализированный случай

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Вт май 08, 2012 20:39:26
Satyr
coredumped писал(а): Возьмем LM3S9B95 - я его сейчас использую.
LM3S9B95 80MHz / 256K flash / 96K RAM / Ethernet100 / QFP100 - цена по которой я покупаю $9.5
Самый близкий аналог ST
ST32F107VC 72MHz / 256K flash / 64K RAM / Ethernet100 / QFP100 - самая маленькая цена, которую я нашел $5.5
Но, у ST Ethernet c RMII интерфейсом, сл-но нужен внешний PHY а это еще $3-4 итого получаем 5.5 + 3 = 8.5
Получается $1 экономии, но меньше RAM на 32К (очень критично для меня)
не имеет смысла смотреть 1xx если нужно чтото хоть сколько то жирное.


Далее, так сказать, только факты без комментариев -))

STM32F207VC 5.32$ @5000 256kb флеша, 132kb срама (т.е. на 36кб БОЛЬШЕ ТИ) и еще на 40Мхз шустрее
LAN8720A 0.82$ @5000 - 100Base-T RMI PHY
В сумме 6.14$

LM3S9B95-IQC80 - 9.86$ @5000

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Ср май 09, 2012 08:46:05
Satyr
Позвони в МТ-систем, если для дела, скорее всего они тебе это все барахло просто предложат как семплы подъехать забрать из наличия как подарок.

Re: ARM Cortex-M3 защита flash от копирования-дублирования

Добавлено: Ср май 09, 2012 09:35:23
coredumped
1. ВСЕХ С ДНЕМ ПОБЕДЫ!!!
Satyr писал(а): Далее, так сказать, только факты без комментариев -))

STM32F207VC 5.32$ @5000 256kb флеша, 132kb срама (т.е. на 36кб БОЛЬШЕ ТИ) и еще на 40Мхз шустрее LAN8720A 0.82$ @5000 - 100Base-T RMI PHY
В сумме 6.14$
LM3S9B95-IQC80 - 9.86$ @5000
Да, аргумент убедительный :)) Пожалуй надо будет позвонить поставщикам после праздника.