реклама на сайте
подробности

 
 
> Чтение прошивки ADuC, Чем можно прочитать содержимое флэш ADuC?
Polaris
сообщение Sep 19 2007, 14:04
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Всем привет!
При написании собственного загрузчика для ADuC834 через Com-порт (встроенный использовать нельзя, так как доступа к джамперу на PSEN не будет) столкнулся со следующей проблемой: WSD умеет только писать и запускать программу, Keil по последовательному интерфейсу отлаживать не очень хочет (точнее, хочет, но толку от такой отладки ноль, так как код остановить нельзя и что-то передать через порт тоже нельзя - порт занят отладчиком). А очень нужно прочитать текущее содержимое флэш, чтобы увидеть, где ошибка в алгоритме, что не получается (проц точно стирается, но вот пишется ли - вопрос). Начал искать средства для более достойной отладки. Ничего бесплатного не нашел, есть только нечто single-pin от accutron через пин EA, но не факт, что я смогу его быстро приобрести.
Неужели вообще нет никакой возможности прочитать содержимое флэшки у ADuC? Или я что-то пропускаю очевидное?

Жду любых советов, за исключением советов отказаться от ADuC.
Заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
KRS
сообщение Sep 19 2007, 15:19
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



к сожалению у родного бутлоадера нет команды чтения флеша.
Но вы можете написать свою функцию, которая скидывает нужную область флеша в UART!
Просто поставте ее вызов в нужном месте вашей прораммы (после записи)...
Go to the top of the page
 
+Quote Post
Polaris
сообщение Sep 19 2007, 22:52
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Цитата(KRS @ Sep 19 2007, 18:19) *
к сожалению у родного бутлоадера нет команды чтения флеша.
Но вы можете написать свою функцию, которая скидывает нужную область флеша в UART!
Просто поставте ее вызов в нужном месте вашей прораммы (после записи)...

Да, спасибо, сам уже тоже начал подумывать именно о таком способе. Завтра попробую читать флэш сразу же после записи, посмотрю, в чем там отличие... Но вообще, конечно, это существенный минус ADuC smile.gif
Go to the top of the page
 
+Quote Post
Polaris
сообщение Sep 20 2007, 14:56
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Если кому-то интересно, как решилась проблема, то сообщаю smile.gif
Добавил в собственный загрузчик команду вычитывания флэш. Промучался с ней, так как читала ерунду. Только после вдумчивого повторного прочтения даташита uC007 с сайта AnalogDevices обнаружил следующую довольно неожиданную вещь - в режиме ULOAD команда WRITEBYTE (0x82) пишет байт по заданному в EADRH/L адресу из регистра EDATA1 во флэш. Но команда READBYTE (0x81) читает байт по адресу EADRH/L почему-то не из флэш, а из flash/EE data memory. Читать флэш нужно при помощи MOVC или указателя на code, если это Си. Смысл этих телодвижений не очень понятен, все другие команды режима ULOAD работают именно с флэш (flash/EE program memory).
В связи с этим прошиватель мой и не работал - я сразу после перехода в режим перепрошивки стираю всю память и ставлю в 0x0000 прыжок на 0xE000, там лежит мой загрузчик. После этих манипуляций даже прерывание режима программирования внеплановым отключением питания не смертельно - можно начать все сначала, сбросив прибор. Затем я получаю новую прошивку и пишу ее во флэш, все, кроме первой страницы (там же у меня джамп на тело загрузчика smile.gif), первая страница пишется в конец перепрограммируемого кода (0xDFC0), длина у нее 0x40 байт. После успешного окончания программирования (контрольные суммы пакетов, чтение прошивки для сравнения - все как полагается), я стираю первую страницу и переписываю ее из 0xDFC0. Вот в этом месте я и писал в начало прошивки бред, вычитанный из flash/EE data memory.
Вроде бы все. Надеюсь, кому-то в будущем поможет.
Go to the top of the page
 
+Quote Post
a_lexsandr
сообщение Feb 16 2012, 20:03
Сообщение #5





Группа: Новичок
Сообщений: 2
Регистрация: 9-10-10
Из: Russia
Пользователь №: 60 024



Цитата(Polaris @ Sep 20 2007, 17:56) *
Если кому-то интересно, как решилась проблема, то сообщаю sm.gif
Добавил в собственный загрузчик команду вычитывания флэш. Промучался с ней, так как читала ерунду. Только после вдумчивого повторного прочтения даташита uC007 с сайта AnalogDevices обнаружил следующую довольно неожиданную вещь - в режиме ULOAD команда WRITEBYTE (0x82) пишет байт по заданному в EADRH/L адресу из регистра EDATA1 во флэш. Но команда READBYTE (0x81) читает байт по адресу EADRH/L почему-то не из флэш, а из flash/EE data memory. Читать флэш нужно при помощи MOVC или указателя на code, если это Си. Смысл этих телодвижений не очень понятен, все другие команды режима ULOAD работают именно с флэш (flash/EE program memory).
В связи с этим прошиватель мой и не работал - я сразу после перехода в режим перепрошивки стираю всю память и ставлю в 0x0000 прыжок на 0xE000, там лежит мой загрузчик. После этих манипуляций даже прерывание режима программирования внеплановым отключением питания не смертельно - можно начать все сначала, сбросив прибор. Затем я получаю новую прошивку и пишу ее во флэш, все, кроме первой страницы (там же у меня джамп на тело загрузчика sm.gif), первая страница пишется в конец перепрограммируемого кода (0xDFC0), длина у нее 0x40 байт. После успешного окончания программирования (контрольные суммы пакетов, чтение прошивки для сравнения - все как полагается), я стираю первую страницу и переписываю ее из 0xDFC0. Вот в этом месте я и писал в начало прошивки бред, вычитанный из flash/EE data memory.
Вроде бы все. Надеюсь, кому-то в будущем поможет.


Не сохранились ли исходники программы???, мучаюсь, нужно почитать флеш данных у Aduc848.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 04:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016