创建应用程序
创建一个应用程序最快捷的方法是复制一份已有的示例,下面以hello_world例程为例,说明如何基于该示例创建一个新的应用程序
拷贝例程
拷贝示例:将
example/get-started/hello_world/rtt
拷贝到任意目录,比如c:\work\ws\hello_world
,应用的目录结构
+---project // 工程目录 | Kconfig | Kconfig.proj | proj.conf // 工程配置文件 | rtconfig.py | SConscript | SConstruct | \---src // 代码目录 main.c SConscript
打开Env命令行窗口:在SDK根目录右键菜单打开Env命令行窗口,运行
set_env gcc
设置环境参数进入到工程目录:
cd c:\work\ws\hello_world\project
切换路径到拷贝的示例工程目录编译:
scons --board=em-lb525 -j8
,这里选择的板子为em-lb525
,参考支持的板子烧写:
build_em-lb525_hcpu\uart_download
至此,一个新的hello_world程序已经创建完成,新工程的编译、烧写方法与SDK自带例程完全相同。
修改代码
hello_world的应用代码在src/main.c
文件中,可以看到他只在第5行打印了一次Hello world
1int main(void)
2{
3 rt_thread_mdelay(3000);
4 /* Output a message on console using printf function */
5 rt_kprintf("Hello world!\n");
6
7 /* Infinite loop */
8 while (1)
9 {
10 }
11 return 0;
12}
现在我们在第10~11行加上如下的两句,每3秒打印一次Hello SiFli
1int main(void)
2{
3 rt_thread_mdelay(3000);
4 /* Output a message on console using printf function */
5 rt_kprintf("Hello world!\n");
6
7 /* Infinite loop */
8 while (1)
9 {
10 rt_kprintf("Hello SiFli!\n");
11 rt_thread_mdelay(3000);
12 }
13 return 0;
14}
修改之后编译并下载程序,连接串口调试工具,复位后可以看到如图的打印输出

除了在main.c
里添加代码以外,也可以在src
目录下添加C文件,因为src目录下的Sconscript已经使用Glob
命令把当前目录下的所有C文件都加入了编译,更多Scons脚本的用法请参考Scons和Kconfig快速入门
import os
from building import *
# Add source code
src = Glob('*.c')
group = DefineGroup('Applications', src, depend = [''])
Return('group')
修改设置
hello_world例程只有最简单的打印功能,很多组件都没有使能,即使在main.c
里包含了组件的头文件,也无法调用相应函数,需要使用menuconfig
工具修改
工程配置,方法是在工程目录下执行menuconfig --board=<board_name>
,这里的<board_name
替换为所使用的板子名称,如menuconfig --board=em-lb525
,与scons
编译时指定板子的名称类似,缺省使用hcpu,也就是menuconfig --board=em-lb525
与menuconfig --board=em-lb525_hcpu
效果相同,都是以板子em-lb525的HCPU为对象配置当前工程。
执行menuconfig后打开如图的界面,可以使用⇧和⇩方向键在不同菜单项间移动,按Enter键进入子菜单,按Space选中菜单项,确认修改都完成后,按D保存最小配置到工程目录下的proj.conf
文件中(即project\proj.conf
),该文件为文本文件,可以打开查看修改前后的差异,menuconfig的详细用法参见项目设置

更详细的配置与编译机制请阅读配置与编译