MF CAP Телефонист В миру: Дмитрий Откуда: RU, MSC С нами с: 03.11.2003 Плодовитость: 121
Рейтинг
Подано 4 (2/2) голосов
|
FAQ начинающего прошивкокопателя.
|
цитата: Ramil_ пишет: Скачал ассемблер keil, но не знаю как туда "запихнуть" свою прошивку (с45 v.50). Если кто знает, помогите пожалуйста!
[code]Многие задумывались, как же было бы удобно если бы была возможность отлаживать весь фуллфлеш
или его части непосредственно в каком нибудь отладчике, была найдена возможность загрузить фуллфлеш в Keil,
при этом появляется возможность эмулировать работу контроллера, отлаживать функции с целью изучения их работы.
Итак вы заинтересованы?
Не буду мучать, для начала необходимо иметь сам пакет Keil, демо версию можно взять с сайта производителя http://www.keil.com/ ,
а крек снимающий ограничения найти в сети.
Также понадобится утилита BIN2HEX ее можно найти на сайте keil либо вы можите скачать ее и другие полезные утилиты с моего сайта.
1. Загрузка всего флеша!
Чтобы кейл понимал фф его необходимо сконвертировать в HEX86 или HEX386 (отличаются тем, что HEX386 имеет линейную адресацию, а HEX86 сегментную)
для этого воспользуемся программой: BIN2HEX вот пример .bat - файла позволяющего создать хекс-файл в котором будет образ памяти RAM и сам фуллфлеш:
bin2hex.exe /I0x000000 /O0x000000 /4 /T S55_ram.bin flash.hex
bin2hex.exe /I0x000000 /O0x400000 /4 /A S55v20.bin flash.hex
где, S55_ram.bin - RAM - 2 Мб
S55v20.bin - FULLFLASH - 12 Мб для S55
flash.hex - выходной файл для Keil
Настройки:
/I0x000000 - входное смещение в файле, откуда начинаем читать
/O0x400000 - выходное смезение в хекс-файле, для фф - это начало откуда читался фф, для частей файла - это куда будем его маппить.
/4 - создаем HEX386
/T - для соединения нескольких hex-файов, в этом случае метка конца в хекс-файл не пишется!
/A - параметр добавления в хекс-файл
Теперь создаем проект в кейл, для C166, для того чтобы загрузить весь флеш в память отладчика необходимо скопировать в папку проекта созданный хекс-файл
и переименовать его в имя проекта, например: если выходной файл имеет имя Fullflash,
то переименовываем скопированный flash.hex в Fullflash
Внимание: после этого нельзя компилировать проект!
Нажимаем в Keil CTRL-F5 и переходим в отладчик, начнется загрузка флеша, так как флеш является довольно объемным, то это займет длительное время!!!
2. Загрузка части флеша
Имеется альтернативный вариант,например мы используем в патче функции которые находятся в флеше с 0x800000 по 0x860000 (адреса взяты произвольные)
чтобы загрузить этот кусок в память отладчика необходимо создать хекс-файл для данных адресов!
Создание хекс-файла для адресов с 0х800000 по 0х860000:
Вызов bin2hex будет иметь следующий вид:
bin2hex.exe /I0x400000 /O0x800000 /4 /L0x60000 S55v20.bin 800000.hex
где, /I0x400000 - смещение для фуллфлеша, которое считается как 0x800000 - 0x400000, 0x400000 - смещение в флеше телефона.
/O0x800000 - сюда помещается код!
/L0x60000 - длина части фуллфлеша
800000.hex - выходной файл
После этого в проекте кейл(подразумевается проект патча), запускаем отладчик, вызываем контексное меню(правая - клавиша мыши), в меню выбираем пункт:
Load Hex or Object file... выбираем созданный файл 800000.hex.
Вот вобщем то и все
ЗЫ. Не забываем установить 16-битную адресацию!
ЗЫЫ. Как работать с отладчиком, читайте помощь в Keil.
Выводы:
+: возможность эмулировать контроллер, удобный и простой отладчик, пошаговая трассировка.
-: большой объем хекс-файла, что сказывается на длительности загрузки в отладчик.
This document (c) DKeN
[/code]
Сайт DKeNa давно в дауне... и если понадобятся утилки из статьи пишите, стучите - положу у себя на фтп... |
____________________________
За связь без брака! © МТУСИ |
|