可穿戴裝置主控制器晶片AMA3B 原始碼解析之初體驗
阿新 • • 發佈:2022-03-31
一 背景和緣由
現在的mcu非常多,在超低功耗mcu這塊,能贏得市場穿戴式裝置使用的產品的確不多,以前是的是stm32 L系列,可是,隨著L系列的缺貨漲價和技術指標沒有快速的發展,很多廠商都拋棄了。轉而使用了阿波羅的AMA3B系列晶片。比如,國內的oppo,一加,華為等公司都採用了這顆晶片。說明了這顆晶片的成熟度還是可以的。
通過調研分析,筆者發現這顆晶片的sdk規範度比較高,支援arm-gcc,可在ubuntu上編譯。這些特點讓我知曉,這個晶片公司的技術手段是新的,應用十分成熟,有差異化的東西在裡面,非常適合做出差異化的產品。基於此,筆者的計劃是先熟悉這顆晶片,然後在接下來的產品中用上它。
二 原始碼架構
該公司的sdk架構產品和國內一家晶片公司的非常像,做這種架構的公司,一般裡面是有軟體大牛在的。無論是工具,還是測試程式碼,所有的都在一個目錄下,並且開放程度很高。具體目錄如下所示:
新增圖片註釋,不超過 140 字(可選)
ambiq_ble:該目錄是ble的協議部分,基本把所有的能用到的ble協議都開放了。
boards:該目錄是不同工程下的目標編譯檔案所在地,可以在裡面找到你所要編譯的目標工程並新建目標工程
bootloader:啟動載入程式碼,多種方式啟動的原始碼。
CMSIS: 這裡面是arm和晶片公司的底層函式所在位置
devices:介面驅動和應用介面
mcu:該晶片的暫存器介面
third_party:第三方作業系統freertos所在地
tools:工具指令碼,bat和py的都有
utils: 軟硬體的介面層,也就是廣泛意義的hal層。
三 編譯方法
該晶片是基於arm的,可以使用arm-gcc編譯,筆者習慣了使用Ubuntu,所以在ubuntu下使用的是arm-gcc編譯的。結果和命令列如下所示:
四 hello world原始碼解析
該晶片可以使用ITM和串列埠兩種方式列印日誌資訊,hello world小命令用的是ITM方式列印,後面針對這種方式方法,筆者會有專門的論述。
// // Print the device info. // am_util_id_device(&sIdDevice); am_util_stdio_printf("Vendor Name: %s\n", sIdDevice.pui8VendorName); am_util_stdio_printf("Device type: %s\n", sIdDevice.pui8DeviceName); am_util_stdio_printf("Qualified: %s\n", sIdDevice.sMcuCtrlDevice.ui32Qualified ? "Yes" : "No");