JLinkGDBServer调试
添加JLink到STM32F405RG,确保Vsupply接口存在电压。打开服务器端,这是arm-none-eabi-gdb调试的后台,如下。
1 | JLinkGDBServer -if SWD -device STM32F405RG |
开始GDB调试
注意如下,在用户目录下面创建.gdbinit文件。
To enable execution of this file add
add-auto-load-safe-path /home/nephne/src/Bootloader/.gdbinit
line to your configuration file “/home/nephne/.gdbinit”.
编写工程目录
下面的.gdbinit文件。
1 | target remote :2331 |
运行命令如下,即可运行gdb的相关命令,如next,step,continue等等,其中layout src为显示源代码窗口。
1 | arm-none-eabi-gdb build_crazyflie_bl/crazyflie_bl.elf |
下载代码
更新bootloader除了使用JLink也可以使用dfu-util工具。
1 | sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D crazyflie_bl.bin |
如果想在下载时看到灯闪烁,需要修改bootloader源码,因为买的开发板与原版crazyflie原理图还是有差异的。
1 | # |
更新固件
更新固件,官网的方式为:
1 | make crazyflie_default upload |
但我的板子连接不上串口,改写源代码Firmware/Tools/px_uploader.py如下。
1 | @@ -450,10 +450,10 @@ class uploader(object): |
其中/dev/serial/by-id/pci-Bitcraze_AB_Crazyflie_BL_0-if00为串口id,是在 usb_cinit(void) 函数里被设定的,如下,具体见usb_strings的定义,有# define USBMFGSTRING “Bitcraze AB”。
1 | usbd_dev = usbd_init(&otgfs_usb_driver, &dev, &config, usb_strings, NUM_USB_STRINGS, |
最后更新固件成功后为:
1 | Found board c,0 bootloader rev 5 on /dev/serial/by-id/pci-Bitcraze_AB_Crazyflie_BL_0-if00 |
启动过程,如果固件加载ok,会启动px4主流程,Bootloader里面见main_f4.c,可用JLink调试是否运行至此。
1 | /* try to boot immediately */ |
串口调试
串口连接为PC10:E_TX1, PC11:E_RX1,连接usb转串口设备如下,当然我的外围设备都失败了。
关于引脚定义查找px4 board.h里面的源码:
1 | /* E_TX1 / E_RX1 */ |
串口显示如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17sercon: Registering CDC/ACM serial driver
sercon: Successfully registered the CDC/ACM serial driver
nsh: mount: mount failed: No such file or directory
nsh: mkfatfs: mkfatfs failed: No such file or directory
ERROR [mtd] failed to initialize EEPROM driver
WARN [param] selected parameter default file /fs/microsd/params
WARN [param] open failed '/fs/microsd/params'
WARN [modules__systemlib] failed to open param file: /fs/microsd/params
WARN [param] Param export failed.
nsh: rgbled: command not found
nsh: blinkm: command not found
BAT_N_CELLS: curr: 0 -> new: 3
WARN [modules__systemlib] failed to open param file: /fs/microsd/params
WARN [param] Param export failed.
NuttShell (NSH)
nsh> \0x1b