1. 程式人生 > 其它 >可穿戴裝置主控制器晶片AMA3B 原始碼解析之初體驗

可穿戴裝置主控制器晶片AMA3B 原始碼解析之初體驗

一 背景和緣由   現在的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");