• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1## 快速入门:开发Hello World
2快速入门通过完成经典的“Hello World”把搭建UniProton开发环境的各步骤进行实例说明,让用户更直观地初步了解如何基于UniProton进行开发。
3
4## 开发环境说明
5开发平台:cortex_m4
6
7OS版本信息:Linux
8集成开发环境:UniProton-docker
9### 实现过程
10<ol>
11<li>进入到用户的工作目录,这里假设为/workspace/UniProton。</li>
12<li>将UniProton的源码放在/workspace/UniProton目录下。</li>
13<li>在docker环境中搭建工程。</li>
14<li>配置链接器配置文件(.lds文件)。</li>
15<li>配置功能模块,用户需要按照自己实际使用模块配置功能模块。</li>
16<li>在该工程下规划各开发模块的目录结构,如在/UniProton/src/config/prt_config.c文件中实现用户程序。</li>
17<li>在docker中编译整个工程,编译完成后在/UniProton/output目录下生成可执行文件hello。</li>
18<li>加载到单板上运行可执行文件hello。</li>
19</ol>
20
21### Hello World 示例程序
22main.c文件中编写Hello World示例程序,如参考内容如下(如前所述,PRT_HardBootInit/PRT_HardDrvInit接口中添加用户自定义硬件模块初始化程序,PRT_AppInit接口中添加用户业务代码):
23```c
24#include "prt_task.h"
25#include "prt_config.h"
26
27#ifdef __cplusplus
28#if __cplusplus
29extern "C" {
30#endif /* __cpluscplus */
31#endif /* __cpluscplus */
32
33U32 PRT_HardDrvInit(void)
34{
35    return OS_OK;
36}
37void PRT_HardBootInit()
38{
39
40}
41void OsTskUser(void)
42{
43    printf("\n\r Hello World !\n\r");
44}
45
46U32 PRT_AppInit(void)
47{
48    U32 ret;
49    TskHandle taskId;
50    struct TskInitParam taskParam;
51
52    taskParam.taskEntry = (TskEntryFunc)OsTskUser;
53    taskParam.stackSize = 0x800;
54    taskParam.name = "uniUserTask";
55    taskParam.taskPrio = OS_TSK_PRIORITY_05;
56    taskParam.stackAddr = 0;
57
58    ret = PRT_TaskCreate(&taskId, &taskParam);
59    if (ret != OS_OK) {
60        return ret;
61    }
62
63    return OS_OK;
64}
65
66#ifdef __cplusplus
67#if __cplusplus
68}
69#endif /* __cpluscplus */
70#endif /* __cpluscplus */
71```
72
73### 结果验证
74在docker中编译整个工程后生成的可执行文件hello下载到单板上运行,输出结果如下:
75```
76Hello world!
77```