完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
1 前言
随着2016年NB-IoT技术标准的冻结,物联网(IoT)整个领域迎来新一轮的快速发展,行业机构预测物联网技术(IoT)在2017~2021期间将持续火爆。同时随着大数据、云计算、IoT技术等进一步发展与成熟、芯片存储成本的降低、IoT应用的快速普及等等,物联网RTOS作为IoT设备的基础软件,在一定程度上可以破解物联网下游的碎片化困局,加快下游物联网应用的开发进程,因此再次焕发新生。 物联网RTOS相比嵌入式RTOS(linux、安卓…)面向的应用范畴更为广泛,但是目前阶段,物联网终端应用很多都是基于MCU的裸机开发(Bare-metal)模式,而基于MCU开发,国内开发者更多是基于Window系统,习惯使用的开发工具是IDE(KEILIAR等),而不是linux的命令行方式。基于两种平台的开发方式各有千秋,主要还是看个人技术积累与使用习惯。 本文主要描述了基于Window系统,使用STM32L476与MDK5来搭建Alios Things(以下简称为 AOS )系统的基础软件开发环境。主要内容涉及:
2.1 AliOS Things代码仓库的组织架构 AliOS Things源代码组织架构符合分层架构与组件化架构。 AliOS Things架构至下(层)而上(层),分别是
2.2 AliOS Things文件夹目录树 AliOS Things源代码主要托管在Github上,可以从github下载的源码 AliOS Things latest version,截止2019年6月份,当前最新release版本为2.1.0 https://github.com/alibaba/AliOS-Things/tree/rel_2.1.0 git clone https://github.com/alibaba/AliOS-Things.git AOS源代码目录树 - AliOS Things 2.1.0文件夹架构 [tr]分层所属文件夹说明[/tr]
2.3 AliOS Things开发与调试方式 AliOS Things支持多种调试手段,针对不同的功能模块,不同的使用场景,开发者可以根据需要自己选择:
3 AliOS Things MDK环境搭建 AliOS Things MDK环境搭建目前可以有两种方式,一种是通过aos-cube工具(aos-cube 是 AliOS Things 在 Python 下面开发的项目管理工具包)通过aos make等构建命令自动生成MDK工程,另外一种是使用MDK自己新建工程,添加项目文件。 AliOS Things uCube ≈ RT-Thread ENV (都是基于命令行的项目管理工具包) 3.1 aos-cube自动生成MDK Alios-things 支持将特定的目标转化成keil和iar来进行开发。自动生成keil或iar工程的命令就是在原有构建命令的基础上加上 IDE=keil 或 IDE=iar 的选项,会自动生成一个keil工程或者iar工程。构建命令: aos make mqttapp@b_l475e IDE=keil当前使用aos-cube工具自动生成MDK的板子还比较少,具体可以参看《AliOS-Things自动生成KEILIAR工程 Auto-generate-keil-iar-project》这篇文章 支持情况
3.1.1 AliOS Things 2.1版本KEIL工程 从2.1.0版本,keil目录下已经不再包含示例工程,是通过aos-cube工具自动生成。 3.2 手动新建MDK工程 虽说是手动搭建新工程,但最好还是找到源代码版本一致情况下的KEIL模板工程或者相似平台(比如采用上述提到的“aos-cube自动生成MDK”工程),直接复制,重命名,然后再根据实际修改。 因为AliOS Things最新发布2.1.0代码库中,KEIL默认采用自动生成方式,project目录下里面没有包含KEIL工程,当前采用的办法是参考之前版本(包含了KEIL示例工程)(可以到develop等分支下载),由于AliOS Things 2.1.0版本与之前版本对文件目录结构等做了不少调整,因此不能直接使用,需要适当修改。 相比于之前版本,2.1版本的变化如:
4 搭建AliOS Things第一个MDK工程 以手动搭建AliOS Things 2.1.0版本中 STM32L476RG-Nucleo的hello world MDK工程为例 首先直接拷贝之前版本的AliOS-ThingsprojectSTM32L476RG-Nucleohelloworld到2.1.0相同路径下面 4.1 AliOS Things系统所需基础依赖文件 基于MDK与STM32L4,AliOS Things 2.1.0系统所需的基础依赖文件主要包括如下内容,下面具体展开的是移植中比较容易出错的部分文件:
4.2 可能遇到的问题 打开STM32L476RGTx.uvprojx工程,会发现有左边的工程文件很多感叹,主要是因为文件路径发生变化,可以对STM32L476RGTx.uvprojx使用文本编辑器打开(比如Sublime Text3…),将相关出现感叹号的文件替换为新版本的对应路径。 具体方法是:
4.2.1 core文件路径找不到 ![image.png]() 错误原因:由于2.1.0删去了core文件夹 解决方式: kernelrhinocore 4.2.2 soc_init.c路径找不到 错误原因:2.1.0文件结构调整 解决方式: 原始 4.2.3 stm32库路径重命名 ![image.png]() 错误原因:stm32库文件重命名 解决方式: mcustm32l4xxDrivers 错误原因:stm32库文件重命名 解决方式: platformmcustm32l4xxaos 4.2.4 新增board文件夹 错误原因:新增board文件夹 解决方式: platformmcustm32l4xxsrcSTM32L476RG-Nucleo修改为 4.2.5 新增arch common文件夹 错误原因:新增arch common 解决方式: platformarcharmarmv7marmccm4 4.2.6 头文件找不到 问题: …platformmcustm32l4xx_cubeDriversSTM32L4xx_HAL_DriverIncstm32l4xx_hal.h(46): error: #5: cannot open source input file “stm32l4xx_hal_conf.h”: No such file or directory解决方式: 添加board子路径问题: …kernelrhinoincludek_api.h(16): error: #5: cannot open source input file “k_config.h”: No such file or directory解决方式: 添加board子路径问题: …kernelrhinoincludek_api.h(19): error: #5: cannot open source input file “k_types.h”: No such file or directory解决方式: 添加common子路径问题: …kernelrhinok_err.c(5): error: #5: cannot open source input file “debug_api.h”: No such file or directory解决方式: 添加路径问题: …kerneldebugincludedebug_api.h(16): error: #5: cannot open source input file “debug_dft_config.h”: No such file or directory解决方式: 添加路径问题: …boardstm32l476rg-nucleoaossoc_init.c(15): error: #5: cannot open source input file “hal_uart_stm32l4.h”: No such file or directory解决方式: …boardstm32l476rg-nucleohal问题: …platformmcustm32l4xx_cubeaosaos.c(5): error: #5: cannot open source input file “aos/kernel.h”: No such file or directory解决方式: …includeaos问题: …platformmcustm32l4xx_cubeaosaos.c(5): error: #5: cannot open source input file “aos/init.h”: No such file or directory解决方式: …kernelinitinclude 4.2.7 sct文件未定义 问题: STM32L476RGTxSTM32L476RGTx.axf: error: L6031U: Could not open scatter description file …boardstm32l476rg-nucleoSTM32L476.sct: No such file or directory解决方式: >在工程的Options选项中,重新设定.sct路径 4.2.8 SysTick_Handler重定义 问题: STM32L476RGTxSTM32L476RGTx.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by stm32l4xx_it.o and soc_init.o).原因: soc_init.c定义了SysTick_Handler实现OS系统心跳,上下文切换解决方式: 工程中删去stm32l4xx_it.c文件 4.2.9 PendSV_Handler重定义 问题: STM32L476RGTxSTM32L476RGTx.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by port_s.o and stm32l4xx_it.o).原因: port_s中定义了PendSV_Handler实现上下文切换解决方式: 工程中删去stm32l4xx_it.c文件 4.2.10 main入口在哪里 问题: STM32L476RGTxSTM32L476RGTx.axf: Error: L6218E: Undefined symbol main (referred from entry9a.o).原因分析:
4.2.11未定义aos api接口文件 问题: STM32L476RGTxSTM32L476RGTx.axf: Error: L6218E: Undefined symbol aos_free (referred from armcc_libc.o).原因: AliOS Things 2.1.0版本封装了一层AOS API接口,方便上层调用内核相关功能,增加osalaos的rhino.c文件解决方式: 增加osalaosrhino.c文件 4.2.12 内核初始化文件未定义 问题: STM32L476RGTxSTM32L476RGTx.axf: Error: L6218E: Undefined symbol aos_components_init (referred from aos.o).解决方式: 增加kernelrhinocoreinitaos_init.c文件![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAxOS9wbmcvMjUzNTg2LzE1NTkyNTc4NTM5NzgtNzM4Yjg1NTEtYjU1MC00YmJiLWExOGItMzFlM2I1M2ZmMzFlLnBuZw?x-oss-process=image/format,png) 4.2.13 wifi.h文件未定义 问题: …kernelinitaos_init.c(13): error: #5: cannot open source input file “hal/wifi.h”: No such file or directory解决方式 增加路径 …includenetwork 4.2.14 启动文件.s文件未定义 问题: …boardLR-Assistant-L476STM32L476RGTx_FLASH.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.原因: 工程中没有添加xx_startup.s启动文件解决方式: 双击左边工程框的文件夹,添加Startup开头的.s文件即可,比如本文使用到的startup_stm32l476xx_keil 4.2.15 port_s.S汇编代码嵌入C代码异常 问题: port_s.S中引入了宏语言 原因: 使用GCC可以通过.S后缀识别,来进行预处理,但是armcc默认不行,需要其他参数设定解决方式: 简单的一种处理方式是在MDK工程中,根据实际宏定义功能需求,屏蔽相应的C代码(宏定义、投入) |
||
|
||
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1602 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1536 浏览 1 评论
967 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
680 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1579 浏览 2 评论
1860浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
640浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
513浏览 3评论
527浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
500浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 13:34 , Processed in 0.708609 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号