Linux下移植GPS應用程式之常見問題的分析與解決方案之一
OS:Linux一. 直接提供函數實現給第三方
原因:主晶片設計以及gps晶片的更改,導致gps驅動程式時常處於更新狀態
演化為:給第三方提供.so動態連結程式庫以及.h標頭檔
二.gps參數寫死到程式中
gps參數有:Serial串口裝置的路徑、GPIO裝置的連接埠號碼、傳輸速率、GPIO連接埠號碼、複位Reset的GPIO連接埠號碼、電源管理工具的路徑、快速啟動GPS所儲存的檔案路徑(冷啟動和暖開機之分);
開發板有:Lily、Bali以及Apollo1.0,Apollo1.1;
演化為:提供gps參數的設定檔,如:atgps.cnf以及navione.cnf兩個設定檔
三.直接將驅動開發的軟體介面提供給第三方
原因:
1. 驅動開發的軟體介面,會經常發生變化,介面不穩定;
2. 驅動開發的軟體介面,還不是第三方真正需要的介面,還不能完全滿足使用者需求;
3. 要基於驅動開發的軟體介面,來進一步擴充和完善,使其滿足第三方的需要;
演化為:基於驅動開發人員提供的介面,來進行封裝,以滿足實現客戶的需要。
四.第三方沒有調用at_close_gps函數,待機時間明顯縮短
造成的後果:電流偏大,電流降不下來,待機時機偏短;
解決辦法:確保第三方,調用at_close_gps函數,關閉gps裝置。
五.程式與資料沒有分離,造成一個目錄經常放不下所有程式和資料
資料:地圖資料,聲音資料
Linux分區的目錄經常才400-500M,而GPS整個儲存空間需要900M
演化為:程式與資料分離
六.目前的目錄與運行程式的路徑相混淆
目前的目錄經常會發生更改,目前的目錄不一定是運行程式的所在路徑。
所以,一定要注意區分清楚。
七.使用C++類的形式,封裝資料,隱藏資訊
1.資料,資訊是與具體的操作相關聯的;
2.給第三方提供操作行為;
3.資訊,屬性隱藏;
八.一個開發板不同版本Apollo1.0與Apollo1.1,需要2套gps代碼
開發板:Apollo開發板就有Apollo1.0與Apollo1.1至少兩個硬體版本之分,畢竟硬體還是有點差別的;
解決辦法:一套代碼可以適合多個不同的開發板,一個開發板可以擁有多個不同的版本。
九.針對給第三方的介面,編寫驗證其介面正確性,其工具是:gpstool