-
### 华为Liteos和物联网设备侧sdk移植到stm32F03ZE霸道板子上 ### 啥是LIteos “开源免费”的实时操作系统,集成了 LwM2M、CoAP、mbed TLS、LwIP 全套 IoT 互联协议栈,且在 LwM2M 的基础上,提供了 AgentTiny 模块,用户只需关注自身的应用,而不必关注 LwM2M 实现细节,直接使用 AgentTiny 封装的接口即可简单快速实现与云平台安全可靠的连接。属于国产的实时操作系统(RTOS) ### 基于标准库移植 下载源码,[https://github.com/LiteOS/LiteOS](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); } //其余见下载附件 ``` ### 运行结果   工程见网盘: ``` 非接管中断: 链接:https://pan.baidu.com/s/1UQ2L6nZfoqFaa3DL2l20TA 提取码:ikrv 复制这段内容后打开百度网盘手机App,操作更方便哦 接管中断: 链接:https://pan.baidu.com/s/1UbFJy7wRztPnQWQhLrjavg 提取码:95pf 复制这段内容后打开百度网盘手机App,操作更方便哦 ```
-
### 问题一:iteos下的target_config.h中的#defind LOSCFG_PLATFORM_HWI YES 是代表接管系统中断吗?,那我标准库的stm32f10x_it.c是不是可以直接去掉?假设去掉stm32f10x_it.c后是不是要修改启动文件,那华为有提供接管中断的启动文件的参考代码?或者例程代码吗?或者要自己修改?,怎么修改,有教程吗?,我的板子是stm32F103ZET  -  ### 问题二:板子是有人物联网的,看似有二次封装指令,官方的指令指导书没有我上图红框的指令,有人在4G模块板子集成多了一个stm32,更可怕的是很多指令没有OK回应,直接就是结果或者没结果就不回应, 如何没有红框的指令,是不是要换通信模块,或者又其他办法吗,或者帮我看看该模块的AT指令说明书,看看是不是可以有指令实现?换,有推荐的4g模块,最好有那种别人写好的通信驱动.c文件的模块, -  -  - USR_G700模块AT指令见附件 ### 问题三 - 
-
对于很多新手来说,都会遇到这样一个问题,这么多代码,我要从哪里开始学,我要怎么去学习?要怎么快速上手一套代码?先介绍一个定律:二八定律二八定律是19世纪末20世纪初意大利经济学家帕累托发现的。他认为,在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%尽管是多数,却是次要的,简单来说,就是抓住关键的代码。我介绍一下我学代码的方法,给大家做个参考。首先,就是先把代码运行起来。用起来。把样例跑起来。开调试信息,多操作,看看执行流程!然后再对比差异,找到修改点,在什么地方,加什么代码实现什么功能。一点点往外扩展学习。使用工具:Beyond Compare 4使用的代码:github下载的liteos源码。https://github.com/LiteOS/LiteOS小熊开发版提供的两套代码。未完待续。。。
-
在用LiteOS Studio编译和烧录文件时,大家是否清楚,代码是怎么构建起来的,最终烧录到开发版的文件是哪个,怎么生成的?在导入工程后,都是需要设置我们工程的Makefile,LiteOS Studio才能正常编译我们的代码,有没有朋友认真地看过这个文件?前方高能!!接下来我们对这个文件来进行肢解!!!!我们以小熊开发部提供的样例(E53_IA1)来进行分析:Makefile 所在目录:E53_IA1\targets\STM32L431_BearPi\GCC\Makefile简单的普及下Makefile几个怪怪的符号,大佬请忽略:格式:[目标文件 产品] : [依赖文件,原材料] 对原材料的处理样例:XXX : aaa bbb ccc $(CC) $^ -o $@ $(CC) $< -o $@$@--目标文件->XXX $^--所有的依赖文件->aaa bbb ccc$<--第一个依赖文件->aaa还有一个%.c 代表所有以.c结尾的文件makefile里的函数:return = $(functionname arg1,arg2,arg3...)。这里用到的函数有:$(addprefix 前缀,加前缀对象) 加前缀函数。$(notdir $(C_SOURCES:.c=.o)) 去除所有的目录信息,文件名列表将只有文件名$(sort $(dir $(C_SOURCES))) 排序函数 并去重$(dir $(C_SOURCES)) 取目录函数$(wildcard $(BUILD_DIR)/*.d) 扩展通配符 列举所有.d文件继续!!!!//包含配置选项文件include config.mkinclude prune.mk//定义我们生成目标文件名,最终我们会生成.elf .bin .hex这三个家伙,用于烧录和调试TARGET = Huawei_LiteOS定义编译工具链:PREFIX = arm-none-eabi-//编译链前缀CC = $(PREFIX)gcc //编译工具AS = $(PREFIX)gcc -x assembler-with-cpp //汇编工具OBJCOPY = $(PREFIX)objcopy //拷贝工具 可以进行格式转换OBJDUMP = $(PREFIX)objdump //反汇编工具AR = $(PREFIX)ar //打包工具 生成静态库SZ = $(PREFIX)size //列出程序文件中各段的大小LD = $(PREFIX)ld //链接工具HEX = $(OBJCOPY) -O ihex //生成十六进制文件BIN = $(OBJCOPY) -O binary -S //生成二进制镜像文件 用户烧录//定义编译文件生成目录BUILD_DIR = build添加原材料:添加汇编源码ASM_SOURCES_s = \ ${wildcard $(PROJECTBASE)/los_startup_gcc.s}添加C语音源码 .......C_SOURCES += $(HAL_DRIVER_SRC).......添加宏定义 .......C_DEFS += -DMBEDTLS_DEBUG_C .......添加C语音头文件 .......C_INCLUDES += $(OTA_INC) .......添加汇编头文件AS_INCLUDES = 生成汇编混编文件(.lst):$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) //在生成.o的文件的同时,将“-a,-ad,-alms=XX”选项传递给汇编程序,生成.lst文件,这些文件在单步调试,汇编代码窗口,显示的就是该文件。$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@左边为main.lst 右边为单步调试时,汇编窗口。生成依赖关系信息文件(.d): (这是我们看到build目录下有很多.d文件的原因)CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" //包含所有.d文件。-include 当文件不存在是不报错退出。没带“-”则会报错退出-include $(wildcard $(BUILD_DIR)/*.d)材料准备好了,开始生产拉设置编译选项CFLAGS设置引用的库LIBS设置链接选项LDFLAGS开始生产者三个家伙啦!all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin文件生成路径:.c ---> .o ---> .elf --->.bin .hex ^ |.s ---> .o---------//编译所有.c文件$(BUILD_DIR)/%.o: %.c Makefile config.mk prune.mk | $(BUILD_DIR)$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@//编译所有.s汇编文件$(BUILD_DIR)/%.o: %.s Makefile config.mk prune.mk | $(BUILD_DIR)$(AS) -c $(CFLAGS) $< -o $@//生成ellf文件$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile config.mk prune.mk$(CC) $(OBJECTS) $(LDFLAGS) -o $@$(SZ) $@//生成十六进制文件$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)$(HEX) $< $@//生成二进制文件$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)$(BIN) $< $@后续将以此作为学习笔记,从不同的角度来学习liteos及iot相关的知识:下一个笔记:利用对比工具,看看开发版提供的例程和liteos源码的区别,浅谈liteos的移植。
-
如今,即便是不懂技术的人都知道IoT具有非常可观的前景,而物联网产业的发展并非一帆风顺,其中制约行业发展的一大关键技术就是通讯技术,一因为物联网要实现的就是物体间的信息交换和通信,没有通讯技术,物联网就是空谈。在物联网产业的发展过程中,逐渐形成了NB-IoT、eMTC、LoRa三大通讯技术的三足鼎立,每种技术各有千秋,在各自的应用场景上有独特的优势。IoT是碎片化的,这就要求协议间的兼容与互通,虽然三种技术想互存在竞争,但是未来NB-IoT、eMTC、LoRa也是需要想互融合的,因为最好的技术一定是包容的。一、NB-IoT这是一个新兴的技术,中文叫窄带物联网,从名字上就知道非常适合物联网场景。在带宽和成本上的优势明显,NB-IoT构建于蜂窝网络,只消耗大约180KHz的带宽,可直接部署UMTS网络、LTE网络和GSM网络,很容易实现网络的升级。同时,相对于4G网络,它支持的待机时间长,连接高效,而且联网设备的电池寿命很高。NB-IoT的优势应用场景正是因为NB-IoT技术成本低、功耗低,所以在定位、水表和停车等领域应用很广泛,如共享单车里就有内置NB-IoT模组,实现物联网通讯。智能零售,智能家居,智能安防和智慧城市等都是其未来潜在的应用场景。NB-IoT虽然很好,但在国内的发展现状是缺乏一个统一的开放产业平台,同时标准、芯片、网络和相关的应用层厂商以中小企业为主,还需要壮大自身联盟的实力,打造强大的生态。二、eMTC虽然NB-IoT能满足物联网很多的应用场景,但是在可靠低时延等场景里面,eMTC才是最优解。eMTC是由LTE协议演进而来的,也就是中国移动的通讯协议。移动为了降低成本,对LTE协议进行优化,让用户设备支持1.4MHz的射频和基带带宽,直接接入LTE网络,因为从持久发展上,物联网成本是必须考虑的事情。eMTC更适合这些场景正是由于频率低和协议简单,eMTC芯片的成本可能比NB-IoT芯片的成本更低,eMTC的移动性更好,这就让它在动态物联网场景中优势是好于NB-IoT的。eMTC在智能物流的应用很广泛,京东的无人送货车上就有eMTC芯片。现在很多的智能穿戴产品上有检测和定位功能,也有eMTC技术的身影。未来,可能在智能公交、智能电梯等场景也能看到eMTC技术。eMTC与NB-IoT技术实现物联网是完全不同的两种思路,eMTC终端工作带宽高于NB-IoT终端五倍以上,eMTC技术能够提供性价比很高的终端通讯解决方案,这比B-IoT技术在成本上的优势还要好。三、LPWAN(LoRa)熟悉LPWAN通信技术的都知道,LPWAN通信是一种低功率广域网络,是一种可以用低比特率进行长距离通讯的无线网络技术。对于很多低电量需求、低比特率等场景,物联网LPWAN技术就是非常不错的选择。LPWAN技术是可以用来建立一个私有无线感测网络,可以利用第三方提供的服务和基础设施,这使得可以直接使用公共的感测器,节省了很多硬件成本,对网络部署方而言很有诱惑力。目前最火的LPWAN技术就是LoRa,LoRa有个中文名叫做远距离无线电,它的一大特点是在同样功耗下比其它无线方式传播的距离更远,实现了低功耗和远距离的统一,是一种前景广阔的通讯技术。LoRa网络主要由四部分组成,它们是基站(也可以是网关)、服务器、LoRa终端和物联网云。LoRa的特点是应用端和服务器端数据双向传递。LoRa的优势是超低功耗和多信道数据传输,系统数据容量增加了,网关和终端系统能支持测距和定位,对于位置敏感的应用简直就是量身定做。据悉,阿里曾表示,要在未来5年内连接100亿台设备。LoRa在物流、健康医疗、智能环境、运输等领域的优势很明显,这些恰恰是阿里巴巴布局的领域,也难怪要重金布局。物联网已经不只是一种想象的场景,它已经成为我们生活的一部分,人们通过定位技术监控,通过通讯技术联网,通过物联网减少交通事故等,这些都离不开物联网通讯技术的支持,NB-IoT、eMTC、LoRa技术各有千秋,随着物联网产业的发展,三者必将发挥更大的作用。
G-washington
发表于2019-09-03 20:54:16
2019-09-03 20:54:16
最后回复
G-washington
2019-09-03 20:54:16
5361 0 -
https://bbs.huaweicloud.com/videos/ff688537836a440ba5ef3b13a50fe052往期回顾链接第一期:驻足10分钟,轻松掌握开发全流程Link第二期:驻足5分钟,轻松掌握平台申请和项目创建~Link第三期:驻足5分钟,轻松掌握Profile在线开发~Link第四期:驻足5分钟,轻松掌握编解码插件在线开发~Link第五期:驻足5分钟,轻松掌握设备在线调试~Link第六期:驻足5分钟,轻松掌握应用调试指导~Link第七期:驻足5分钟,轻松掌握应用订阅功能调试指导~Link
-
进入后,一直处于黑框状态,无法输入,无法关闭,怎么使用?
-
移植LiteOS 发生空间不足使用单片机为: STM32L073RZ 程序是最小工程模块 就开启了一个串口外设。应该不会发生空间不足吧?报错如下:
-
如题,教程上所说的在开发者工具中下载完全找不到啊
-
1. 请前往华为e学云,学习【IoT在线训练营】第四章;立即前往2. 完成课程小作业,并将作业晒出回复至本帖;3. 抽取6人,奖励50元购物卡。回帖格式:1、 截图中有华为云账号2、 截图中有调测结果(串口终端能看到任务交替打印)样例: 工具代码下载:LiteOS Studio:https://bbs.huaweicloud.com/forum/thread-16609-1-1.html代码:见本贴附件,Project1.part01.rar和Project1.part02.rar两个都需要下载,解压其中一个即可。获奖规则:截止至4月18日00:00,若回帖层数为N,则楼层数为:Nx0.1~0.6的用户获得奖励(四舍五入取整数)举个栗子:假设截止日期前回帖101楼,则获奖用户为:10楼,20楼,30楼,40楼,51楼,61楼。注意!ü 获奖者必须完成课程小作业且班主任审核合格;ü 在本系列活动中同一ID不可重复获得购物卡;ü 禁止刷帖行为(超过5条);ü 若获奖者违规或不具备领奖资格,奖品自动顺延至下一楼。
-
找不到基于STM32F103 接入IOT平台的例程呢。
-
Huawei LiteOS 编程,语法求指导?1、 UINT32 ulRet = LOS_OK;这句是设置32位无符号整数ulRet,而ulRet = LOS_OK,什么意思?2、TSK_INIT_PARAM_S stTask = {0};设置个stTask数组还是什么意思?TSK_INIT_PARAM_S什么意思?
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签