|
вопрос по fuse |
|
|
|
Dec 20 2007, 11:50
|

Частый гость
 
Группа: Участник
Сообщений: 106
Регистрация: 12-05-05
Пользователь №: 4 946

|
Есть ли возможность провить fuse прямо с программы тут прикол в том что давичи я отдовал партию своих приборов и перед отдачей решил проверить не оставил ли я доступ к прошивке из 50 устройст 2 оказались полность с открытой прошивкой ( а она денег стоит ) так вот можна ли изменять fuse на лету или хотябы прочитать их конкретно интересуют Lock и BootLock
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 20)
|
Dec 20 2007, 12:02
|

Частый гость
 
Группа: Участник
Сообщений: 106
Регистрация: 12-05-05
Пользователь №: 4 946

|
Цитата(vesago @ Dec 20 2007, 15:54)  Никак нельзя. Вот по этому я и полюбил консольные программаторы. Прописал в батнике нужные фузы и только тискаешь на батник. ВО БЛИН ПОПАЛ так можно и зароботка лишится
|
|
|
|
|
Dec 20 2007, 15:03
|
Тутэйшы
   
Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263

|
Гм, действительно. Век живи - век учись... Код #define _SPM_GET_LOCKBITS() \ __AddrToZByteToSPMCR_LPM((void __flash*)0x0001, 0x09)
#define _SPM_GET_FUSEBITS() \ __AddrToZByteToSPMCR_LPM((void __flash*)0x0000, 0x09)
|
|
|
|
Guest_Цыкетчик_*
|
Sep 24 2008, 10:02
|
Guests

|
Цитата(a123-flex @ Dec 23 2007, 00:17)  может подскажете еще форму для 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-биты - разные вещи.
|
|
|
|
Guest_Цыкетчик_*
|
Sep 24 2008, 13:39
|
Guests

|
Цитата(Цыкетчик @ Sep 24 2008, 14:02)  Так что если Вы при прошивке девайса не запрограммировали LOCK-биты LB1 и LB2 и отдали девайс заказчику, то Ваша прога залочить сама себя от считывания программатором уже не сможет и заказчику ничто не помешает считать Вашу прошивку программатором Хотя можно сделать вот что. Прога при запуске считывает LOCK-биты LB1 и LB2. И если они не запрограммированы (не равны '0') стирают самую себя во FLASH. Поэтому если заказчик считает прошивку, то он увидет только $FFFF во всех ячейках
|
|
|
|
|
Sep 24 2008, 14:07
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 16-04-05
Из: СПб
Пользователь №: 4 208

|
Цитата(Цыкетчик @ Sep 24 2008, 17:39)  Хотя можно сделать вот что. Прога при запуске считывает LOCK-биты LB1 и LB2. И если они не запрограммированы (не равны '0') стирают самую себя во FLASH. Поэтому если заказчик считает прошивку, то он увидет только $FFFF во всех ячейках Ну, стирать-то не обязательно. После прошивки должна следовать проверка функционирования изделия. Достаточно после анализа LOCK бит чем-нибудь этот факт проиндицировать и отказаться правильно работать.
|
|
|
|
Guest_Цыкетчик_*
|
Sep 24 2008, 14:23
|
Guests

|
Цитата(defunct @ Sep 24 2008, 17:59)  Какая-то глобальная нестыковка получается. Есть команды залочивания, но почему-то нельзя ими пользователься. Уж будьте добры, лучше цитаты из ДШ приводите. ;> Почему же нестыковка? Просто LOCK-биты бывают двух "типов": 1.Для блокировки чтения командой LPM и/или записи командой SPM ячеек FLASH самим процессором: BLB11,BLB10,BLB01,BLB00 2.Для блокировки чтения и/или записи ячеек FLASH внешним девайсом (программатором): LB1, LB2 LOCK-биты первого типа можно как читать, так и изменять программно. Причём изменять можно только с '1' на '0'. А LOCK-биты второго типа программно можно только читать. Что непонятного то?  Цитата(bill_vs @ Sep 24 2008, 18:07)  Ну, стирать-то не обязательно. После прошивки должна следовать проверка функционирования изделия. Достаточно после анализа LOCK бит чем-нибудь этот факт проиндицировать и отказаться правильно работать. Но тогда что помешает юзеру взять и считать эту прошивку программатором? Где же тут тогда защита прошивки от "постороннего глазу"?  Цитата(defunct @ Sep 24 2008, 18:14)  вообще достаточно автоматизировать процесс прошивки. bat'ник которым фузы, локи, и бутлоадер прошиваются одновременно. А что помешает продвинутому юзверю взять..Да и зарЭмить строчку в BAT-нике , в которой Вы устанавливаете LOCK-биты?
Сообщение отредактировал Цыкетчик - Sep 24 2008, 14:19
|
|
|
|
|
Sep 24 2008, 14:43
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Цыкетчик @ Sep 24 2008, 17:23)  А что помешает продвинутому юзверю взять..Да и зарЭмить строчку в BAT-нике , в которой Вы устанавливаете LOCK-биты?  Если это сотрудник - его вероятно уволят.. А если не сотрудник, то простите у какого такого продвинутого юзверя будет доступ к этому батнику? Продвинутый юзер может заливать по пользовательскому интерфесу (232 / 485 / Eth) нужную ему пользовательскую программу в уже подготовленный и залоченный девайс. Цитата Что непонятного то? Быстро читал. Понял как программно лочить локи можно и в то же время программно нельзя лочить локи. Сейчас уже ясно что Вы имели в виду.
|
|
|
|
|
Sep 24 2008, 15:05
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 16-04-05
Из: СПб
Пользователь №: 4 208

|
Цитата(Цыкетчик @ Sep 24 2008, 18:23)  Но тогда что помешает юзеру взять и считать эту прошивку программатором?
Где же тут тогда защита прошивки от "постороннего глазу"? А у Вас "юзер" сам прошивает? Или все-таки Вы или Ваши сотрудники? Если после прошивки изделие проверяется, то не "залоченое" оно не попадёт к пользователю.
|
|
|
|
|
Sep 24 2008, 15:07
|
Гуру
     
Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446

|
Цитата так вот можна ли изменять fuse на лету или хотябы прочитать Да без проблем. Используйте студию и програматор под нее. В исходном коде пишите ну например: FUSES = { .low = (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0), .high = (FUSE_SPIEN & FUSE_BODLEVEL1 & FUSE_BODLEVEL0), .extended = EFUSE_DEFAULT, }; LOCKBITS = (LB_MODE_1); Это чтоб при прошивке сразу фузы правильно ставились. Ну а потом ручками в панели управления программатором можно и LB_MODE_3 установить.
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|
|
|
|
Guest_Цыкетчик_*
|
Sep 24 2008, 15:50
|
Guests

|
Цитата(bill_vs @ Sep 24 2008, 19:05)  А у Вас "юзер" сам прошивает? Или все-таки Вы или Ваши сотрудники? Вот что сказал топикстартер: Цитата(MicronSys @ Dec 20 2007, 15:50)  тут прикол в том что давичи я отдовал партию своих приборов и перед отдачей решил проверить не оставил ли я доступ к прошивке из 50 устройст 2 оказались полность с открытой прошивкой ( а она денег стоит ) Цитата(bill_vs @ Sep 24 2008, 19:05)  Если после прошивки изделие проверяется, то не "залоченое" оно не попадёт к пользователю. Никогда не говорите "никогда". Всякое может быть. Прошивщики могут банально "забыть" запрограммировать LOCK-биты. Да просто помеха пробежала во время программирования LOCK-битов. Мало ли что? Лучше всё чтобы при подаче питания на процессор прога проверяла "а точно ли я залочена?" И если нет - стирать нах всю важную часть проги. Оставляем только индикацию "юзверь! Я не залочена. Перепрошей меня и залочь" Цитата(smk @ Sep 24 2008, 19:07)  Да без проблем. Используйте студию и програматор под нее. В исходном коде пишите ну например... Разве программаторы научились понимать СИшные исходники? Простите, не знал Цитата(smk @ Sep 24 2008, 19:07)  Ну а потом ручками в панели управления программатором можно и LB_MODE_3 установить. Человек спрашивал: Цитата(MicronSys @ Dec 20 2007, 15:50)  Есть ли возможность провить fuse прямо с программы Т.е. чтоб сама прога в процессоре правила LOCK-биты, а Вы ему "ручками" советуете. Из-за того что "ручками" вышло то, о чём топикстартер написал: Цитата(MicronSys @ Dec 20 2007, 15:50)  тут прикол в том что давичи я отдовал партию своих приборов и перед отдачей решил проверить не оставил ли я доступ к прошивке из 50 устройст 2 оказались полность с открытой прошивкой
Сообщение отредактировал Цыкетчик - Sep 24 2008, 15:54
|
|
|
|
|
Sep 24 2008, 16:43
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 16-04-05
Из: СПб
Пользователь №: 4 208

|
Цитата(Цыкетчик @ Sep 24 2008, 19:50)  Вот что сказал топикстартер: Никогда не говорите "никогда". Всякое может быть. Прошивщики могут банально "забыть" запрограммировать LOCK-биты. Да просто помеха пробежала во время программирования LOCK-битов. Мало ли что? Лучше всё чтобы при подаче питания на процессор прога проверяла "а точно ли я залочена?" И если нет - стирать нах всю важную часть проги. Либо я плохо написал, либо Вы невнимательно читаете. На Ваше Цитата(Цыкетчик @ Sep 24 2008, 17:39)  Хотя можно сделать вот что. Прога при запуске считывает LOCK-биты LB1 и LB2. И если они не запрограммированы (не равны '0') стирают самую себя во FLASH. Поэтому если заказчик считает прошивку, то он увидет только $FFFF во всех ячейках я ответил Цитата(bill_vs @ Sep 24 2008, 18:07)  Ну, стирать-то не обязательно. После прошивки должна следовать проверка функционирования изделия. Достаточно после анализа LOCK бит чем-нибудь этот факт проиндицировать и отказаться правильно работать. Объясняю подробнее - рабочая программа в изделии считав LOCK-биты при старте, не стирает себя, а даёт знать об этом Вам.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|