СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №6/2012

В ВЕДЕНИЕ Для защиты флэш памяти микро контроллера от несанкционирован ного доступа требуется обнулить ре гистры блокировки чтения и запи си/стирания. Стандартным способом такая запись данных может быть ор ганизована либо из программы поль зователя (что достаточно сложно), либо с помощью интерфейсов JTAG или C2 (в зависимости от типа мик роконтроллера), что ещё сложнее, т.к. для этого требуется манипуляция сигналами этих интерфейсов. Воз можность защиты флэш памяти, к сожалению, не предусмотрена в про граммном обеспечении (IDE) USB DEBUG адаптера, с помощью которо го программируются микроконтрол леры. Для защиты памяти программ от несанкционированного доступа в микроконтроллерах C8051FXXX фирмы Silicon Labs, совместимых с I8051, предусмотрены специальные регистры блокировки. В одних мик роконтроллерах, как правило, прос тых и программируемых с помощью интерфейса C2, существует единст венный регистр блокировки чтения и записи/стирания, который распо ложен в старших адресах памяти программ. Например, в микрокон троллере C8051F321 [1] с максималь ным объёмом программной памя ти 16 Кб (3fffh байт) такой регистр блокировки расположен по адресу 3dffh. В более сложных микрокон троллерах, программируемых с по мощью интерфейса JTAG, пред усмотрено два подобных регистра: один – для блокировки чтения, вто рой – для блокировки записи/сти рания. Адреса этих регистров также ПРОГРАММИРОВАНИЕ 68 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 6 2012 расположены в старших адресах памяти программ и следуют один за другим. Например, в микроконтрол лере C8051F067 [2] с максимальным объёмом памяти 32 Кб (7fffh байт) адрес регистра блокировки запи си/стирания равен 7ffeh, а регистр блокировки чтения расположен по адресу 7fffh. Если требуется защитить от несанк ционированного доступа одни сек торы памяти программ, оставив неза щищёнными другие, то в биты, соот ветствующие защищаемым секторам, должны быть записаны нули (после полного стирания памяти программ во всех битах этих регистров записа ны единицы). Если же требуется защи тить всю память программ, то регист ры защиты должны быть полностью обнулены. Такая защита памяти про грамм является оптимальной, и даль нейшее изложение посвящено имен но ей. Для обнуления регистров защиты су ществует два официальных способа, приведённых в [3] и в справочном листке на конкретный микроконтрол лер. Первый способ – из программы пользователя, второй – с помощью либо интерфейса C2, либо JTAG [4], в зависимости от того, по какому интер фейсу программируется микрокон троллер. Первый способ защиты, на взгляд автора, неприемлем, поскольку про грамма пользователя должна содер жать только тот код, который требу ется для выполнения её задачи, а до полнительная подпрограмма защиты не только отнимает ресурсы памяти основной программы, но и является потенциально опасным кодом. Кро ме того, такая сложная подпрограм ма защиты требует определённого времени на разработку, а решение о защите той или иной програм мы должен принимать сам пользова тель. Поэтому способ защиты должен быть не связанным с пользовательс кой программой и применяться при необходимости. Второй способ за щиты [3, 4], на взгляд автора, ещё сложнее. В возможностях программного обеспечения (IDE) для USB DEBUG адаптера [5], применяемого, в част ности, для программирования мик роконтроллеров, защита памяти программ микроконтроллера, к сожалению, также не предусмотре на. В то же время защитить память программ от несанкционирован ного доступа иногда просто необхо димо. Таким образом, появилась задача об нулить регистры защиты, но не путём записи данных (в данном случае ну лей). Как оказалось, сделать это доволь но легко. Основная идея заключается в сле дующем. Если адрес регистра защи ты известен (например, у микрокон троллера C8051F321 это 3dffh), а байт данных равен нулю, то путём записи программы, состоящей из одного оператора NOP (код операции кото рого равен 00h), в программную па мять микроконтроллера с адреса 3dffh регистр защиты можно обну лить. Несмотря на то что программа состоит всего из одного (нулевого) байта, она может быть запрограм мирована в микроконтроллер стан дартным способом с помощью USB DEBUG адаптера. Но сможет ли такая программа защищать память микро контроллера от несанкционирован ного доступа? П РОГРАММЫ ЗАЩИТЫ ПАМЯТИ МИКРОКОНТРОЛЛЕРОВ C8051F321 И C8051F067 Наиболее подходящим языком про граммирования для написания такой программы, по мнениюавтора, являет ся ассемблер. Далее приведены две программы, написанные на ассембле Способ защиты программ в микроконтроллерах C8051FXXX фирмы Silicon Labs Алексей Кузьминов (Москва) В статье описывается простой способ защиты флэш памяти микроконтроллеров от несанкционированного доступа, заключающийся в загрузке программы по адресу регистра блокировки. Программа состоит из одного двух байт и может быть записана в микроконтроллер стандартным способом с помощью USB DEBUG адаптера. В качестве примера приводятся тексты и результаты работы двух программ, предназначенных для защиты памяти микроконтроллеров C8051F321 и C8051F067. © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy