查看: 1616|回复: 11

[资料] 设计笔记 | GD32开发平台现已支持Huawei LiteOS操作系统

  [复制链接]

207

主题

3

好友

1万

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    开心
    2017-4-1 08:37
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2017-3-29 09:16:08 |显示全部楼层
    本帖最后由 糖悦之果飞 于 2017-3-29 09:35 编辑


    Huawei LiteOS 是华为面向IoT领域,构建的"统一物联网操作系统和中间件软件平台",以轻量级(内核小于10k)、低功耗(1节5号电池最多可以工作5年),快速启动,互联互通,安全等关键能力,为开发者提供 "一站式" 完整软件平台,有效降低开发门槛、缩短开发周期。

    Huawei LiteOS 目前主要应用于智能家居、穿戴式、车联网、智能抄表、工业互联网等 IoT 领域的智能硬件上。,还可以和LiteOS生态圈内的硬件互联互通,提高用户体验。

    目前已开源的Huawei LiteOS内核源码已适配好GD32F450、GD32F190芯片,本文将以GD32F450IKH6芯片为例,介绍基于Cortex-M4核芯片的移植过程。
    环境准备
    基于Huawei LiteOS Kernel开发前,我们首先需要准备好单板运行的环境,包括软件环境和硬件环境。
    硬件环境:
    所需硬件
    描述
    GD32F450i-EVAL  V1.1单板
    GD32F450开发板(芯片型号GD32F450IKH6)
    PC机
    用于编译、加载并调试镜像
    电源(5v)
    开发板供电(使用Mini USB连接线)
    软件环境:
    软件
    描述
    Window 7 操作系统
    安装Keil
    Keil(5.18以上版本)
    用于编译、链接、调试程序代码 uVision V5.18.0.0 MDK-Lite
    DNW串口调试工具
    串口调试工具,根据个人喜好可使用其他的串口工具
    说明
    Keil工具需要开发者自行购买,GD32F190R-EVAL开发板的调试器是GD-Link,GD-Link免驱动安装。

    获取Huawei LiteOS 源码

    首先我们从github上下载Huawei LiteOS内核源代码,步骤如下:
    Huawei LiteOS-1.png

    点击”clone or download”按钮,下载源代码

    Huawei LiteOS的源代码目录的各子目录包含的内容如下:

    Huawei LiteOS-2.png

    关于代码树中各个目录存放的源代码的相关内容简介如下:

    一级目录
    二级目录
    说明
    doc

    此目录存放的是LiteOS的使用文档和API说明文档
    example
    api
    此目录存放的是内核功能测试用的相关用例的代码

    include
    aip功能头文件存放目录
    kernel
    base
    此目录存放的是与平台无关的内核代码,包含核心提供给外部调用的接口的头文件以及内核中进程调度、进程通信、内存管理等等功能的核心代码。用户一般不需要修改此目录下的相关内容。

    cmsis
    LiteOS提供的cmsis接口

    config
    此目录下是内核资源配置相关的代码,在头文件中配置了LiteOS所提供的各种资源所占用的内存池的总大小以及各种资源的数量,例如task的最大个数、信号量的最大个数等等

    cpu
    此目录以及以下目录存放的是与体系架构紧密相关的适配LiteOS的代码。比如目前我们适配了arm/cortex-m4及arm/cortex-m3系列对应的初始化内容。

    include
    内核的相关头文件存放目录

    link
    IDE相关宏定义
    platform
    GD32F190R-EVAL
    GD190开发板systick及驱动相关代码

    GD32F450i-EVAL
    GD450开发板systick及驱动相关代码
    projects
    GD32F190R-EVAL-KEIL
    gd32f190开发板的keil工程目录

    GD32F450i-EVAL-KEIL
    gd32f450开发板的keil工程目录
    user

    此目录存放用户代码,LiteOS启动代码在mian()函数中
    获取Huawei LiteOS源代码之后,我们可以将自己本地已有工程的代码适配到LiteOS内核工程中进行应用开发。
    如何适配LiteOS内核工程开发

    本章节描述的内容以GD32F450i-EVAL开发板的04_USART_Printf示例工程为基础,适配到LiteOS的GD32F450i-EVAL-KEIL工程中,演示串口输出、按键中断及LED点亮功能。
    GD32的开发资料获取

    注意:光盘上的内容可能比网络上的更全面一些,建议使用光盘上面的内容。
    GD32的开发包安装

    • 安装GigaDevice.GD32F4xx_DFP.1.0.1.pack或者更高版本的pack文件到keil安装目录
    • 安装GD32F4xx_Addon.1.0.1.exe到keil安装目录
    • 添加代码到LiteOS工程


    在LiteOS内核代码目录中新建GD32f450i_Library文件夹,将GD示例工程中使用到的代码拷贝到其中。
    Huawei LiteOS-3.png
    拷贝GD示例工程Library文件夹下的子文件夹到GD32f450i_Library文件夹中。
    拷贝GD示例工程04_USART_Printf文件夹下列文件到GD32f450i_Library文件夹中。
    GD示例工程代码目录结构
    Huawei LiteOS-4.png
    在LiteOS工程添加library目录,将GD示例工程中的源代码文件(main.c、startup_gd32f4xx.s文件除外)添加到library文件夹下。
    GD示例工程启动文件startup_gd32f4xx.s
    添加GD示例工程中startup_gd32f4xx.s文件到LiteOS工程startup文件夹下。
    Huawei LiteOS-5.png

    添加头文件搜索路径及编译宏选项
    LiteOS可直接使用GD示例工程中的启动文件,这样工程中要使用的中断及中断服务函数就注册好了,不需再使用LiteOS接口进行动态注册。在完成了代码添加及工程配置后,开始修改代码,步骤如下:
    • 注释gd32f4xx_it.c中的PendSV_Handler()及SysTick_Handler()函数,以免重复定义。
    • GD工程中SYStemSystemInit函数会调用system_clock_config()函数配置系统时钟,我们需要修改los_bsp_adapter.c文件中的sys_clk_freq变量值与实际配置的系统时钟一致。const unsigned int sys_clk_freq = 200000000;


    经过以上步骤的修改,完成了代码的初步移植,然后可以编译代码,连接串口线(事先安装相关驱动)并在串口调试工具中打开相应串口,调试运行时可看到串口打印输出,按demo板上的Tamper键,可以调试按键中断及LED。
    其它说明

    ###如何使用LiteOS 开发###
    LiteOS中提供的功能包括如下内容:任务创建与删除、任务同步(信号量、互斥锁)、动态中断注册机制等等内容,详细内容请参考《HuaweiLiteOSKernelDevGuide》。
    ###从零开始创建LiteOS工程###
    目前在LiteOS的源代码的projects目录下已附带一些开发板的内核示例工程,用户可以直接使用,如果您所使用的开发板(芯片型号)与在示例工程中找不到,您可以从零开始创建LiteOS工程,创建流程请参考《LiteOS_Migration_Guide_Keil》。
    ###关于中断向量位置选择###
    如果您需要使用LiteOS的中断注册机制,详细内容请参考《LiteOS_Migration_Guide_Keil》。
    ###kernel API###
    如果您需要测试LiteOS内核工程运行情况,详细内容请参考《LiteOS_Migration_Guide_Keil》。

    回复

    使用道具 举报

    132

    主题

    1

    好友

    3080

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    昨天 08:02
  • 签到天数: 768 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2017-3-29 09:50:17 |显示全部楼层
    那么好,正宗国产,支持啊
    回复

    使用道具 举报

    17

    主题

    0

    好友

    1603

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    2017-9-3 18:49
  • 签到天数: 113 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2017-3-29 09:57:27 |显示全部楼层
    这个很好呀
    回复

    使用道具 举报

    16

    主题

    0

    好友

    1727

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    7 天前
  • 签到天数: 83 天

    连续签到: 2 天

    [LV.6]常住居民II

    发表于 2017-3-29 10:02:21 |显示全部楼层
    这个就有点6了
    回复

    使用道具 举报

    4

    主题

    0

    好友

    1250

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    7 天前
  • 签到天数: 236 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2017-3-29 10:08:16 |显示全部楼层
    赞赞。。。
    回复

    使用道具 举报

    28

    主题

    0

    好友

    2216

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    昨天 20:09
  • 签到天数: 702 天

    连续签到: 2 天

    [LV.9]以坛为家II

    发表于 2017-3-29 10:12:45 |显示全部楼层
    这个搭配好 ,支持!!
    回复

    使用道具 举报

    0

    主题

    0

    好友

    44

    积分

    白丁

    Rank: 1

  • TA的每日心情
    郁闷
    2016-5-21 08:18
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-3-29 10:24:56 |显示全部楼层
    这个好,向华为靠拢抱大腿绝对没有错。
    回复

    使用道具 举报

    0

    主题

    0

    好友

    5

    积分

    白丁

    Rank: 1

    该用户从未签到

    发表于 2017-3-30 23:34:22 |显示全部楼层
    我顶,我支持。
    回复

    使用道具 举报

    35

    主题

    3

    好友

    5811

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 1576 天

    连续签到: 4 天

    [LV.Master]伴坛终老

    爱板会员勋章 活跃会员勋章 在线达人勋章 在线之王勋章

    发表于 2017-3-31 09:37:44 |显示全部楼层
    这个有意思,假如有机会拿到板子可以试试了。
    回复

    使用道具 举报

    4

    主题

    0

    好友

    282

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2017-8-14 22:42
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2017-3-31 17:52:46 |显示全部楼层

    我顶,我支持。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /3 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-9-26 08:16 , Processed in 0.793297 second(s), 20 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部