Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: C8051F310 копирование кода
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
aleksandr LAN
Добрый день.
Подскажите может кто сталкивался. Есть МК с8051f310 с зашитым кодом, необходимо произвести копирование на такой же. Тот кто писал код не может (скорее всего нет желания т.к. код маленький) найти исходник, сказал скопировать самому. Считывание произвожу через Development Kit для 8051а310 от Siliconlabs ( хоть это дал разработчик). Но при записи на диск пишет текстовый файл с кодом hex в каждой строчке. Если пробывать записывать этот код то программа Silicon Labolatories IDE ругается что код не того формата (((. Защита на копирование разработчиком не ставилась (он сам это подтверждает).
barabek
Посмотрел, что считывает IDE. Получается все необходимое адресное пространство CODE считывается и последовательно записывается встолбик в выходном файле. По мне, так я бы сделал из этого файла нормальный hex-файл. Группируем допустим по 16 байт в строки, добавляем в начале строки заголовок, в конце контрольную сумму.
Код
// Hex Record Format:
//
// +--------+--------+------+-------+--------+------(n bytes)------+----------+
// | RECORD | RECLEN | OFFSET       | RECORD |                     | CHECKSUM |
// | MARK   | (n)    | (2 BYTES)    | TYPE   | DATA                |          |
// | ‘:’    |        |              |        |                     |          |
// +--------+--------+------+-------+--------+------(n bytes)------+----------+

:100D0500914863F70E848FBEE8AB7E5782A1CFEB87 <-пример
тогда RECLEN будет 10 (16 байт), offset начиная с 0000 и каждую строку увеличиваем на 10h, record type всегда 00, дальше данные, в конце вычисляем контрольную сумму по всей строке кроме record mark. Как я понял, вычисляется контрольная сумма следующим образом: складываем все байты строки (естественно, переводя из ascii в hex, а если на калькуляторе, то что видим то и складываем smile.gif ) к поученному числу нужно добавить такой checksum, чтобы младший байт суммы равнялся 00h.
И в конце всего файла добавляем строку :00000001FF (это что-то типа EndOfFile)
kosyak©
Я сдирал прошивку с сигналов с помощью https://www.silabs.com/Support%20Documents/...are/UtilDLL.zip, потом этаже программа свои дампы может и заливать....
aleksandr LAN
Цитата(kosyak© @ Apr 30 2009, 08:49) *
Я сдирал прошивку с сигналов с помощью https://www.silabs.com/Support%20Documents/...are/UtilDLL.zip, потом этаже программа свои дампы может и заливать....

Да есть и такая утилита в комплекте(Flash Programming Utility) - ток не могу разобраться с ней, вернее если в ней считываю код и при попытке записи его - пишет что неверный формат нех-файла(((( может я чет не так делаю??

to barabek
спасибо, если не разберусь как сделать программно(хотя это возможно) - сделаю как ты подсказал.)
aleksandr LAN
Barabek спасибо еще раз, строчек оказалось десяток всего, пересчитал вручную, прошил - вроде показывает что все норм, осталось ток впаять в устройство и проверить)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.