framework框架負責固件的通用流程實現(xiàn),包括系統(tǒng)初始化,module初始化,中斷服務提供,event服務提供等。這樣module就可以專注于自己功能和對外交互api的實現(xiàn)。SCP framework初始化流程圖如下:
module對外接口
在scp代碼中,所有的功能都由一個個模塊提供。每個模塊以api枚舉及其結(jié)構(gòu)體的方式對外提供該模塊的功能,并在模塊通用結(jié)構(gòu)體fwk_module中提供。
event事件
模塊可以給自己或者別的模塊發(fā)送event事件,事件的參數(shù)是結(jié)構(gòu)化消息structfwk_event。
notification涉及到兩個模塊的通信,跟event的區(qū)別是:
? ?event是一個模塊發(fā)給另外一個模塊或者發(fā)給自己,比較確定
? ?notification是發(fā)給訂閱了這個模塊的所有模塊,算廣播,需要先進行訂閱
notification接口:
? ?fwk_notification_subscribe//訂閱指定模塊指定通知
? ?fwk_notification_unsubscribe//取消訂閱通知
? ?fwk_notification_notify//向訂閱該通知的模塊發(fā)送通知
在實現(xiàn)上notification使用event的消息傳遞機制,只在發(fā)消息和處理消息的時候做微小改動。
模塊綁定
一個模塊或元素可以綁定到另一個模塊或模塊內(nèi)的元素。目標是相同的 - 獲取指向可在后續(xù)階段使用的 API的指針。當嘗試綁定到模塊內(nèi)的元素(而不是模塊本身)時,主要區(qū)別在于接收和處理綁定請求的模塊能夠根據(jù)目標元素更改其行為。例如,可以允許請求綁定的模塊僅綁定到處理請求的模塊內(nèi)的元素子集。
思路:A模塊要與B模塊通信,A模塊的全局變量要拿到B模塊的回調(diào)函數(shù)。
A模塊在初始化的時候,會調(diào)用自己的bind函數(shù),
bind--》fwk_module_bind--》B模塊的process_bind_request()函數(shù),從而拿到api
-
模塊
+關注
關注
7文章
2703瀏覽量
47458 -
ARM
+關注
關注
134文章
9091瀏覽量
367492 -
框架
+關注
關注
0文章
403瀏覽量
17481 -
SCP
+關注
關注
0文章
29瀏覽量
9249
發(fā)布評論請先 登錄
相關推薦
評論