RTOS开发环境使用指南
1. 系统概述¶
Pcupid使用的是FreeRTOS。FreeRTOS是一个开源的实时操作系统(Real-Time Operating System),与通用操作系统(如Windows、Linux)不同,RTOS专注于满足实时性要求,能够按照严格的时间要求来响应事件和处理任务。根据官网介绍,“FreeRTOS 是一款市场领先的嵌入式系统 RTOS,支持 40 多种处理器架构,内存占用小、执行时间快,并具有尖端的 RTOS 功能和库,包括对称多处理 (SMP)、支持 IPv6 的线程安全 TCP 堆栈以及与云服务的无缝集成。它是开源的,并得到积极的支持和维护。”
2. 代码编译¶
2.1. 配置工具链¶
export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- export PATH=/tools/toolchain/gcc-sigmastar-9.1.0-2019.11-x86_64_arm-eabi/bin:/tools/toolchain/gcc-10.2.1-20210303-sigmastar-glibc-x86_64_arm-linux-gnueabihf/bin:$PATH
2.2. 编译代码¶
根据Flash_Type选择对应的config
cd project make aiot-purertos_pcupid.spinand.glibc-10.2.1-ssm001c.128.qfn128_ddr3_defconfig make clean; make image -j16
2.3. 镜像烧录¶
使用ISP Tool 烧录前,请注意将串口断开连接,否则会出现verify fail 的错误。
2.3.1. nor flash 烧录¶
2.3.2. nand flash 烧录¶
2.3.3. estar升级¶
首先运行tftpd 软件,设置image路径
SP Tool烧写完成后进入到uboot,使用estar 烧写整个image
初始化网络
estart
设置板子ip和服务器ip
set -f ipaddr xxx.xxx.xxx.xxx set -f serverip xxx.xxx.xxx.xxx
执行estar脚本
estar
3. 使用说明¶
3.1.目录介绍¶
RTOS相关源码在\alkaid\rtos\proj目录下,
/alkaid/rtos/proj$ tree -L 1 . ├── add-config.mk ├── build ├── clear-config.mk ├── config.mak ├── gen_common_cfg.sh ├── gen_ext_cfg.sh ├── hdrs ├── Kconfig ├── libs ├── mak ├── Makefile ├── save_config.sh ├── sc ├── scatter ├── sc_priv ├── scripts ├── tng └── tools
目录说明:
-
目录mak,存放编译的配置文件,其中要编译的项目文件就存放在mak/defconfigs目录下
-
目录libs/product,是sdk的库文件目录,所有以library形式release的库,都在这个目录下
-
目录sc,是sdk中以源代码形式release的库和app所在的目录,其中application下的是demo程序,而driver目录下的是驱动
-
目录scatter,是link script所在目录
-
目录tools,是存放需要用到的tools的目录
3.2. 应用介绍¶
应用的相关源码在\alkaid\rtos\proj\sc\application\pipeline_demo\目录下
/alkaid/rtos/proj/sc/application/pipeline_demo$ tree -L 1 . ├── application_selector ├── common ├── disp_app ├── dualos_camera ├── dualos_pipeline ├── font ├── iqserver ├── Kconfig ├── lvgl ├── RtosPipelineDemo.mak └── usb_gadget_app
各应用目录下一般会包含inc/pub/src目录,
-
目录inc,存放的是模块(module)内部的头文件,不被其他模块使用的头文件
-
目录pub,存放的是会被其他模块使用的头文件
-
目录src,则是模块的源代码文件
-
函数rtos_application_initcall(),用来指定application模块的入口函数,第一个参数是函数名,第二个参数用于设置模块入口函数的执行顺序,一般都配置为0,当存在多个application模块时,可以通过配置参数0,1,2,3来决定application函数的执行顺序,数字越小会越早得到执行
3.3. 应用运行¶
RTOS提供了用户命令行操作,用户可以通过命令行测试或观察系统运行状态。在串口下输入"help",
以tinypcm命令为例,
SS-RTOS # tinypcm [aio_cli:550] [AIO] tokenCount 0 [aio_cli:554] tinypcm usage: -C capture -P playback -F define fileName -D card number: 0,1,2 -c channels: 1,2,4,6,8 -f format: 0(16bit), 1(24bit), 2(32bit) -r sample rate:8000/16000/32000/48000 -aoch attach interface:0(DAC_AB), 2(I2S_A), 3(I2S_B), 4(ECHO), 6(I2S_C) -ch01 attach interface:1(ADC_AB), 2(ADC_CD), 3(DMIC_A_01), 4(DMIC_A_23), 5(I2S_A_01) 6(I2S_A_23), 7(I2S_A_45), 8(I2S_A_67), 13(I2S_B_01), 21(I2S_C_01) 37(ECHO), 39(DMIC_A_45), 40(DMIC_A_67), 41(SPDIF_A_01) tinypcm SS-RTOS #
录音命令:tinypcm -C -F /misc/test.wav -r 48000 -ch01 3
播放命令:tinypcm -P -F /misc/test.wav -aoch 0