Может ли Arduino UNO постоянно хранить код?

Я новичок в Arduino и хотел бы знать, могу ли я сделать Arduino постоянным контроллером? и не могли бы вы помочь мне с более дешевой альтернативой? Я также хотел узнать о "предохранителе", я где-то читал, что я могу защитить код от кого-то еще, кто хочет его использовать, используя FUSE.

Большое спасибо за помощь :)

, 👍1

Обсуждение

привет, спасибо, Крис, ценю вашу помощь, так что в основном я кодирую для Arduino, чтобы использовать его в коммерческом продукте, но, поскольку я действительно новичок в этом idk, если Arduino хранит код навсегда. во-вторых, я хочу в значительной степени защитить код от копирования., @Harsh Vardhan Sinha

Ключевыми словами, которые вы ищете, являются «Биты блокировки AVR»., @Edgar Bonet


1 ответ


Лучший ответ:

3

не знаю, хранит ли Arduino код вечно

Код сохраняется во флэш-памяти, которая является энергонезависимой. Он не теряет своего содержимого во время циклов питания. Кроме того, если посмотреть на измерение времени, оно удерживает код в течение очень долгого времени, хотя и не навсегда. техническое описание Atmega328p (микроконтроллер в Arduino Uno или Nano) гласит:

Результаты проверки надежности показывают, что прогнозируемая частота отказов при хранении данных намного меньше 1 миллионной доли в течение 20 лет при 85 °C или 100 лет при 25 °C.

Так за 20 лет при температуре 85°C можно получить 0,0001% потери данных во флеш-памяти. При нормальной комнатной температуре вы можете получить эту потерю за 100 лет. Это значительно дольше, чем срок службы большинства электронных продуктов.

Я также хотел узнать о "предохранителе", я где-то читал, что с помощью FUSE можно защитить код от посторонних лиц, которые хотят его использовать.

Существуют разные способы и уровни защиты. Хотя это более сложная тема, которой вы должны заняться, когда ваш продукт будет готов иначе. Об этом есть множество ресурсов в сети. В первую очередь нужно смотреть техпаспорт используемого микроконтроллера. Первая часть может состоять в том, чтобы использовать не стандартный загрузчик Arduino, а свой собственный. И тогда вы можете установить 2 предохранителя для получения разных уровней защиты (защита от записи, защита от чтения), которые заблокируют 99% людей. Этот вопрос по Electrical SE также может вас заинтересовать. Вы можете найти много ресурсов в Интернете, выполнив поиск по запросу "Защита кода Arduino" или "Защита кода AVR" (если вы используете микроконтроллер на основе AVR, например, с Arduino Uno/Nano/Mega)


Кроме того, я также хотел бы задать вам вопрос, действительно ли ваш код настолько новый и оригинальный, что вам нужно защищать его от такого чтения? Вполне может быть, что это ваш случай. Но с моей точки зрения вероятность очень мала. Я не могу сказать о своих собственных кодах, что они стоят хлопот с защитой. И это также зависит от того, что вы действительно хотите предотвратить таким образом.

Для контекста: когда вы программируете Arduino (или любой микроконтроллер) с помощью программы C/C++, текст программы не сохраняется в Arduino. Вместо этого код сначала преобразуется в ассемблерный код, а затем компилируется в двоичный машинный код. На этом уровне отсутствуют все прекрасные концепции языков более высокого уровня, поэтому они выполняются несколькими функциями более низкого уровня (например, циклы — это переходы с условиями). Злоумышленник может прочитать машинный код с микроконтроллера. Самая большая угроза здесь в том, что он просто скопирует его на новый микроконтроллер.

Если он хочет получить "код" из него он вызовет дизассемблер, который преобразует машинный код обратно в язык ассемблера. Но в этот момент все символы (имена переменных, функций, ...) теряются, потому что они не сохраняются в исходном машинном коде с самого начала. Читать и понимать такой код очень сложно, особенно если ваш код достаточно большой и сложный. В большинстве случаев злоумышленнику будет проще просто перепроектировать ваш код на основе поведения исходного микроконтроллера.

В конце концов, вы не можете помешать людям создавать контрафактные продукты. Для этого и нужен патент.

Это не означает, что вы не должны использовать защиту кода. Просто проведите реалистичную оценку безопасности, а затем решите, стоит ли это хлопот.

,

Верно. Защита вашего кода битами блокировки никоим образом не может предотвратить копирование вашего кода кем-то вроде меня. Мне не нужно *видеть* ваш код, чтобы скопировать его. Если вы действительно считаете, что ваша идея настолько уникальна, запатентуйте ее. В противном случае биты блокировки подобны запиранию дверей, чтобы предотвратить вора, который вместо этого просто входит через окно. Давным-давно способ заработать на коде заключался в том, чтобы держать его в секрете и не позволять никому получить его бесплатно. Это уже не очень хорошая бизнес-модель. Это гарантирует, что вы не будете продавать долго, потому что эти продукты первыми получают бесплатные версии., @Delta_G

Я просто знаком с этой средой, поэтому я думаю, что был слишком взволнован, но то, как вы, ребята, объяснили (chrisl и Delta_G), я действительно ценю это. Спасибо!!!, @Harsh Vardhan Sinha