板子还没有收到。
先把编译环境搞定吧,顺势把M23融合到我的M-Arch里面去。
IDE用的是keil,版本是5.30,前面弄过几次,反正吧不是特别友好。
官方特别提示了要用KEIL5,KEIL5工程的后缀是uvprojx,KEIL4工程的后缀是uvproj
另外我搭环境过程中发现编译器只能用AC6,跟AC5差别还是有一些,有些折腾人,细节后面说到。
pack名:
GigaDevice.GD32L23x_DFP_1.0.0.pack
双击安装,一路OK即可。
but,这竟然发现也有小bug!!!
pack的bug
说好的1.0.0版本,安装的竟然是0.0.0版本,手动@GD BOSS。
更离谱的是,keil上面有官方网站上还没有的新版本···
keil pack管理器的版本
M-Arch的基本思想是把IO进行封装和抽象,屏蔽厂家的差异性,从而达到IO跟业务解耦的目的。
M-Arch架构:
M-Arch架构
M-Arch IO目录层次:
M-Arch IO目录层次
在之前的设计中,我打算把GD32的放到一起,通过宏来区分,但是等把GD32L233CC配置(GD32L233CC的keil配置就是常规的startup S文件,头文件include以及库文件包含等)之后发现一个问题,之前的代码很多编译不过:
".\output_stm\m_arch_app.axf" - 147 Error(s), 248 Warning(s).
详细看了下报错信息,发现主要的一些差异点(同M3,M4):
nvic_priority_group_set
没有 ···nvic_irq_enable
函数参数不一样。DAC
而不是DAC0
。LPTIMER
,其他的叫TIMER1,TIMER2,TIMER5,TIMER6,TIMER8,TIMER11
这样的差异性造成的问题就是M23和M3,M4兼容起来比较困难。
索性把M23的IO单独拎出来:
E:.
│ io.c
│
├─gd32
│ interrupt.c
│ io_adc.c
│ io_crc.c
│ io_dac.c
│ io_fmc.c
│ io_gd32.c
│ io_gd32.h
│ io_gpio.c
│ io_rng.c
│ io_spi_rtc.c
│ io_system.c
│ io_timer.c
│ io_uart.c
│
├─gd32M0
│ interrupt.c
│ io_adc.c
│ io_crc.c
│ io_dac.c
│ io_fmc.c
│ io_gd32.c
│ io_gd32.h
│ io_gpio.c
│ io_rng.c
│ io_spi_rtc.c
│ io_system.c
│ io_timer.c
│ io_uart.c
│
报错:
error: '#pragma import' is an ARM Compiler 5 extension, and is not supported by ARM Compiler 6 [-Warmcc-pragma-import]
#pragma import(__use_no_semihosting)
解决:
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
};
替换为:
__ASM (".global __use_no_semihosting");
当然,最简单的方式是直接用MicroLIB。
首先要保证配置OK,配置指堆栈大小,优先级等。
最简单的办法是直接从FreeRTOS的官方DEMO中直接整一个M0的配置来用。
另外,编译的时候要把告警配置为AC-5 Like,不然会有一堆的编译告警。
keil 编译AC6配置
至此,基本的编译环境算是搞定了。
linking...
Program Size: Code=23284 RO-data=1184 RW-data=24 ZI-data=13944
FromELF: creating hex file...
After Build - User command #2: fromelf --bin -o "E:\Gitee\m-arch\m_arch_app.bin" "E:\Gitee\m-arch\m_arch_app.axf"
".\m_arch_app.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:07