华为Liteos和物联网设备侧sdk移植到stm32F03ZE霸道板子上

推荐官方教程:https://liteos.github.io/

啥是LIteos

“开源免费”的实时操作系统,集成了 LwM2M、CoAP、mbed TLS、LwIP 全套 IoT 互联协议栈,且在 LwM2M 的基础上,提供了 AgentTiny 模块,用户只需关注自身的应用,而不必关注 LwM2M 实现细节,直接使用 AgentTiny 封装的接口即可简单快速实现与云平台安全可靠的连接。属于国产的实时操作系统(RTOS)

基于标准库移植

下载源码,https://github.com/LiteOS/LiteOS\

往裸机工程添加 LiteOS 源码

打开 LiteOS 源码文件,可以看见里面有 8 个文件夹,下面先来了解一下主要的文件夹及其子文件夹的作用,然后将 LiteOS 源码的核心文件提取出来,添加到工程根目录下的文件夹中,因为工程只需要有用的源码文件,而不是整个 LiteOS 源码,

添加LiteOS 系统的一些配置文件,含原厂芯片驱动

将 OS_CONFIG 文件夹下面的一些配置文件拷贝到刚刚提取的 LiteOS 核心文件夹下面,等下在移植工程的时候大家是需要对这个文件夹下的某些文件进行修改,以适配不同的工程配置,并且可以通过修改这个文件夹下的内核配置头文件来裁剪 LiteOS 的功能。

添加 CMSIS的库,可以打开工程在mdk里面添加,也可以新建\Libraries\CMSIS\include,include文件夹从 keil 安装目录下C:\Keil_v5\ARM\Pack\ARM\CMSIS\5.3.0\CMSIS\Include,将其包含进来可以避免其它电脑

在移植过程中没有相关头文件而引起的编译错误

打开工程,添加 LiteOS 核心源码到工程组文件夹

需 要 在 开 发 环 境 里 面 新 建 LiteOS/cmsis 、 LiteOS/kernel 、 LiteOS/arch 和LiteOS/config 四个文件分组,其中 LiteOS/cmsis 用于存放 LiteOS 文件夹下 cmsis 文件夹的内容,LiteOS/kernel 用于存放 LiteOS 文件夹下 kernel 文件夹的内容,LiteOS/arch 用于存放LiteOS 文件夹下 arch 文件夹的内容。而 LiteOS/config 用于存放 LiteOS 文件夹下的OS_CONFIG 文件夹的内容。

指定 LiteOS 头文件的路径

修改liteos/config文件下的target_config.h,修改自己板子对应的头文件

修改LOSCFG_PLATFORM_HWI,如果是YES代表接管中断,否则不被接管

非接管中断版本的 target_config.h 文件就需要在 LiteOS 提供的 demo 中移植过来 , 比 如 : LiteOS\targets\STM32F103RB_NUCLEO\OS_CONFIG,启动文件不变,保留stm32f10_it.c但需要注释 void PendSV_Handler(void)与 SysTick_Handler(void)这两个函数

接管中断版本的target_config.h文件就需要从 LiteOS 官方写的工程文件夹下面拷贝过来的,路径为\LiteOS\targets\ STM32F429IGTx_FIRE\OS_CONFIG

启动文件内容修改(接管中断,非接管不用管)

因为 LiteOS 接管中断版本的中断向量表是由系统管理的,所以裸机的启动文件是要不得的,必须替换掉,

分散加载文件修改(接管中断方式,非接管不用管)

在 LiteOS 中,中断向量表被放在运行内存里,避免影响分配内存,那么就需要将代码分散加载到不同的区域中,华为官方提供的分散加载文件就在每个具体的工程文件目录下,如 : LiteOS \targets\ STM32F429IGTx_FIRE\MDK-ARM 文 件 夹 下 的 STM32F429IGTx-LiteOS.sct 文件。首先将它拷贝到我们自己的工程中去,并且将其名字修改为“Fire-F103-LiteOS.sct”,放在工程的 user 文件夹中,然后在工程中把 “Fire-F103-LiteOS.sct”文件到工程配置中

修改中断相关文件(非接管中断,接管中断不用管)

由于 LiteOS 已经处理好 PendSV 与 SysTick 中断了,就不需要用户自己处理,所以要在中断相关的源文件(stm32fxxx_it.c)中注释(删除)掉 void PendSV_Handler(void)与 SysTick_Handler(void)这两个函数。

更新core_m3.h版本到4.3,复制粘住就可以了

打开keil安装目录,把版本新的cmsis的include替换工程下的cmsis的include,防止你的工程的cmsis的include版本低于4,同时

修改工程配置

在 LiteOS 中,需要 C99 标准的支持,并且忽略相关的警告,选择“target”→ “C/C++”,在“Misc Controls”选项中输入--diag_suppress=1,47,177,186,223,1295,意思是忽略这些编号的警号,

经初步完成工程的移植了,LiteOS 的接管中断比非接管中断方式要麻烦很多,所以推荐在 cortex-m 系列处理器中采用非接管中断方式移植工程,

在main文件添加led任务

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "stm32f10x.h"
#include "los_sys.h"
#include "los_task.ph"
UINT32 LED_Task_Handle;
static UINT32 AppTaskCreate(void);
static UINT32 Creat_LED_Task(void);
static void LED_Task(void)
int main(void)
{
UINT32 uwRet = LOS_OK;
delay_init();
LED_Init();
/* LiteOS Äں˳õʼ»¯ */
uwRet = LOS_KernelInit();
if (uwRet != LOS_OK)
{
printf("LiteOS ºËÐijõʼ»¯Ê§°Ü£¡Ê§°Ü´úÂë0x%X\n",uwRet);
return LOS_NOK;
} uwRet = AppTaskCreate();
if (uwRet != LOS_OK)
{
printf("AppTaskCreate´´½¨ÈÎÎñʧ°Ü£¡Ê§°Ü´úÂë0x%X\n",uwRet);
return LOS_NOK;
}
LOS_Start();
while(1);
}
//其余见下载附件

运行测试Liteos是否移植成功

工程见网盘:

非接管中断:
链接:https://pan.baidu.com/s/1UQ2L6nZfoqFaa3DL2l20TA
提取码:ikrv
复制这段内容后打开百度网盘手机App,操作更方便哦
接管中断:
链接:https://pan.baidu.com/s/1UbFJy7wRztPnQWQhLrjavg
提取码:95pf
复制这段内容后打开百度网盘手机App,操作更方便哦

img{
width: 60%;height: 60%;
}

华为Liteos移植到stm32F03ZE的更多相关文章

  1. 【LiteOS】Liteos移植篇

    目录 前言 链接 参考 笔录草稿 移植(2018) 移植获取 (Cortex-M 内核) 主要文件夹分析 移植过程 1. 拷贝文件 2. 创建工程分组 3. 添加头文件路径 4. 兼容 C99 模式 ...

  2. 【LiteOS】LiteOS移植常见问题

    发现很多人在LiteOS的移植过程中总会遇到一些问题,现在简单做一些总结.后续有新的问题提再继续补充. 1.CMSIS版本导致的问题 问题现象一般如下图所示,编译后报错,Undefined symbo ...

  3. 漫谈LiteOS之开发板-LiteOS移植(基于GD32450i-EVAL)

    1 为什么移植? 嵌入式设备的芯片型号和外设的差异较大,资源有限.而RTOS无法适配集成所有的驱动,因此会先适配部分开发板,然后通过移植使得适配更多的开发板. 可移植性是嵌入式操作系统与普通操作系统的 ...

  4. 华为LiteOS系统使用-任务调度函数-第一篇

    1.最近项目遇到华为的LiteOS小型操作系统,使用学习 2. 先打开一个工程LiteOS_Kernel-master\projects\LPC824_LITE_KEIL 3. main.c里面2个关 ...

  5. 华为liteos了解(一)

    我来补充一下,从@華仔答案的提供的wiki中看,随便翻了一下,内核部分和协议栈的接口部分代码风格完全不一致.协议栈和相关的代码应该是直接使用或者修改了uIP (micro IP)的实现,所以整体感觉应 ...

  6. 【LiteOS】STM32F103-LiteOS移植教程(详细篇)【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  7. 【LiteOS】STM32F103-LiteOS移植教程(详细篇)

    总览 本文基于STM32F103C8T6,详细讲述华为LiteOS的移植过程.开发工具是MDK5.LiteOS官方已经适配过cortex M系列内核的单片机,因此移植过程非常简单. LiteOS有两种 ...

  8. 在秉火STM32F429挑战者开发板上移植Huawei LiteOS指南

    昨天在B站上突然看到了一个短视频,是在正点原子的战舰V3开发板上移植华为的Huawei LiteOS操作系统,就是这个视频:看完鸿蒙OS发布会,试用华为的物联网操作系统Lite OS(B站),于是呢, ...

  9. 手把手教你丨小熊派移植华为 LiteOS-M

    摘要:本文详细讲解如何移植 LiteOS 到小熊派. 本文分享自华为云社区<小熊派移植华为 LiteOS-M(基于MDK)>,作者: JeckXu666. 前言 之前使用小熊派实现了鸿蒙动 ...

随机推荐

  1. jquery动态加载并解决被加载页面js失效问题

    代码布局结构分为 header  left  content html代码如下: <!DOCTYPE html> <html lang="zh-CN"> & ...

  2. Java基础 IO流的文件和目录的五类主要操作

    笔记: /** IO流的 文件和目录的操作 * 1.路径需要 需要两个反斜杠 或者一个单斜杠! * 绝对路径:包括盘符在内的完整的路径名! * 相对路径:在当前目录文件下的路径! * 2.File 是 ...

  3. Dapper+Mysql 使用LIKE模糊查询写法踩坑

    LIKE '%@Title%' 会解析成'%'@Title'%' 这里用拼接也是不行的'%'+@Title+'%' 只能用MySQL函数方法拼接 public dynamic GetListByFil ...

  4. 内网端口映射+dnslog

    以前的DNSLOG部署在公网上也即自己的服务器上,产品依赖个人的环境不是很好.于是做了修改. 框架 细节 1)A域名的域名服务器指向B域名 ns0.B.com ns1.B.com 2)B域名的两个ns ...

  5. Codeforces Round #551 (Div. 2) E. Serval and Snake (交互题)

    人生第一次交互题ac! 其实比较水 容易发现如果查询的矩阵里面包含一个端点,得到的值是奇数:否则是偶数. 所以只要花2*n次查询每一行和每一列,找出其中查询答案为奇数的行和列,就表示这一行有一个端点. ...

  6. 【基本算法入门-字符串哈希(Hash)】-C++

    字符串哈希入门 说得通俗一点,字符串哈希实质上就是把每个不同的字符串转成不同的整数. 为什么会有这样的需要呢?很明显,存储一个超长的字符串和存储一个超大但是能存的下的整数,后者所占的空间会少的多,但主 ...

  7. LOJ #121. 「离线可过」动态图连通性 LCT维护最大生成树

    这个还是比较好理解的. 你考虑如果所有边构成一棵树的话直接用 LCT 模拟一波操作就行. 但是可能会出现环,于是我们就将插入/删除操作按照时间排序,然后依次进行. 那么,我们就要对我们维护的生成树改变 ...

  8. 7月清北学堂培训 Day 2

    今天是林永迪老师的讲授~ 继续昨日的贪心内容. 我们继续看例题: 分析样例的过河方法: 首先1和2先过河,总时间为2: 然后1回来,总时间为3: 然后5和10过河,总时间为13: 然后2回来,总时间为 ...

  9. JavaWeb_(SpringMVC框架)SpringMVC入门

    Spring MVC又叫SpringWebMVC是一个轻量级的基于请求响应的表现层框架.它是Spring框架的一部分.SpringMVC与Struts2都可以替代原始Servlet技术. Spring ...

  10. redis几种模式的部署(Windows下实现)

    <参考>http://www.cnblogs.com/ruiati/p/6374152.html 1.   自行下载redis客户端.redis官方不支持Windows系统,所以官网上是下 ...