Re: [請益] 跨平台(PC、嵌入式)版本管理

看板Soft_Job作者 (吃不胖真無奈…)時間11年前 (2015/05/21 22:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1LNUl0XJ (Soft_Job)
文章代碼(AID): #1LNUl0XJ (Soft_Job)