Полная версия этой страницы:
Защита Flash Silabs
AlekseyT
Oct 10 2009, 08:17
Возникла следующая проблема, подскажите куда копать.
Использую мк C8051F130, устанавливаю защиту flash из программы
////////////////////////////////////////////////////
void BlockJTAG(void)
{
unsigned char data Bank = PSBANK;
SFRPAGE = CONFIG_PAGE;
CCH0CN &= 0xFE; //"Block Write Disable"
SFRPAGE = LEGACY_PAGE;
PSBANK |= 0x30;
FLSCL |= 0x01;
PSCTL |= 0x01;
*((unsigned int xdata*)0xFBFE) = 0x0000;
PSCTL &= 0xFE;
FLSCL &= 0xFE;
PSBANK &= Bank;
}
////////////////////////////////////////////////////
В документации сказано, что доступна только по JTAG функция стереть всю flash, но стереть flash у меня не получается, в обще доступа нет по JTAG.
Использую USB DEBUG ADAPTER от SiLabs, но и его родной софт FLASH Programming Utility
редактор
Oct 14 2009, 05:56
Похоже контроллер заперт окончательно.
В описалове сказано, что если заблокировать старший блок от записи/стирания, то модификация битов защиты становится невозможной (даже через JTAG - именно от него и блокируется).
Так что могу постоветовать для отладки отключать защиту совсем, или НЕ БЛОКИРОВАТЬ область кода с защитными битами до полной отладки (если она возможна).
редактор
Oct 19 2009, 06:18
Попробовал не досуге приведенный код (на модели 8051F121).ПодключитьJTAG не дает, заперто намертво.
НО стереть контроллер можно даже штатными средствами.
Я использовал программу FlashUtil.exe (она идет как пример по использованию dll для работы с JTAG).
Главная фишка в том что для полного стирания области кода НЕ НАДО ВЫПОЛНЯТЬ ОПЕРАЦИЮ "Connect".
Достаточно выбрать адаптер и интерфейс (JTAG). После этого переключаемся на вкладку FLASH ERASE и жмем кнопку очистки кода.
Два раза пробовал. Разблокирует за милу душу.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.