zephyr现在支持的板子越来越多,但都是官方出的demo板,国内很多人可能都是用的正点原子或野火的,手里也有一块F407探索者,所以就将zephyr移植到alientek探索者上来。说是移植,其实只是增加一下板型,zephyr支持STM32F4 discovery板,所以zephyr对F4的各种底层HAL驱动和操作系统层的driver的衔接都已经做好了,直接拿来用就好了,现在的工作只是在$(zephyr_base)/boards/arm/下添加alientek explorer的文件夹罢了,并根据板子外设(按键、LED灯、nor flash等)添加相应的dts文件就可以工作了。
在使用ninja flash向alientek stm32f407下载代码时,总是出现错误:
Info : Stlink adapter speed set to 950 kHz adapter speed: 950 kHz Error: timed out while waiting for target halted TARGET: STM32F103CBTx.cpu - Not halted
按道理说不应该呀,因为用的另一块nucleo_f030r8就可以正常下载,并在eclipse上面调试。两块板子都是用的stlink-v2,唯一的区别就是nucleo-f030r8的stlink只有SWD口,而stm32f407 explorer的stlink还支持jtag,而在KEIL下,选择了stlink,默认是使用jtag的。难道是这个原因吗?找来4根杜邦线,按照SWD的引脚接线,再次下载发现还是报相同错误,看来不是这个问题。
经过网上多方查找,才找到最终的解决方式,如下:
我在$(zephyr_base)/boards/arm/下新建的stm32f407_Alientek_explorer文件夹是直接复制的stm32f4_disco中的内容,并将板型做了相应修改,并添加了按键和led灯等的dts,编译也并无错误,在stm32f407_Alientek_explorer/support目录下是对调试工具设置的文件openocd.cfg,打开该文件,发现该文件引用了board/st_nucleo_f4.cfg,同样都是f4系列,用st_nucleo_f4.cfg还是st_discovery_f4.cfg不会有什么影响,然后找到安装的openocd的目录,定位到board/st_nucleo_f4.cfg文件,打开该文件,将该文件的最后一行reset-config srsr_only修改为reset_config none,然后重新使用ninja flash下载,发现一切正常。该问题应该是openocd对stm32 f4系列的支持有问题导致的
source [find interface/stlink.cfg] transport select hla_swd source [find target/stm32f7x.cfg] #reset_config srst_only #将上面一行修改为如下一行,然后保存退出,重新下载即可 reset-config none
原文:https://www.cnblogs.com/dwj411024/p/13058333.html