Утилита MCPROG предназначена для записи программного обеспечения в память отладочных модулей на базе микропроцессоров Элвис Мультикор (http://multicore.ru/index.php?id=27).
При вызове без параметров утилита MCPROG определяет тип процессора и flash-памяти, установленных на плате. Например:
Processor: MC12 (id 20777001)
Board: pkbi
Flash at 0x1FC00000: SST 39VF800 (id 0x00BF/0x2781), 2 Mbytes, 32 bit wide
Flash at 0x1FA00000: SST 39VF800 (id 0x00BF/0x2781), 2 Mbytes, 32 bit wide
Flash at 0x02000000: SST 39VF800 (id 0x00BF/0x2781), 4 Mbytes, 64 bit wide
Запись в flash-память:
mcprog [-v] [-e0,-e1,-e2] file.srec
mcprog [-v] [-e0,-e1,-e2] file.hex
mcprog [-v] [-e0,-e1,-e2] file.bin [address]
Запись в статическую память:
mcprog -w [-v] [-g address] file.srec
mcprog -w [-v] [-g address] file.hex
mcprog -w [-v] [-g address] file.bin [address]
Чтение памяти в файл:
mcprog -r file.bin address length
Стирание всей флеш-памяти:
mcprog -e1 [address]
Проверка очистки флеш-памяти:
mcprog -c [address]
Параметры:
file.srec
- файл с прошивкой в формате SREC
file.hex
- файл с прошивкой в формате Intel HEX
file.bin
- бинарный файл с прошивкой
address
- адрес flash-памяти,
адрес флеш-памяти NOR по умолчанию 0xBFC00000
адрес флеш-памяти SPI по умолчанию 0x00000000
length
- размер считываемой области памяти в байтах
-f
, --spi
- режим работы с SPI-flash
-c
- проверка очистки флеш-памяти
-e <erase>
- режим стирания флеш-памяти
(erase: 0 - флеш-память не стирается,
1 (по умолчанию) - стирание всей флеш-памяти,
2 - очистка области для программируемого файла)
-v
- без записи, только проверка памяти на совпадение
-w
- запись в статическую память
-r
- чтение памяти
-b <name>
- выбор типа платы
-g <address>
- начать исполнение с уазанного адреса
-D
- режим отладки
-h
, --help
- вывод вспомогательной информации
-V
, --version
- вывод версии
-C
, --copying
- вывод информации об авторских правах
-W
, --warranty
- вывод информации о гарантии
Входной файл должен иметь простой бинарный формат, или SREC, или Intel HEX. Форматы SREC и HEX предпочтительнее, так как в них имеются контрольные суммы и информация об адресах программы. Преобразовать формат ELF или COFF или A.OUT в SREC или HEX можно командой objcopy, например:
objcopy -O srec firmware.elf firmware.srec
objcopy -O ihex firmware.elf firmware.hex
Утилита считывает параметры платы из файла конфигурации "mcprog.conf". Файл должен находиться в текущем каталоге, либо в каталоге /usr/local/etc (для Linux), либо в каталоге утилиты "mcprog.exe" (для Windows). В файле для каждого типа платы задаются значения регистров CSR и CSCONi, а также диапазоны адресов секций flash-памяти.
Можно определять до 16 flash-секций вида "flash foobar = first-last". Здесь foobar - произвольное имя, first и last - первый и последний адреса секции.
Тип платы задаётся при вызове флагом "-b", либо параметром "default" в конфигурационном файле.
Для сборки программы под ОС Windows необходим набор инструментов MinGW-w32, доступный по ссылке:
- Windows: MinGW-w32-bin-i686-mingw
Архив необходимо распаковать и добавить в переменную окружения PATH.
set PATH=<путь_до_инструментов>\mingw32\bin;%PATH%
Команда сборки для Windows:
mingw32-make -f make-mingw
Для сборки программы под ОС Centos 7 необходимо установить библиотеки libusb, libusb-devel, libstdc++, libstdc++-static, наборы инструментов gcc и gcc-c++.
yum install gcc gcc-c++ libusb libusb-devel libstdc++ libstdc++-static
Команда сборки для Centos 7:
make all
Под Windows 2000/XP/Vista нужно установить драйвер GIVEIO, позволяющий прямой доступ к параллельному порту.
-
Кладём giveio.sys в C:\WINDOWS\system32\drivers\
-
Запускаем install.reg
-
Перезагружаемся