После того как у нас появился toolchain, нам необходим набор утилит для программирования и отладки МК.
Утилиты описанные в этом руководстве рассчитаны на использование отладчика st-link версий 1 и 2.
Все действия будут происходить в определенной рабочей директории, там же будет набор исходников, заголовочных файлов и пр. Создадим и перейдем в нее:
nis@jane ~ $ mkdir stm32
nis@jane ~ $ cd stm32
nis@jane ~/stm32 $
Т.к. изначально ПО создавалось исключительно под windows, то на официальном сайте www.st.com присутствует только под эту ОС. Но есть огромное количество энтузиастов которые используют linux, поэтому некоторые из них и создают opensource версии подобных программ. У себя в git-репозитории я расположил копии всех исходников тех утилит которые нам могут понадобится. Для того чтобы приступить к сборке необходимо скачать с git-репозитария исходные файлы:
nis@jane ~/stm32 $ git clone git://github.com/no111u3/stlink.git
Cloning into stlink...
remote: Counting objects: 3340, done.
remote: Compressing objects: 100% (1126/1126), done.
remote: Total 3340 (delta 2150), reused 3314 (delta 2130)
Receiving objects: 100% (3340/3340), 12.55 MiB | 426 KiB/s, done.
Resolving deltas: 100% (2150/2150), done.
После соберем проект:
nis@jane ~/stm32 $ cd stlink
nis@jane ~/stm32/stlink $ make
Собрав проект установим необходимые скрипты и утилиты по местам:
1) Скопируем правила для udev и перезагрузим его текущие настройки
jane stlink # cp 49-stlinkv* /etc/udev/rules.d/
jane stlink # udevadm control --reload-rules
2) Скопируем в папку /usr/bin необходимые для работы исполняемые файлы
jane stlink # cp gdbserver/st-util /usr/bin
jane stlink # cp flash/flash /usr/bin/st-flash
3) Так как stm32vldiscovery при подключении к компу притворяется scsi диском то это тоже надо отключить ( это справедливо только если у вас usb-storage является отдельным модулем а не вкомпилен в ядро)
jane stlink # cp stlink_v1.modprobe.conf /etc/modprobe.d/
jane stlink # modprobe -r usb-storage && modprobe usb-storage
Установка закончена. Проверим работу утилит, для этого подключим stm32vldiscovery или stm32f4discovery отладочным usb к ПК. После этого в консоли по запросу команды dmesg, должны появится следующие строчки(это справедливо если usb-storage это отдельный модуль):
[ 1126.107112] usb-storage 5-1:1.0: usb_probe_interface
[ 1126.107117] usb-storage 5-1:1.0: usb_probe_interface - got id
[ 1126.107332] usb-storage 5-1:1.0: device ignored
В списке usb устройств должно появится ещё одно устройство c id 0483:3748 и именем SGS Thomson Microelectronics - это и есть наш отладчик:
nis@jane ~/stm32 $ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0a5c:2123 Broadcom Corp. Bluetooth dongle
Bus 003 Device 003: ID 093a:2500 Pixart Imaging, Inc. USB Optical Mouse
Bus 005 Device 013: ID 0483:3748 SGS Thomson Microelectronics
Проверим работу утилиты отладки:
1) для stm32vldiscovery - в этой плате st-link версии 1, поэтому st-util будет запускатся с ключом "-1":
nis@jane ~/stm32/stlink $ st-util -1
2012-01-26T15:33:51 INFO src/stlink-sg.c: Current mode unusable, trying to get back to a useful state...
2012-01-26T15:33:51 WARN src/stlink-sg.c: received tag 0 but expected 3
2012-01-26T15:33:51 INFO src/stlink-common.c: Loading device parameters....
2012-01-26T15:33:51 INFO src/stlink-common.c: Device connected is: F1 Medium-density Value Line device
2012-01-26T15:33:51 INFO src/stlink-common.c: SRAM size: 0x2000 bytes (8 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes
2012-01-26T15:33:51 INFO src/stlink-sg.c: Successfully opened a stlink v1 debugger
Chip ID is 10016420, Core ID is 1ba01477.
KARL - should read back as 0x03, not 60 02 00 00
init watchpoints
Listening at *:4242...
^C
После этого должен загореться еще один светодиод возле usb гнезда - индикатор активности отладчика:
2) для stm32f4discovery - в этой плате используется st-link уже версии 2, особых ключей для st-util не потребуется:
nis@jane ~/stm32 $ st-util
2012-03-10T18:45:09 INFO src/stlink-usb.c: -- exit_dfu_mode
2012-03-10T18:45:09 INFO src/stlink-common.c: Loading device parameters....
2012-03-10T18:45:09 INFO src/stlink-common.c: Device connected is: F4 device
2012-03-10T18:45:09 INFO src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
Chip ID is 00000413, Core ID is 2ba01477.
KARL - should read back as 0x03, not 60 02 00 00
init watchpoints
Listening at *:4242...
^C
После подключения должен мигнуть зеленым и переключится с красного на зеленый индикато активности отладчика возле usb гнезда:
При подключении отладчика к ПК и включении отладочного режима текущая прошивка МК останавливается. Установка утилит прошивки и отладки закончена.