android HAL 硬體抽象層

剛學android 可能對HAL (hardware abstraction layer)硬體抽象層搞不清楚, 許多書也曖昧不清.
一下要HAL層,  一下又不要, 倒底是什麼東西, 待49歐姆說明之後, 便知其中悉竅 !!!!
舉個例子, 過去嵌入裝置要有2G/3G 電話或上網功能, 硬體尚須用UART/RS232連接一個GSM/GPRS模組, 軟體上則需經由UART傳送AT  command,   AT 命命是GSM 通用命令,
GSM模組接收到AT命令後, 便對命令進行解析, 而後依據命令內容進行撥打電話, 傳送資料等動作.   對android系統而言, 其最上層是用 java提供了打/收電話, 傳資料的API, 而所謂電信HAL層,
則是將Java 電信 API 解析為AT 命令, 經由UART 傳給GSM/GPRS模組.
如果沒有電信HAL層,  使用者需自己將 java 電信API, 轉換成AT command, 反之亦然.  如果有HAL層, 則可大幅減少使用者coding時間.  

這中間牽涉2個關鍵程式, 一個HAL, 另一個是UART驅動.  uart驅動, 大部分BSP開發板已經提供,
不需作任何更動, 只需作tty選擇與baudrate設定, 而HAL層需依GSM/GPRS模組之不同而調整.

屆此, 如果讀者還不懂, 再舉一例. GPS裝置好了. 其底層驅動一樣是用UART/RS232, 而其HAL 層
則實做GPS NMEA碼之解析.  NMEA碼為GPS裝置輸出之通用格式, 藉由解析NMEA, 則可得到gps衛星定位資訊, 如方向, 速度, 經緯度等等.  GPS HAL解析NEAM碼之後, 往上層java location 等
API 提供定位資訊.

至此, 明顯可以看出 ttySx提供Uart/RS232硬體驅動, 而不同HAL, 則解析由硬體驅動提供的命令,
並上傳到java API.    讀者讀到此, 請幫我按下一個讚吧 !!!!!!