Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ MCS51 _ Как прочитать flash C8051F410 Silabs

Автор: Chacha Nov 8 2016, 13:09

Доброго дня! Есть МК C8051F410 Silabs. К нему прикручена феррооперативка FM75V02 256-Kbit.
Есть стандартный дебаг адаптер от того же Силабса. Подключаю его по C2 интерфейсу. Во вкладке Get Memory заполняю адреса на считывание flash, всё считывается, но в файле одни 00. Подскажите, пожалуйста, что я делаю не так? С силабсами дела, к счастью, раньше не имел. Lock Code Memory Write Lock Hex Value стоит в 0.
Может это защита от чтения так отрабатывает? Пробывал читать все адреса, везде 00.


http://electronix.ru/redirect.php?https://postimg.org/image/qfw1vczhh/




http://electronix.ru/redirect.php?https://postimg.org/image/bve249t65/

Автор: Harbinger Nov 9 2016, 07:30

1. На скриншоте выбрана не FLASH ("Code"), а RAM. Впрочем, в этом случае выходной файл не создастся.
2. Все нули в lock-байте означают, что от чтения защищена вся память. При этом выходной файл заполняется нулями.

Цитата
The flash security mechanism allows the user to lock n 512-byte flash pages, starting at page 0 (addresses 0x0000 to 0x01FF), where n is the 1’s complement number represented by the Security Lock Byte.

Чтобы читалась вся память, lock-байт должен быть 0xFF. Непонятно, как он нулевым вычитался... проверял, правда, на 990, а не на 410. У него 16 страниц FLASH против 63 у 410. Выглядит так: защита снята - отображается 0xFF. Устанавливаю нули, после повторного коннекта читается 0x0F - т.е. показывает уже в инвертированном виде со сброшенными старшими битами. И в конце файла этот же байт, перед ним все нули.

Автор: Chacha Nov 9 2016, 10:52

Цитата(Harbinger @ Nov 9 2016, 10:30) *
1. На скриншоте выбрана не FLASH ("Code"), а RAM. Впрочем, в этом случае выходной файл не создастся.
2. Все нули в lock-байте означают, что от чтения защищена вся память. При этом выходной файл заполняется нулями.

Чтобы читалась вся память, lock-байт должен быть 0xFF. Непонятно, как он нулевым вычитался... проверял, правда, на 990, а не на 410. У него 16 страниц FLASH против 63 у 410. Выглядит так: защита снята - отображается 0xFF. Устанавливаю нули, после повторного коннекта читается 0x0F - т.е. показывает уже в инвертированном виде со сброшенными старшими битами. И в конце файла этот же байт, перед ним все нули.


Это я для примера) Та, да, как-то странно сделано, сначала выбираешь, что читать, потом задаёшь диапазон адресов. Как-то всё очень усложнено)

Вот это он считал lock-байт или это он записать предлагает?

http://electronix.ru/redirect.php?https://postimg.org/image/d0m174oh3/

А нет ли какого-го нибудь простого способа для снятия защиты?

Автор: Harbinger Nov 10 2016, 07:22

Вроде предлагает записать. Можно проверить: на вкладке "Connect/Disconnect" отключиться и снова подключиться, после чего перейти на "Set Memory". Если защищена вся FLASH, должно отобразиться 0x3E (62 страницы).
Простой способ снятия защиты, увы, всего один: стирание всей FLASH-памяти. sad.gif

Автор: Chacha Nov 14 2016, 12:52

Цитата(Harbinger @ Nov 10 2016, 10:22) *
Вроде предлагает записать. Можно проверить: на вкладке "Connect/Disconnect" отключиться и снова подключиться, после чего перейти на "Set Memory". Если защищена вся FLASH, должно отобразиться 0x3E (62 страницы).
Простой способ снятия защиты, увы, всего один: стирание всей FLASH-памяти. sad.gif


Спасибо. Понятно.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)