游戏卡方案的MCU基本确定是雅特力AT32F403AVGT7,芯片提供1MB flash和224K SRAM,外设接口完全够用。
在淘宝买了块AT32F407VGT7的开发板,与403A相比多了个EMAC接口。开发板自带AT-Link-EZ下载调试器,可以不用另外买调试器。
开发板没有SD卡接口。需要另外买个SD卡模块,用跳线连接到板上的io脚上。
固件的RTOS选择的是rt-thread,分别用rt-thread studio, keil, platformio开发环境使用一下。
1. 雅特力AT32F407VGT7开发板
2. RT-THREAD Studio开发环境使用
首先通过SDK管理器更新一下rt-thead代码和chip support packages,board support packages,添加AT32芯片和开发板的资源包。rt-thread latest版本是5.0.1。
board support packages安装AT32F407-AT-START bsp包。
创建RT-Thread项目,基于开发板,rt-thread版本选择最新版本。
完成之后就自动生成了项目,包含所有的文件。
点击项目资源管理器的RT-Thread Settings,可以配置内核,添加,删除组件。
然后就构建项目(点),编译整个项目。
开发板准备:需要在雅特力官网下载安装AT-Link-EZ驱动,安装完驱动之后,设备管理器增加了一个COM接口ATLink-USART,该接口连接开发板的UART1。AT-Link接口提供SWD和串口接口。
usb线连接开发板调试接口。串口调试软件的接口设置AT-Link-USART,波特率115200,8,1。
启动调试,就可以下载代码到flash进行运行了。(注:启动调试有问题是因为配置工程->Debugger->Device name默认设置为unknown,需要修改为AT32F407VGT7)。
调试界面,代码自动运行到main函数,点击运行之后,开发板上的几个LED灯闪烁。
串口mch
3. Keil开发环境使用rt-thread
首先从gitee下载rt-thread源代码。
在 rt-thread-master\bsp\at32\at32f407-start目录下有Keil项目文件,直接用keil打开编译。
调试接口已经设置好:CMSIS-DAP Debugger,直接下载运行。
注:gitee下载的bsp代码和rt-thread studio的代码有些不同,board.h的配置也不同。
1)gitee最新的代码修改了rt-thread studio at32 bsp的代码的问题。
2)board.h的是开发板配置文件,rt-thread studio把一下配置存放在rtconfig.h中了,gitee都是在board.h中。
功能配置裁剪:可以用rt-thread studio配置之后生成的rtconfig.h和board.h,参考其配置项,添加到keil相应的文件中,如果熟悉配置,也可以手动添加。
4. platformio开发环境
首先platformio不支持AT32芯片,没有提供board包。可以参考STM32添加一个AT32 board(但不支持AT-Link调试。没有jtag调试器,所以没有尝试调试。cmsis-dap不清楚怎么设置)。
可以用RT-THREAD Studio生成的项目文件直接目录拷贝到platformio的项目的src目录中,删除一些不会编译的c文件(主要是不同C库中文件)。
5. 总结
使用rt-thread studio开发最方便了,另外项目编译优化选择-O3和-O,-O2编译的大小一样,不知道为什么,使用keil编译器应该可以少一些。
rt-thread C库配置那块也需要时间理清一些。不同编译器的c库,内核带的c库,如何在不同编译环境下进行配置选择。
下一步就是等SD卡模块到手之后试试sd卡读写是否没有问题。
另外开发板上有个uart1 4pin接口,用4pin转DB9(usb转串口),串口调试助手没有输出。不知是4pin接口连接不对。(uart1同时连接AT-Link接口)
字库还是先只支持英文,rt-thread的elmfat文件系统的中文字库编译的话增加180KB,太大了,看看可以只支持GB2312吗。