Ferramentas necessárias:
- gcc, binutils
- gdb
- utilitário stlink
Fluxo de Trabalho
O desenvolvimento e a depuração de software incorporado incluem várias etapas. A primeira ferramenta de que você certamente precisará é um compilador. O compilador traduz o código-fonte escrito em C / C ++ ou qualquer outra linguagem de programação em códigos que uma CPU possa entender. No caso do STM32, que inclui um núcleo ARM Cortex-M3, o compilador mais conveniente e confiável é o GCC.
GCC, Binutils, GDB
Felizmente, quase todas as ferramentas de que precisamos (a saber, GCC, GDB e binutils) estão disponíveis via MacPorts. Tudo o que precisamos fazer é:
sudo port install arm-none-eabi-gcc arm-none-eabi-binutils
Depois que o port terminar de baixar e descompactá-los, um monte de ferramentas ‘arm-none-eabi-‘ seria acessível via comando linha.
Instalando o utilitário stlink
A última coisa que precisamos para começar a depurar um chip é um adaptador de depurador. Este tipo de ferramenta é usado como uma interface entre o depurador GDB e o hardware MCU. Existem 2 possibilidades: stlink e OpenOCD. OOCD é uma ferramenta mais complexa, que suporta muitos adaptadores diferentes, como FT2232, STLink, Altera, J-Link, R-Link e outros. Mas só precisamos de um suporte STLink, então podemos ir por outro caminho, que é um pouco mais simples, e instalar o utilitário stlink.
sudo port install libusb automake autoconf pkgconfig
aclocal --force -I /opt/local/share/aclocal
git clone https://github.com/texane/stlink.git stlink-utility
cd stlink-utility
./autogen.sh
./configure
make
Agora copie os binários st-flash e st-util em outro lugar (provavelmente vou conseguir escrever um Portfile algum dia para torná-lo disponível via MacPorts também).
Depurar
Execute st-util (executá-lo sem parâmetros é suficiente em nosso caso). Deve produzir algo assim:
2013-02-12T23:18:04 INFO src/stlink-common.c: Loading device parameters….
2013-02-12T23:18:04 INFO src/stlink-common.c: Device connected is: F3 device, id 0x10036422
2013-02-12T23:18:04 INFO src/stlink-common.c: SRAM size: 0xa000 bytes (40 KiB), Flash: 0x40000 bytes (256 KiB) in pages of 2048 bytes Chip ID is 00000422, Core ID is 2ba01477.
KARL - should read back as 0x03, not 60 02 00 00
init watchpoints
Listening at *:4242…
Agora inicie o GDB com destino remoto:
arm-none-eabi-gdb <compiled ELF firmware file path>
(gdb) tar extended-remote :4242
(gdb) load
Have fun using GDB CLI commands
Além disso, você pode usar qualquer outro GDB frontal que desejar: por exemplo, o Eclipse tem um, então ele pode ser configurado para depurar no chip.