SoC嵌入式軟體架構設計之六 API設計方法

2022-07-07 21:24:11 字數 1044 閱讀 2956

在嵌入式系統中,驅動都是以api的方式提供給應用進行呼叫。這裡介紹嵌入式系統的api設計和管理方法。

驅動在系統中會按模組進行分類,例如按鍵驅動、lcd驅動、檔案系統、card驅動、i2c驅動等等;每個模組又有多個介面,例如lcd驅動有游標定位、畫點、畫直線等,而檔案系統有fread、fwrite、fseek、fopen等介面。以下舉例將以檔案系統的fopen為例,工具鏈為mips。

一、api設計方法

1. 驅動介面宣告:extern file * fopen(const char * path,const char * mode),位於fs.h中

2. 驅動介面定義:file * open(const char * path,const char * mode),位於fs.c中

3. 驅動介面api: fopen :li  v1,file_open;

syscall;  位於api.s中,是彙編**。

4. 驅動介面函式指標陣列:struct file_operations fs_fops ;

5. 檔案系統被載入時,會將檔案系統的介面函式指標陣列fops註冊到系統的api管理陣列中。

6. 系統對驅動進行分類管理,其有乙個記錄各個驅動介面函式指標陣列基址的陣列,各個驅動事先按順序進行約定,如陣列的第乙個元素就是按鍵驅動的key_fops,而第二個就是lcd驅動的lcd_fops,以此類推。某個驅動被載入時,驅動會把對應的fops通過api管理的介面記錄到該陣列的對應位置。

這個約定一般會在api.h中,如#define key 0 //表示key驅動是約定在陣列的第乙個位置,  #define fs 2//表示fs是約定在陣列的第三個位置            

7. file_open定義:#define file_open (fs<

8. 應用呼叫時,path和mode等形參會壓入棧,然後進入fopen的api,其將file_open常量賦值給v1,通過syscall陷入到異常,進行核心態,這時即可以進入到api管理中,api根據file_open提供的兩部分資訊可以迅速找到open的位址,異常返回時即跳到open的位址執行,此即進行實際的介面呼叫。整個過程完成。

高階嵌入式軟體架構設計

了解嵌入式架構的常見問題和解決策略 了解嵌入式架構設計過程 了解嵌入式架構質量評估方法 了解常見的嵌入式設計問題的解決方法 o 嵌入式子系統設計 o 嵌入式層次框架設計 o 嵌入式系統介面設計 o 嵌入式效能架構設計 o 嵌入式可靠性架構設計 o 嵌入式可擴充套件架構設計 培訓物件 嵌入式應用軟體設...

軟體架構設計 六

六 介面協議 這裡說的介面一般指程序間或系統間的介面,至於介面效能,則是在設計心模組時就考慮的問題。我比較想表達以下幾個觀點 1 介面盡量通用,如 2個程序可能部署在同一臺機器上也可能是不同機器上,這時介面就需要考慮通用性 2 介面不能對自身系統和對方系統造成影響,如阻塞 3 介面要考慮容錯性,如加...

c語言嵌入式軟體架構

模組 劃分的 劃 是規劃的意思,意指怎樣合理的將乙個很大的軟體 劃分為一系列功能 獨 立的部分合作完成系統 的需求。c語言作為一種結構化的程式 設計 語言,在 模組的劃分上主要依據功能 依功能進行劃分在物件導向設計中成為乙個錯誤,牛頓定律遇到了相對論 c語言模組化程式設計需理解如下概念 1 模組即是...