Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: разблокировка Code Protection через IAP
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
toweroff
Есть устройство со связью с внешним миром через USB. Предполагается защищать содержимое флеши через CRP3.
Чтобы не городить огород с обновлением программы через канал передачи (в данном случае - USB), достаточно ли только во команде с РС стереть 0 сектор через IAP?
Конечно, программа станет нерабочей, но это неважно, главное - заработает JTAG, через него и зальется обновленный софт.
Если направление верное, то еще поврос такой - должен ли кусок кода, вызывающий функцию IAP, располагаться за пределами стираемого сектора? Ведь после стирания мне неважно правильное выполнение программы, главное, что содержимое по 0x1FC уничтожено
А если напрвление мысли неверное, то какое решение (максимально быстрое в плане выполнения) применимо в данном случае?
Спасибо!
zltigo
Цитата(toweroff @ Apr 21 2010, 09:40) *
главное - заработает JTAG

Ну и разблокируйте JTAG прямо по команде без каких-то непонятных танцев с бубнами.
Nixon
Нулевой сектор не стирается из IAP. Читайте сноски к описанию команд IAP.
toweroff
Цитата(zltigo @ Apr 21 2010, 11:56) *
Ну и разблокируйте JTAG прямо по команде без каких-то непонятных танцев с бубнами.

в этом случае ведь и чтение содержимого заработает? не совсем гуд, т.к. если кто-то случайно накопает подобную недокументированную (не для разработчиков) фичу, то прошивка сольется совершенно безболезненно sad.gif
а вот на будущее - подскажите, как это делается? может, есть смысл "закопать" окончательное включение JTAG через последовательность вызовов неких команд, чтобы не одной командой обойтись, а несколькими в определенногй последовательности, что, несомненно, резко уменьшит возможность случайной разблокировки

Цитата(Nixon @ Apr 21 2010, 12:09) *
Нулевой сектор не стирается из IAP. Читайте сноски к описанию команд IAP.

а ведь точно sad.gif
Цитата
This command is used to erase a sector or multiple sectors of on-chip Flash
memory. The boot sector can not be erased by this command. To erase a single
sector use the same "Start" and "End" sector numbers.
zltigo
Цитата(toweroff @ Apr 21 2010, 11:18) *
а ведь точно sad.gif

Нулевой сектор и bootsector совершенно разные вещи. Хотя нулевой и мапируется при работе на место boot. Короче, стирайте вообще всю Flash и не морочте голову.
Цитата(toweroff @ Apr 21 2010, 10:40) *
должен ли кусок кода, вызывающий функцию IAP

Какая разница IAP-у откуда он вызван будет.
Nixon
2 zltigo - действительно возможно стереть всю флешь из IAP? Буквально на днях, из-за отсутствия на ноуте СОМ-порта пытался стереть залоченный по CRP2 бутлоадер 2366 через юзерскую прошивку стирающую два сектора бутлоадера. Неудалось.
P.S. Правильно ли я понимаю, что сначала нужно правильно отремапить, а затем стирать нужный сектор?
zltigo
Цитата(Nixon @ Apr 21 2010, 11:49) *
2 zltigo - действительно возможно стереть всю флешь из IAP?

Да именно так и без всяких проблем.
Цитата
Буквально на днях, из-за отсутствия на ноуте СОМ-порта пытался стереть залоченный по CRP2 бутлоадер 2366 через юзерскую прошивку стирающую два сектора бутлоадера. Неудалось.

Правильно не удалось - при CRP2 возможно только стирание всей Flash зараз. Документировано.
esaulenka
Цитата
должен ли кусок кода, вызывающий функцию IAP, располагаться за пределами стираемого сектора?


Если Вам не важно, что будет делать контроллер после стирания - не должен.
Стирает-то IAP, он в отдельном секторе лежит. Ну а то, что потом он передаст управление на FF - это мелкий побочный эффект smile.gif

На остальное вроде б ответили.
toweroff
Цитата(esaulenka @ Apr 21 2010, 13:13) *
Если Вам не важно, что будет делать контроллер после стирания - не должен.
Стирает-то IAP, он в отдельном секторе лежит. Ну а то, что потом он передаст управление на FF - это мелкий побочный эффект smile.gif

На остальное вроде б ответили.

спасибо

Цитата(zltigo)
возможно только стирание всей Flash зараз

т.е. команда Erase Sectors со всем диапазоном секторов flash кристалла?
zltigo
Цитата(toweroff @ Apr 21 2010, 12:22) *
т.е. команда Erase Sectors со всем диапазоном секторов flash кристалла?

Да.
toweroff
Всем большое спасибо, пойду тестить...
Кстати, а как все-таки включить JTAG? камень LPC2468
Nixon
Цитата(zltigo @ Apr 21 2010, 11:59) *
Правильно не удалось - при CRP2 возможно только стирание всей Flash зараз. Документировано.

При CRP2 стирание всей флеши только через ISP. Для IAP нет разницы сколько секторов стирать.
zltigo
Цитата(Nixon @ Apr 21 2010, 16:03) *
Для IAP нет разницы сколько секторов стирать.

Или да, или нет. Лично я стираю всю и... получается. Впрочем, как и перезапись отдельных секторов за пределами нулевого.
Nixon
Именно да. У меня загрузчик залочен по CRP2 и стирает через IAP только пользовательскую флешь, не трогая себя.
Вопрос топика можно свести к следущему - как стереть 0-сектор из IAP?
zltigo
Цитата(Nixon @ Apr 21 2010, 16:13) *
Вопрос топика можно свести к следущему - как стереть 0-сектор из IAP?

Так вроде и ответ давал - вместе со всей Flash.
toweroff
Сижу тестирую... возник вопрос - получаю версию бутлоадера 3.03
Проверить FlashMagic'ом нет возможности, пины заняты
Такая версия реальна? Проц LPC2468, ревизия "B", 47 неделя 2009 года
esaulenka
да, у меня такая же версия на 2368 (кажется, тоже rev B )
toweroff
Цитата(esaulenka @ Apr 22 2010, 12:45) *
да, у меня такая же версия на 2368 (кажется, тоже rev B )

спасибо!

Заработало, с CRP3 стирается

2 zltigo почитал Ваши посты эдак 2-3 летней давности... и добавил проверку одного пина, по которой опять же вызывается стирание... дабы было, с USB может что-то и случиться smile.gif
toweroff
Еще раз, надеюсь, ненадолго smile.gif , подниму тему
Ревизия "B" LPC2468, как я понимаю, "шлепается" уже минимум года 2 с половиной
Соответственно, версии бутлоадера там менялись. Интересно вот что - что правится от версии к версии? Как это влияет на защищенность прошивки ("потрошение" кристалла у соседей монголов не беру)? Есть ли смысл обновить бут? Если да, то как? Накопал только вторичные (Ethernet, USB) буты на сайте производителя..
Djep
Цитата(Nixon @ Apr 21 2010, 14:54) *
Нулевой сектор не стирается из IAP. Читайте сноски к описанию команд IAP.

Стирается 0 сектор командами IAP без стирания всей флеши, причем независимо какой CPR установлен.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.