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