Files
kernel_uniproton/doc/getting_started.md
zhushengle 96229a5c97 feat: 引入UniProton内核源码
Close #I5T8GN
Signed-off-by: zhushengle <zhushengle@huawei.com>
2022-09-26 19:53:34 +08:00

2.2 KiB

快速入门:开发Hello World

快速入门通过完成经典的“Hello World”把搭建UniProton开发环境的各步骤进行实例说明,让用户更直观地初步了解如何基于UniProton进行开发。

开发环境说明

开发平台:cortex_m4

OS版本信息:Linux 集成开发环境:UniProton-docker

实现过程

  1. 进入到用户的工作目录,这里假设为/workspace/UniProton。
  2. 将UniProton的源码放在/workspace/UniProton目录下。
  3. 在docker环境中搭建工程。
  4. 配置链接器配置文件(.lds文件)。
  5. 配置功能模块,用户需要按照自己实际使用模块配置功能模块。
  6. 在该工程下规划各开发模块的目录结构,如在/UniProton/src/config/prt_config.c文件中实现用户程序。
  7. 在docker中编译整个工程,编译完成后在/UniProton/output目录下生成可执行文件hello。
  8. 加载到单板上运行可执行文件hello。

Hello World 示例程序

在main.c文件中编写Hello World示例程序,如参考内容如下(如前所述,PRT_HardBootInit/PRT_HardDrvInit接口中添加用户自定义硬件模块初始化程序,PRT_AppInit接口中添加用户业务代码):

#include "prt_task.h"
#include "prt_config.h"

#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif /* __cpluscplus */
#endif /* __cpluscplus */

U32 PRT_HardDrvInit(void)
{
    return OS_OK;
}
void PRT_HardBootInit()
{

}
void OsTskUser(void)
{
    printf("\n\r Hello World !\n\r");
}
 
U32 PRT_AppInit(void)
{
    U32 ret;
    TskHandle taskId; 
    struct TskInitParam taskParam;

    taskParam.taskEntry = (TskEntryFunc)OsTskUser;
    taskParam.stackSize = 0x800;
    taskParam.name = "uniUserTask";
    taskParam.taskPrio = OS_TSK_PRIORITY_05;
    taskParam.stackAddr = 0;

    ret = PRT_TaskCreate(&taskId, &taskParam);
    if (ret != OS_OK) {
        return ret;
    }
 
    return OS_OK;
}
 
#ifdef __cplusplus
#if __cplusplus
}
#endif /* __cpluscplus */
#endif /* __cpluscplus */

结果验证

在docker中编译整个工程后生成的可执行文件hello下载到单板上运行,输出结果如下:

Hello world!