Для загрузки бинарного кода во флеш контроллеров сеймейства LPC2xxx можно воспользоваться утилитой LPC flash.
Поддерживаются следующие чипы: LPC2103 LPC2104 LPC2105 LPC2106 LPC2114 LPC2119 LPC2124 LPC2129 LPC2131 LPC2132 LPC2134 LPC2136 LPC2138 LPC2141 LPC2142 LPC2144 LPC2146 LPC2148 LPC2194 LPC2210 LPC2212 LPC2214 LPC2292 LPC2294 LPC2364 LPC2366 LPC2368 LPC2378 LPC2468
Приведу шаблон мейкфайла для стирания и программирования флеш микроконтроллера:
Makefile
# 2008 Ivan A-R <ivan@tuxotronic.org> # TARGET=usbhost_debug # In khz PORT=/dev/ttyUSB0 BAUD=115200 CHIPFREQ=12000 FLASH=lpcflash FLASHOPT=-i $(PORT) -b $(BAUD) -f $(CHIPFREQ) all: $(TARGET).bin: $(TARGET).hex hex2bin $< .PHONY: erase load erase: $(FLASH) $(FLASHOPT) -e 0:27 load: $(TARGET).bin erase $(FLASH) $(FLASHOPT) -p 0 -l $<
Если ваш микроконтроллер или ревизия чипа не поддерживается, можно прописать его в исходниках утилиты и пересобрать её. Тут нужно быть внимательным блоки флеш не обязательно совпадают даже для разных ревизий.
У себя я добавил новую ревизию кристалла LPC2368 и поддержку LPC2478 на том основании, что карта памяти у него полностью совпадает с LPC2378.
patch.diff
Index: src/lpc.c =================================================================== --- src/lpc.c (revision 6) +++ src/lpc.c (working copy) @@ -118,6 +118,9 @@ { 0x0703FF25, 2378, 512, 34, 28, 4096, map_2378 }, { 0x1700FD25, 2378, 512, 34, 28, 4096, map_2378 }, /* Rev B */ { 0x0603FF35, 2468, 512, 98, 28, 4096, map_2368 }, + // I try it + { 0x1600f925, 2368, 512, 34, 28, 4096, map_2368 }, /* Some revision */ + { 0x1701ff35, 2378, 512, 34, 28, 4096, map_2378 }, /* Rev B. !!! Really is 2478 */ /* { 0x , 2478, 512, 98, 28, 4096, map_2368 }, */
Забираем исходный код:
svn checkout http://lpcflash.googlecode.com/svn/trunk/ lpcflash-trunk
Создаём каталог для сборки:
mkdir lpcflash-0.2.svn cd lpcflash-0.2.svn
Конфигурируем и собираем:
../lpcflash-trunk/configure --prefix=/usr/local make
Инсталлируем в систему:
sudo make install
Пользователи Debian-based систем могут собрать «ленивый» пакет:
sudo checkinstall -D