创建应用程序

创建一个应用程序最快捷的方法是复制一份已有的示例,下面以hello_world例程为例,说明如何基于该示例创建一个新的应用程序

拷贝例程

  1. 拷贝示例:将example/get-started/hello_world/rtt拷贝到任意目录,比如c:\work\ws\hello_world

    ../_images/app_folder.png

    应用的目录结构

    +---project                // 工程目录
    |       Kconfig
    |       Kconfig.proj
    |       proj.conf          // 工程配置文件
    |       rtconfig.py
    |       SConscript
    |       SConstruct         
    |       
    \---src                    // 代码目录 
            main.c
            SConscript
            
    
  2. 打开Env命令行窗口:在SDK根目录右键菜单打开Env命令行窗口,运行set_env gcc设置环境参数

  3. 进入到工程目录:cd c:\work\ws\hello_world\project切换路径到拷贝的示例工程目录

  4. 编译:scons --board=em-lb525 -j8,这里选择的板子为em-lb525,参考支持的板子

    ../_images/create_app_and_build.png
  5. 烧写: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}

修改之后编译并下载程序,连接串口调试工具,复位后可以看到如图的打印输出

../_images/print_log.png

除了在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-lb525menuconfig --board=em-lb525_hcpu效果相同,都是以板子em-lb525的HCPU为对象配置当前工程。

执行menuconfig后打开如图的界面,可以使用方向键在不同菜单项间移动,按Enter键进入子菜单,按Space选中菜单项,确认修改都完成后,按D保存最小配置到工程目录下的proj.conf文件中(即project\proj.conf),该文件为文本文件,可以打开查看修改前后的差异,menuconfig的详细用法参见项目设置

../_images/menuconfig.png

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