Перейти к содержанию
    

Есть ли возможность провить fuse прямо с программы

тут прикол в том что давичи я отдовал партию своих приборов

и перед отдачей решил проверить не оставил ли я доступ к прошивке

из 50 устройст 2 оказались полность с открытой прошивкой ( а она денег стоит )

 

так вот можна ли изменять fuse на лету или хотябы прочитать их

конкретно интересуют Lock и BootLock :help:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никак нельзя. Вот по этому я и полюбил консольные программаторы. Прописал в батнике нужные фузы и только тискаешь на батник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никак нельзя. Вот по этому я и полюбил консольные программаторы. Прописал в батнике нужные фузы и только тискаешь на батник.

 

ВО БЛИН ПОПАЛ

так можно и зароботка лишится

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю, маловероятно, что юзер будет пытаться слить прошивку дабы клонировать железку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ВО БЛИН ПОПАЛ

так можно и зароботка лишится

прочитать можно, в IAR в файле <intrinsics.h> есть функции, а где-то в этом форуме была подобная тема. Если не найдете попробую поискать в сохраненных. Пробовал читать, читалось :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гм, действительно. Век живи - век учись...

 

#define _SPM_GET_LOCKBITS()  \
  __AddrToZByteToSPMCR_LPM((void __flash*)0x0001, 0x09)

#define _SPM_GET_FUSEBITS()  \
  __AddrToZByteToSPMCR_LPM((void __flash*)0x0000, 0x09)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько помню про самопрограммиравание AVR, то fuse можно изменить. Гляньте первоисточники.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прочитать можно, в IAR в файле <intrinsics.h> есть функции, а где-то в этом форуме была подобная тема. Если не найдете попробую поискать в сохраненных. Пробовал читать, читалось :)

 

 

может подскажете еще форму для set_fuse_bits :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость Цыкетчик
может подскажете еще форму для set_fuse_bits :)

Такой нет. И быть не иожет. По определению. Поскольку в системе команд AVR есть команды программирования (т.е. изменения с '1' на '0') LOCK-битов: BLB11,BLB10,BLB01,BLB00 защиты секции программы и секции загрузчика (но нет команд "разлочивания", т.е. изменения LOCK-битов с '0' на '1'). Также нет команд изменения FUSE-битов. Также нет команд программирования / стирания LOCK-битов защиты от "считывания/записи программатором": LB1,LB2. Так что если Вы при прошивке девайса не запрограммировали LOCK-биты LB1 и LB2 и отдали девайс заказчику, то Ваша прога залочить сама себя от считывания программатором уже не сможет и заказчику ничто не помешает считать Вашу прошивку программатором

 

P.S. Для тех кто не в курсе LOCK- и FUSE-биты - разные вещи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость Цыкетчик
Так что если Вы при прошивке девайса не запрограммировали LOCK-биты LB1 и LB2 и отдали девайс заказчику, то Ваша прога залочить сама себя от считывания программатором уже не сможет и заказчику ничто не помешает считать Вашу прошивку программатором

Хотя можно сделать вот что. Прога при запуске считывает LOCK-биты LB1 и LB2. И если они не запрограммированы (не равны '0') стирают самую себя во FLASH. Поэтому если заказчик считает прошивку, то он увидет только $FFFF во всех ячейках

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поскольку в системе команд AVR есть команды программирования (т.е. изменения с '1' на '0') LOCK-битов: BLB11,BLB10,BLB01,BLB00 защиты секции программы и секции загрузчика (но нет команд "разлочивания", т.е. изменения LOCK-битов с '0' на '1').

 

 

.....

Так что если Вы при прошивке девайса не запрограммировали LOCK-биты LB1 и LB2 и отдали девайс заказчику, то Ваша прога залочить сама себя от считывания программатором уже не сможет и заказчику ничто не помешает считать Вашу прошивку программатором

Какая-то глобальная нестыковка получается.

Есть команды залочивания, но почему-то нельзя ими пользователься.

Уж будьте добры, лучше цитаты из ДШ приводите. ;>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотя можно сделать вот что. Прога при запуске считывает LOCK-биты LB1 и LB2. И если они не запрограммированы (не равны '0') стирают самую себя во FLASH. Поэтому если заказчик считает прошивку, то он увидет только $FFFF во всех ячейках

Ну, стирать-то не обязательно. После прошивки должна следовать проверка функционирования изделия. Достаточно после анализа LOCK бит чем-нибудь этот факт проиндицировать и отказаться правильно работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, стирать-то не обязательно. После прошивки должна следовать проверка функционирования изделия. Достаточно после анализа LOCK бит чем-нибудь этот факт проиндицировать и отказаться правильно работать.

вообще достаточно автоматизировать процесс прошивки.

bat'ник которым фузы, локи, и бутлоадер прошиваются одновременно.

 

И не тратить флеш память на код чтения локов в программе. Для бутлоадера каждое слово флеш критично.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...