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