Re: [請益] 跨平台(PC、嵌入式)版本管理
※ 引述《cory8249 (Cory)》之銘言:
: Windows PC 要呼叫 RS232 的 library
: ARM 那邊要設 I/O Pin
: 想做好一點的開發管理
: 預計用 git 做版本控制
: 主目錄下切三個資料夾:
: gps_module (純變數宣告、判斷邏輯)
: win_pc (PC的程式碼)
: arm (板子的程式碼)
一種方法是多一層 HAL (硬體抽象層) 隔開
多一個檔案 hal_RS232_comm,來處理不同平台/裝置
例如
void gps_update_buffer(...){
//...
RS232_update_buffer(...);
//...
}
RS232_update_buffer 在 hal_RS232_comm 中定義
void RS232_update_buffer(...){
#ifdef WIN_PC
//call windows lib
#elif ARM
//call ARM API
#else
//other API or show error
#endif
}
把跟硬體相關的東西集中在 HAL 區分
好處是上層看到的都是同樣的東西, 專心處理問題邏輯
gps_module.c 理想上可以沒有條件式編譯, 很乾淨
一般是底層的某裝置可能使用多種不同廠牌IC, 需配合各自 driver
如果只有兩種平台/裝置,這樣做可能有點多此一舉
兩平台的介面也可能差異很大不適合如此
僅供你參考
: 然後 gps_module.c 設置
: #ifdef WIN_PC
: void gps_update_buffer(...){
: // call windows library
: }
: #ifdef ARM
: void gps_update_buffer(...){
: // call ARM API
: }
: 讓不同平台的 project 跑不同的函式
: 這樣改 code 應該比較方便
: 不用再 copy & paste 很難 maintain
: 請問這樣的管理方式是OK的嗎 ?
: 或是有其他更好的建議 ?
: 感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.147.0.191
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1432218560.A.853.html
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):