摘要:前两天收到了中国移动送OneOS开发板。相信很多人还不了解中国移动OneOS,今天跟大家一起开箱中国移动OneOS万耦天工精英板STM32F103ZET6,来看看中国三大运营商之一的中国移动OneOS开发板长啥样!
聪明的你可能已经发现,这不就是正点原子的精英版吗?除了印有10086这个LOGO外,其他的感觉一模一样啊!

还好我手上有正点原子的精英版。拿出来一看,Oh my God ! 一毛一样!
如果你不仔细看,你都不知道这是中国三大运营商之一的中国移动OneOS的开发板。这两块板子除了LOGO不一样,其他所有的软硬件都是一样的。所以如果各位手上有正点原子的精英版可以直接拿来用!

于是我打开了中国移动OneOS的官网…..
发现中国移动OneOS一共出了四款板子,其中有两款是和正点原子合作的:STM32F103ZET6精英版和STM32MP157开发板。

![]() | ![]() | ![]() | ![]() |
哦,原来是和正点原子合作的。合作才能共赢嘛,对吧!

开完箱后就来建一个工程吧!
1、开发环境
目前,OneOS 开发环境主要有两种,分别是:
- 基于命令行的OneOS-Cube开发环境;
- MDK开发环境。
这两种开发环境都支持在Windows操作系统下运行,OneOS-Cube支持Linux操作系统。OneOS-Cube目前支持的主要功能如下:
- 系统配置;
- 项目编译构造;
- 包贡献和下载;
- 生成MDK(KEIL)工程。
在使用MDK开发环境时,由于OneOS配置项繁多,很难正确手动在MDK工程添加完整的待编译文件,因此建议使用OneOS-Cube工具根据Menuconfig生成的配置文件和Scons编译脚本生成正确的MDK工程,之后再使用MDK进行编译、烧录以及调试。
1.安装MDK
安装mdk这里就不做演示了,相信大家的电脑安装的有keil软件
2.安装OneOS-Cube
OneOS-Cube是OneOS操作系统基于命令行的开发工具,提供系统配置、项目编译构造、包贡献下载等功能。安装工具下载链接https://os.iot.10086.cn/download/
。下载完成后,文件如下:

双击OneOS-Cube.bat
打开工具时,命令行工具的工作目录为当前OneOS-Cube.bat
目录,为了配置和编译实际项目工程,需要切换到工程目录下。为了简化操作,可以把OneOS-Cube工具界面的操作加到右键功能中,这样可以在项目工程中直接打开OneOS-Cube工具。

依次输入如下命令,将OneOS-Cube添加到右键菜单中。

2、构建工程
OneOS v2.0.1
版本已经为开发者搭建了OneOS
当前所支持的MCU的标准工程模板,存放在OneOS\templates
目录下,需要注意的是,开发者在使用OneOS-Cube
生成工程时,使用的就是这个目录下的标准工程模板,所以禁止开发者在不和OneOS系统支持团队沟通的前提下,随意修改此目录下的任意文件。
工程模板的目录如下图所示:

上图的OneOS-V2.0.1\templates
路径中,存放的是OneOS当前所支持的MCU的标准工程模板,这些工程并不能直接用作开发工程,所以接下来将会向开发者演示,如何创建一个基于STM32F103ZET6
的演示工程。
打开OneOS\project目录,在安装OneOS-Cube
的时候,就把OneOS-Cube添加到右键菜单栏中,目的就是为了使OneOS-Cube在特定的目录下启动,在OneOS\project目录下打开右键菜单栏,选择OneOS-Cube Here,如下图所示:
OneOS-Cube启动之后,命令行窗口如下图所示:

输入project.bat
命令,如下图所示:

按Enter
键执行project.bat
命令之后,开始选择工程代码的MCU型号,按照 芯片厂商MANUFACTORY–>芯片系列SERIES–>芯片型号MODEL–>芯片子型号SUB MODEL,依次选取所需的MCU,演示工程我们选择的MCU是stm32f103zet6,所以选择的结果如下图所示:

选择好所需的芯片型号之后,按下Q
键退出设置菜单,这将会自动保存当前设置并生成工程代码,如果配置没有问题,那么OnsOS-Cube将会开始生成工程代码,整个过程如下图所示:

当工程代码生成结束之后,看到最后一行的scons: done building targets
意味着工程构建成功,工程可以正常使用。
打开目录OneOS\project
,可以看到演示工程已经建立完成,演示工程的目录名称默认就是芯片的型号,如下图所示:

打开演示工程目录OneOS\projects\stm32f103zet6-atk-elite
,可以看到project.uvprojx
,双击即可在MDK5
中打开演示工程,如下图所示:

在演示工程目录中,可以看到application
文件夹,这个目录就是存放功能代码的目录,比如在演示工程中,主要的功能只有LED的演示代码,这段代码写在main.c文件中,所以在OneOS\projects\stm32f103zet6-atk-elite\application
目录下就可以看到main.c
这个文件。
开发者在后续的开发过程中,业务功能相关的代码文件都可以放到OneOS\projects\stm32f103zet6-atk-elite\application
目录下。

3、演示工程
在MDK5中打开演示工程,点击Build
编译按钮,编译成功之后如下图所示:

#include <board.h>
#include <os_task.h>
static void user_task(void *parameter)
{
int i = 0;
for (i = 0; i < led_table_size; i++)
{
os_pin_mode(led_table[i].pin, PIN_MODE_OUTPUT);
}
while (1)
{
for (i = 0; i < led_table_size; i++)
{
os_pin_write(led_table[i].pin, led_table[i].active_level);
os_task_msleep(200);
os_pin_write(led_table[i].pin, !led_table[i].active_level);
os_task_msleep(200);
}
}
}
int main(void)
{
os_task_t *task;
task = os_task_create("user", user_task, NULL, 512, 3);
OS_ASSERT(task);
os_task_startup(task);
return 0;
}
通过OneOS-Cube工具可以直接生成MDK实例代码,这个代码很简单,首先定义了一个os_task_t的结构体指针类型的变量,然后通过os_task_create()
函数创建了一个user_task的任务线程函数,接着使用断言函数assert()
检查返回的参数是否正确,如果条件成立就不进行任何操作,如果条件不成立就捕捉到这种错误,并打印出错误信息,终止程序执行。最后调用os_task_startup()
函数开启OneOS的任务调度。
4、试验现象
将代码进行编译下载,这里分别使用了精英板和OneOS的万耦天工板子进行测试。结果如下:
万耦天工开发板
正点原子开发板
