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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

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

Сообщение coredumped »

Предлагаю обсудить методы защиты содержимого flash от копирования. Я тему сам только начинаю изучать-разрабатывать, тк раньше не заморачивался. В моих изделиях используются FPGA, их и защищаю (есть методы). Сейчас продумываю новый проект, там вся надежда только на возможности Cortex-M3 от TI.
А проблема имеет место быть. Защиту flash обеспечить проблематично, тк биты защиты ставятся на целый сектор. Все выглядит неплохо, есть атрибут execute only - именно этот вариант делает считывание сектора невозможным, но одно огромное НО! После установления такого атрибута чтение содержимого сектора даже самой программой становится невозможным. Самая большаая проблема, по словам TI, в том, что нет на сегодняшний день компиляторов (опять-же с их слов), способных разместить только выполняемый код и константы в разных сегментах flash, что делает применеие атрибута execute only невозможным. Единственное, что приходит на ум - написание кода на асемблере, с явной адресацией, однако это - каменный топор. Может я чета не правильно понял в фирменных доках, и солюшн имеется?
Предлагаю обсудить данную проблему. Я если чего нарою, сразу отпишусь.
Все будет только лучше, в крайнем случае - хуже.
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

Что-то как-то подозрительно. Где те слова TI на которые вы ссылаетесь? Ссылку на документ и место в документе.

А как на счёт разбиения на сегменты кода и данных? gcc точно умеет. Не исключено, конечно, что где-то ещё напильником не до точили до нужной кондиции. Да же winavr такое умеет и статистику при компиляции показывает.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

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

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

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

Конкретно на AT91SAM7Sxxx, LPC24xx, LPC17xx, STM32F2xx пробовал. Вполне себе функционально.
Последний раз редактировалось Satyr Пт май 04, 2012 12:53:56, всего редактировалось 1 раз.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

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

Ну и главное - как это связано с защитой флеша от дублирования ???
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение 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, насколько помню, записью неких магических чисел в опр. регистр включается.
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

Satyr писал(а):У Thumb2 с этим трудности. нельзя там сделать большой сегмент данных и большой сегмент кода отдельно.
Если посмотреть мапы линкера - то он чередует небольшие сегменты кода и данных. И этому есть объяснение.
Satyr, а где про эту особенность можно почитать?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение 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.

и всё
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

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

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

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

Так что пусть не сами данные, но их адреса должны валяться где то поблизости. Но чтоб было меньше инструкций загрузки, ессно лучше, чтоб в радиусе 4кб лежали сами данные, а не их адрес где то далеко.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

Почитал еще раз - как то в ТИ неподумавши.
Или ничего толком не защищай, или совсем руби концы.

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

Ну и до кучи, самый неочевидный вопрос автору темы - почему TI ? :))
Ведь одни из самых дорогих, если в серию. И из весьма дефицитных, если штучно.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

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

Сообщение coredumped »

Сорри, отлучился на пару дней.
Насчет, где про это написано, уже указал Satyr (http://www.ti.com/lit/an/spma011/spma011.pdf страница 4)
Вот насчет отключения доступа по JTAG/SWD я как-то не подумал...
Почему TI - не хочется еще с кучей семейств связываться. C TI все понятно, налажена поставка камешков, есть разработки итп... Еще используем Atmel SAM9G20 - но это уже другая "весовая категория" :)
С STM принципиально не буду иметь дело - наелся их г..на еще с STB камнями. Дока ужасная, саппорт (за деньги!) еще хуже. Правда это было уже давно, но общение с их саппортом навсегда отбило желание ... Но это отдельная история.
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

Так то с STM32 ничего общего не имеет. Документация вполне терпимая.
У TI с кортексами как то дорого, недодуманно (хотя есть примеры и обратные - у них самый лучший, полностью 16550 воместимый UART с FIFO), мееедленно (ну почему у всех было 72Мгц, у них 50?) и т.д. и т.п.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

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

Сообщение 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:А в целом, я уже убедился давно, что цены на аналогичные камни у разных вендоров приблизительно одинаковы. Не надо смотреть на голый камень, а посчитайте цену проекта с его использованием - и цены окажутся практически одинаковыми.
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

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

Ну, если надо очень мелкую плату, где чисто езернет и ничо нет - там TI со встроенным PHY в тему. Сам именно изза этого на lm3s6432 делал.
Но это так - узкоспециализированный случай
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение 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
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

Позвони в МТ-систем, если для дела, скорее всего они тебе это все барахло просто предложат как семплы подъехать забрать из наличия как подарок.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

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

Сообщение 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
Да, аргумент убедительный :)) Пожалуй надо будет позвонить поставщикам после праздника.
Все будет только лучше, в крайнем случае - хуже.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»