Сборка утилит для отладки, прошивки МК

После того как у нас появился 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 гнезда:

При подключении отладчика к ПК и включении отладочного режима текущая прошивка МК останавливается. Установка утилит прошивки и отладки закончена.