Я от всех этих lock-битов и т.п. (как бы они у PIC не назывались) далёк.
Но вот рассказываю как на духу и потом вопрос задам.
У меня есть три “девайса” на микроконтроллерах PIC.
Истинные китайцы, сборка и зашивание прошивки.
У одного “накрылся” микроконтроллер, я купил новый, поменял и решил прошить его. А где взять прошивку? Так у меня же еще два есть!
Беру один, подключаю к программатору и нажимаю “считать прошивку”. Что-то считывается, я пробую загрузить это “что-то” в новый микроконтроллер и по факту получаю - два не работающих устройства!
Да ну не может быть - подумал я, и решил считать прошивку с последнего третьего. Получилась такая же ерунда.
Что за ерунда?
Неужели имеются такие защитные биты, что не только запрещают считывание прошивки, но и портят ее внутри микроконтроллера при попытке считывания? Или мне просто не повезло (два раза)?
Штош. Основной закон органической химии гласит “Если смешать килограмм варенья и килограмм говна, получицца 2 килограмма говна”. С Пиками, видимо, это тоже проходит.
Это у АVR “fuses” (фьюзы), а у пиков “Configuration Bits”.
и выставляются они прям в исходнике, и шьются вместе с хексом.
эт если я ничего не путаю…давно было.
// Code Protection bit:
// CP0 = ON Block 0 (000800-001FFFh) is code-protected
// CP0 = OFF Block 0 (000800-001FFFh) is not code-protected
//
#pragma config CP0 = OFF
// Code Protection bit:
// CP1 = ON Block 1 (002000-003FFFh) is code-protected
// CP1 = OFF Block 1 (002000-003FFFh) is not code-protected
//
#pragma config CP1 = OFF
// Code Protection bit:
// CP2 = ON Block 2 (004000-005FFFh) is code-protected
// CP2 = OFF Block 2 (004000-005FFFh) is not code-protected
//
#pragma config CP2 = OFF
// Code Protection bit:
// CP3 = ON Block 3 (006000-007FFFh) is code-protected
// CP3 = OFF Block 3 (006000-007FFFh) is not code-protected
//
#pragma config CP3 = OFF
// Boot Block Code Protection bit:
// CPB = ON Boot block (000000-0007FFh) is code-protected
// CPB = OFF Boot block (000000-0007FFh) is not code-protected
//
#pragma config CPB = OFF
Было что то подобное и на 128 меге у меня. Как это делал производитель так тогда и не понял, но 2 девайса тоже ушатал, хотя программатор был Phyton и читал в родной кровати сдув чип с платы. А пикушкаи точно лочатся на стадии компилрования и прошивки.
Кажись, это было во младших моделях. Сейчас просто счётчик адреса в содержимом, ЕМНИП. Но, ведь это и не важно. Важно то, что не сосчитаешь. Хотя, в старинных ПИК-ах были какие то выверты, но затем это прикрыли. Опять таки. За большие деньги, думаю, возможно всё. Только, как правило, игра не стоит свечь.)
Нет, я не совсем понял вопрос. Защитные биты имеются, по аналогии с AVR, но не более того. Испортить прошивку чтением нельзя. По крайней мере я с таким не сталкивался.
ЗЫ: После стирания - получились отличные микроконтроллеры, то есть (не без сомнений) наверное можно отмести вариант “специально изготовили такие чипы”.
В этих МК используется высоковольтное программирование. Т.е., на RESET подаётся 12,5 вольт. Даже при считывании. Как бы, теоретически можно что то придумать, с тем что бы фиксировать как то эту подачу. Думаю, для китайцев это не проблема.)