ARM Cortex-M3 защита flash от копирования-дублирования
- coredumped
- Опытный кот
- Сообщения: 838
- Зарегистрирован: Вт апр 12, 2011 18:38:19
- Откуда: с Земли
ARM Cortex-M3 защита flash от копирования-дублирования
Предлагаю обсудить методы защиты содержимого flash от копирования. Я тему сам только начинаю изучать-разрабатывать, тк раньше не заморачивался. В моих изделиях используются FPGA, их и защищаю (есть методы). Сейчас продумываю новый проект, там вся надежда только на возможности Cortex-M3 от TI.
А проблема имеет место быть. Защиту flash обеспечить проблематично, тк биты защиты ставятся на целый сектор. Все выглядит неплохо, есть атрибут execute only - именно этот вариант делает считывание сектора невозможным, но одно огромное НО! После установления такого атрибута чтение содержимого сектора даже самой программой становится невозможным. Самая большаая проблема, по словам TI, в том, что нет на сегодняшний день компиляторов (опять-же с их слов), способных разместить только выполняемый код и константы в разных сегментах flash, что делает применеие атрибута execute only невозможным. Единственное, что приходит на ум - написание кода на асемблере, с явной адресацией, однако это - каменный топор. Может я чета не правильно понял в фирменных доках, и солюшн имеется?
Предлагаю обсудить данную проблему. Я если чего нарою, сразу отпишусь.
А проблема имеет место быть. Защиту flash обеспечить проблематично, тк биты защиты ставятся на целый сектор. Все выглядит неплохо, есть атрибут execute only - именно этот вариант делает считывание сектора невозможным, но одно огромное НО! После установления такого атрибута чтение содержимого сектора даже самой программой становится невозможным. Самая большаая проблема, по словам TI, в том, что нет на сегодняшний день компиляторов (опять-же с их слов), способных разместить только выполняемый код и константы в разных сегментах flash, что делает применеие атрибута execute only невозможным. Единственное, что приходит на ум - написание кода на асемблере, с явной адресацией, однако это - каменный топор. Может я чета не правильно понял в фирменных доках, и солюшн имеется?
Предлагаю обсудить данную проблему. Я если чего нарою, сразу отпишусь.
Все будет только лучше, в крайнем случае - хуже.
- Реклама
Re: ARM Cortex-M3 защита flash от копирования-дублирования
Что-то как-то подозрительно. Где те слова TI на которые вы ссылаетесь? Ссылку на документ и место в документе.
А как на счёт разбиения на сегменты кода и данных? gcc точно умеет. Не исключено, конечно, что где-то ещё напильником не до точили до нужной кондиции. Да же winavr такое умеет и статистику при компиляции показывает.
А как на счёт разбиения на сегменты кода и данных? gcc точно умеет. Не исключено, конечно, что где-то ещё напильником не до точили до нужной кондиции. Да же winavr такое умеет и статистику при компиляции показывает.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: ARM Cortex-M3 защита flash от копирования-дублирования
Постановка вопроса неверная. Флеш находится не в ядре Cortex-M3, а снаружи.
Соотв. оставляем в покое Cortex-M3, переходим к обсуждению конкретных семейств МК
В каждом по своему.
И что и от кого защищаем ? Зачем 'execute only' и т.п. ? защита от внутренней угрозы или от слива прошивки снаружи, как показалось из названия темы ?
Так у всех (за всех не поручусь, но другого не видел) МК на АРМах есть средства защиты от считывания прошивки через интерфейсы отладки и программирования.
Конкретно на AT91SAM7Sxxx, LPC24xx, LPC17xx, STM32F2xx пробовал. Вполне себе функционально.
Соотв. оставляем в покое Cortex-M3, переходим к обсуждению конкретных семейств МК
В каждом по своему.
И что и от кого защищаем ? Зачем 'execute only' и т.п. ? защита от внутренней угрозы или от слива прошивки снаружи, как показалось из названия темы ?
Так у всех (за всех не поручусь, но другого не видел) МК на АРМах есть средства защиты от считывания прошивки через интерфейсы отладки и программирования.
Конкретно на AT91SAM7Sxxx, LPC24xx, LPC17xx, STM32F2xx пробовал. Вполне себе функционально.
Последний раз редактировалось Satyr Пт май 04, 2012 12:53:56, всего редактировалось 1 раз.
Re: ARM Cortex-M3 защита flash от копирования-дублирования
У Thumb2 с этим трудности. нельзя там сделать большой сегмент данных и большой сегмент кода отдельно.Kavka писал(а): А как на счёт разбиения на сегменты кода и данных? gcc точно умеет.
Если посмотреть мапы линкера - то он чередует небольшие сегменты кода и данных. И этому есть объяснение.
Ну и главное - как это связано с защитой флеша от дублирования ???
Re: ARM Cortex-M3 защита flash от копирования-дублирования
Вот, под рукой есть -))
#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, насколько помню, записью неких магических чисел в опр. регистр включается.
#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 от копирования-дублирования
Satyr, а где про эту особенность можно почитать?Satyr писал(а):У Thumb2 с этим трудности. нельзя там сделать большой сегмент данных и большой сегмент кода отдельно.
Если посмотреть мапы линкера - то он чередует небольшие сегменты кода и данных. И этому есть объяснение.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: ARM Cortex-M3 защита flash от копирования-дублирования
Насчет 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.
и всё
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 от копирования-дублирования
Thumb2 ISAKavka писал(а):Satyr, а где про эту особенность можно почитать?Satyr писал(а):У Thumb2 с этим трудности. нельзя там сделать большой сегмент данных и большой сегмент кода отдельно.
Если посмотреть мапы линкера - то он чередует небольшие сегменты кода и данных. И этому есть объяснение.
Напомню суть - в Thumb2 нельзя загрузить в регистр из непосредственно 32bit значение. Можно только +- 4095 и пару совсем изощренных чисел.
Соотв. нельзя в коде поставить в регистр дальний указатель. Можешь все те же +- 4095 от PC.
Хочешь загрузить 32 бит константу ? ОК, она должна быть быть где то в радиусе 4кб от тебя, грузишь по относительному адресу -)))
Так что пусть не сами данные, но их адреса должны валяться где то поблизости. Но чтоб было меньше инструкций загрузки, ессно лучше, чтоб в радиусе 4кб лежали сами данные, а не их адрес где то далеко.
Re: ARM Cortex-M3 защита flash от копирования-дублирования
Почитал еще раз - как то в ТИ неподумавши.
Или ничего толком не защищай, или совсем руби концы.
У NXP и ST как то гибче. И защитишься, и сам себе не мешаешь, и отступать, если чо, есть куда.
Ну и до кучи, самый неочевидный вопрос автору темы - почему TI ?
Ведь одни из самых дорогих, если в серию. И из весьма дефицитных, если штучно.
Или ничего толком не защищай, или совсем руби концы.
У NXP и ST как то гибче. И защитишься, и сам себе не мешаешь, и отступать, если чо, есть куда.
Ну и до кучи, самый неочевидный вопрос автору темы - почему TI ?
Ведь одни из самых дорогих, если в серию. И из весьма дефицитных, если штучно.
- coredumped
- Опытный кот
- Сообщения: 838
- Зарегистрирован: Вт апр 12, 2011 18:38:19
- Откуда: с Земли
Re: ARM Cortex-M3 защита flash от копирования-дублирования
Сорри, отлучился на пару дней.
Насчет, где про это написано, уже указал Satyr (http://www.ti.com/lit/an/spma011/spma011.pdf страница 4)
Вот насчет отключения доступа по JTAG/SWD я как-то не подумал...
Почему TI - не хочется еще с кучей семейств связываться. C TI все понятно, налажена поставка камешков, есть разработки итп... Еще используем Atmel SAM9G20 - но это уже другая "весовая категория"
С STM принципиально не буду иметь дело - наелся их г..на еще с STB камнями. Дока ужасная, саппорт (за деньги!) еще хуже. Правда это было уже давно, но общение с их саппортом навсегда отбило желание ... Но это отдельная история.
Насчет, где про это написано, уже указал 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 от копирования-дублирования
Так то с STM32 ничего общего не имеет. Документация вполне терпимая.
У TI с кортексами как то дорого, недодуманно (хотя есть примеры и обратные - у них самый лучший, полностью 16550 воместимый UART с FIFO), мееедленно (ну почему у всех было 72Мгц, у них 50?) и т.д. и т.п.
У TI с кортексами как то дорого, недодуманно (хотя есть примеры и обратные - у них самый лучший, полностью 16550 воместимый UART с FIFO), мееедленно (ну почему у всех было 72Мгц, у них 50?) и т.д. и т.п.
- coredumped
- Опытный кот
- Сообщения: 838
- Зарегистрирован: Вт апр 12, 2011 18:38:19
- Откуда: с Земли
Re: ARM Cortex-M3 защита flash от копирования-дублирования
Насчет цен, тут можно поспорить.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 от копирования-дублирования
PHY, если мне не изменяет память, ~1$ стоит.
Ну, не в розницу за 1шт ессно.
Да что там, насколько помню, я в розницу рилтек какой то за ~50р брал
Ну, если надо очень мелкую плату, где чисто езернет и ничо нет - там TI со встроенным PHY в тему. Сам именно изза этого на lm3s6432 делал.
Но это так - узкоспециализированный случай
Ну, не в розницу за 1шт ессно.
Да что там, насколько помню, я в розницу рилтек какой то за ~50р брал
Ну, если надо очень мелкую плату, где чисто езернет и ничо нет - там TI со встроенным PHY в тему. Сам именно изза этого на lm3s6432 делал.
Но это так - узкоспециализированный случай
Re: ARM Cortex-M3 защита flash от копирования-дублирования
не имеет смысла смотреть 1xx если нужно чтото хоть сколько то жирное.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К (очень критично для меня)
Далее, так сказать, только факты без комментариев -))
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 от копирования-дублирования
Позвони в МТ-систем, если для дела, скорее всего они тебе это все барахло просто предложат как семплы подъехать забрать из наличия как подарок.
- coredumped
- Опытный кот
- Сообщения: 838
- Зарегистрирован: Вт апр 12, 2011 18:38:19
- Откуда: с Земли
Re: ARM Cortex-M3 защита flash от копирования-дублирования
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
Все будет только лучше, в крайнем случае - хуже.


