免费电子商务网站建设,做阿里巴巴网站图片尺寸,建设网络良好生态发挥网络的作用,伊利集团网站建设实训摘要#xff1a; 今年杭州云栖大会上#xff0c;AliOS Things正式发布#xff0c;其中有一个基于组件化思想的多bin特性#xff0c;这是AliOS Things有专利保护的多bin fota升级解决方案的核心
今年杭州云栖大会上#xff0c;AliOS Things正式发布#xff0c;其中有一个基…摘要 今年杭州云栖大会上AliOS Things正式发布其中有一个基于组件化思想的多bin特性这是AliOS Things有专利保护的多bin fota升级解决方案的核心
今年杭州云栖大会上AliOS Things正式发布其中有一个基于组件化思想的多bin特性这是AliOS Things有专利保护的多bin fota升级解决方案核心。随着我们不断的版本迭代这里很高兴和大家分享下多bin基于AliOS Things v1.1.2版本的具体实现。这里我主要以”两个Wwhat、why、一个Hhow”来展开。
What – AliOS Things多bin特性是什么 AliOS Things v1.1.2版本实现的多bin版本实现的是三bin方案分为kernel、framework、app bin主要是指AliOS Things基于组件化思想能够独立编译、烧录、OTA升级kernel、framework、app bin这三部分通过syscall来实现彼此的函数调用syscall是在扁平地址空间中通过访问函数数组来实现的。fsyscall ksyscallapp —— framework —— kernel
如果有反向调用的需求可以使用函数注册方式来实现。
Why – 为什么需要AliOS Things多bin特性 AliOS Things 多bin特性到底能够带来什么好处呢物联网设备数量众多模组种类也繁杂芯片厂商、模组厂商、终端厂商开发者都有自己的侧重点但是对AliOS Things来讲我们希望让芯片、模组厂商降低硬件成本让终端厂商开发者简易开发专注于应用软件的开发而多bin特性就是为此服务的。
总结来讲AliOS Things核心利益点就是“减成本、利开发”具体如下
AliOS Things拆分kernel、framework、app bin支持细粒度fota升级减少ota备份空间大小甚至可以做到0备份空间升级有效减少硬件flash成本 芯片厂商、模组厂商预置测试稳定的kernel、framework版本开发者购买阿里云市场中的模组解决方案专注于开发app即可 下图更直观的展示了单bin和多bin版本在fota升级上的硬件flash消耗对比
How – 如何实现AliOS Things多bin特性 上面我们了解了什么是AliOS Things 和AliOS Things 多bin特性的好处那AliOS Things 多bin特性是如何实现的呢AliOS Things多bin特性基于AliOS Things的组件化思想组件化思想是指各个组件之间解耦组件之间仅通过暴露出来的api接口进行交互这样子就可以动态调整组件的位置。多bin特性就是在保有基本组件的基础上如内核组件必属于kernel模块动态调整其他组件来实现fota升级空间消耗的最优化比如cloud组件可以动态在kernel、framework模块间切换如果要最小ota备份区间可以调整组件使得kernel、framework bin的codesize维持差不多因为ota备份空间取kernel、framework、app bin的最大值。
接下来我们具体分析下AliOS Things的多bin特性实现
1、首先对组件类型要进行区分
在AliOS Things编译体系的组件makefile 中增加了(NAME)TYPE变量标明组件的类型各个bin包含哪些组件类型如下(NAME)_TYPE: app、framework、kernel、appframework、frameworkkernel、appkernel、share三bin共享、默认 app bin app、appframework、appkernel、share、默认 framework binframework、appframework、frameworkkernel、share kernel bin kernel、appkernel、frameworkkernel、share 注意framework、kernel组件理论上必须标明组件类型app组件可标可不标
2、Syscall函数调用方式说明
AliOS Things 多bin特性的syscall方式是在扁平地址空间中的函数数组访问而且在基于组件化的思想下syscall是分布在各个组件中可以灵活配置成syscall函数或者取消使用宏来标识需要暴露的syscall接口因为syscall接口是kernel暴露给framework、app或者framework暴露给app的故在kernel和framework模块的组件中使用AOS_EXPORT宏来进行标识
define AOS_EXPORT(ret,fun,argstype…)
参数说明 ret返回值类型 fun函数名 argstype参数类型中间用逗号分隔 示例
Int aos_get_hz(void)
{
return RHINO_CONFIG_TICKS_PER_SECOND;
}
AOS_EXPORTintaos_get_hz void;
使用注意点 1、宏支持的可变参数类型前面必须是格式化参数项 2、函数指针类型参数请去掉fn如int (fn)(char , int) 3、宏不支持在头文件中定义必须在.c文件中定义如果只有库文件没有头文件请把函数的宏放置在kernel模块或者framework模块的syscall文件中分别是syscall_ktbl.c和syscall_ftbl.c
对AOS_EXPORT宏的解析是在编译过程中调用python脚本解析的根据用户设定的宏参数生成ksyscall和fsyscall的syscall数组和对应函数文件脚本自动生成的文件在out/syscall目录下。
3、多bin相关文件及调用方式
AliOS Things 多bin特性分别包含了kernel/ksyscall、framework/fsyscall、app/usyscall三个目录 ksyscallkernel syscall函数的数组文件 fsyscallframework syscall函数的数组文件和kernel syscall函数在frame中的实现 usyscallfsyscall函数在app中的实现 以mk3060芯片相应组件为例说明组件在各bin中分布以及多bin启动过程说明python脚本解析AOS_EXPORT宏自动生成相应的syscall文件如下图说明kernel、framework、app目录中的syscall文件以及脚本生成在out目录下的对应文件用户在移植多bin特性的时候因为多bin特性可以单独编译需要增加kernel、framework、app的ld链接文件并对相应的空间布局做相应的调整。
小结 AliOS Things 多bin特性致力于 降低硬件成本让应用开发者更高效开发。多bin特性随着版本在不停迭代希望有更多开发者参与其中让多bin特性更简洁、高效、好用让多bin特性在实际场景中发挥更大作用致力于AliOS Things生态发展。有什么需求或者指教欢迎访问github官网https://github.com/alibaba/AliOS-Things