日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AliOS Things 基于组件化思想的多bin特性

發布時間:2024/8/23 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AliOS Things 基于组件化思想的多bin特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要: 今年杭州云棲大會上,AliOS Things正式發布,其中有一個基于組件化思想的多bin特性,這是AliOS Things有專利保護的多bin fota升級解決方案的核心

今年杭州云棲大會上,AliOS Things正式發布,其中有一個基于組件化思想的多bin特性,這是AliOS Things有專利保護的多bin fota升級解決方案核心。隨著我們不斷的版本迭代,這里很高興和大家分享下多bin基于AliOS Things v1.1.2版本的具體實現。這里我主要以”兩個W(what、why)、一個H(how)”來展開。

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 ksyscall

app ——> 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)TYPEbin(NAME)_TYPE: app、framework、kernel、app&framework、framework&kernel、app&kernel、share(三bin共享)、默認
app bin: app、app&framework、app&kernel、share、默認
framework bin:framework、app&framework、framework&kernel、share
kernel bin: kernel、app&kernel、framework&kernel、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_EXPORT(int,aos_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三個目錄:
ksyscall:kernel syscall函數的數組文件
fsyscall:framework syscall函數的數組文件和kernel syscall函數在frame中的實現
usyscall:fsyscall函數在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

總結

以上是生活随笔為你收集整理的AliOS Things 基于组件化思想的多bin特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。