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

可穿戴设备主控制器芯片AMA3B 源码解析之初体验的更多相关文章

  1. (转)Linux设备驱动之HID驱动 源码分析

    //Linux设备驱动之HID驱动 源码分析 http://blog.chinaunix.net/uid-20543183-id-1930836.html HID是Human Interface De ...

  2. 深入学习 esp8266 wifimanager源码解析(打造专属自己的web配网)

    QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 废话少说,本篇博文的目的就是深入学习 WifiManager 这个gi ...

  3. [源码解析] 深度学习分布式训练框架 horovod (18) --- kubeflow tf-operator

    [源码解析] 深度学习分布式训练框架 horovod (18) --- kubeflow tf-operator 目录 [源码解析] 深度学习分布式训练框架 horovod (18) --- kube ...

  4. Android -- 从源码解析Handle+Looper+MessageQueue机制

    1,今天和大家一起从底层看看Handle的工作机制是什么样的,那么在引入之前我们先来了解Handle是用来干什么的 handler通俗一点讲就是用来在各个线程之间发送数据的处理对象.在任何线程中,只要 ...

  5. iOS网络请求-AFNetworking源码解析

    趁着端午节日,自己没有什么过多的安排,准备花4-5天左右,针对网络请求源码AFNetworking和YTKNetwork进行解析以及这两年多iOS实际开发经验(其实YTKNetwork也是对AFNet ...

  6. Android 数据库 ObjectBox 源码解析

    一.ObjectBox 是什么? greenrobot 团队(现有 EventBus.greenDAO 等开源产品)推出的又一数据库开源产品,主打移动设备.支持跨平台,最大的优点是速度快.操作简洁,目 ...

  7. [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入

    [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 目录 [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 0x00 摘要 0 ...

  8. [源码解析] 深度学习分布式训练框架 horovod (19) --- kubeflow MPI-operator

    [源码解析] 深度学习分布式训练框架 horovod (19) --- kubeflow MPI-operator 目录 [源码解析] 深度学习分布式训练框架 horovod (19) --- kub ...

  9. [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统

    [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统 目录 [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统 0x00 摘要 0x01 分割小批次 ...

  10. [源码解析] PyTorch 流水线并行实现 (6)--并行计算

    [源码解析] PyTorch 流水线并行实现 (6)--并行计算 目录 [源码解析] PyTorch 流水线并行实现 (6)--并行计算 0x00 摘要 0x01 总体架构 1.1 使用 1.2 前向 ...

随机推荐

  1. (python)代码学习||2024.2.3||题目是codewars上的【Validate Sudoku with size `NxN`】

    题目的要求是写一个Sudoku类,类中要有一个实例函数判断传给对象的二维数组是否符合数独规则 题目链接:https://www.codewars.com/kata/540afbe2dc9f615d5e ...

  2. 【实用小技巧】RSA非对称加解密及XML&PEM格式互换方案

    ​ 最近因考虑接口安全问题,有实现给WEB API实现统一的参数鉴权功能,以防止请求参数被篡改或重复执行,参数鉴权方法基本与常见的鉴权思路相同,采用(timestamp+sign),而我为了防止tim ...

  3. 《ASP.NET Core 微服务实战》-- 读书笔记(第3章)

    第 3 章 使用 ASP.NET Core 开发微服务 微服务定义 微服务是一个支持特定业务场景的独立部署单元.它借助语义化版本管理.定义良好的 API 与其他后端服务交互.它的天然特点就是严格遵守单 ...

  4. Linux-crontab的使用

    一.什么是crontab?crontab 是有cron (crond) 这个系统服务来控制的,cron服务是linux的内置服务,类似于window下的计划任务,但它不会开机自动启动 二.如何使用?c ...

  5. Codeforces Round #825 (Div. 2) A-D

    比赛链接 A 题解 知识点:贪心. 考虑两种方法: 所有不同的位置使用操作1变成相同 使用操作1将两串01数量相同,然后使用1次操作2 取其中最小的即可. 时间复杂度 \(O(n)\) 空间复杂度 \ ...

  6. 【Unity3D】Unity与Android交互

    1 前言 ​ 本文主要介绍 Unity 打包发布 Android apk 流程.基于 AndroidJavaObject(或 AndroidJavaClass)实现 Unity 调用 Java 代码. ...

  7. 基于keras的胶囊网络(CapsNet)

    1 简介 胶囊网络(CapsNet)由 Hinton 于2017年10月在<Dynamic Routing Between Capsules>中提出,目的在于解决 CNN 只能提取特征,而 ...

  8. spring boot读取json文件并实现接口查询

    0.源码下载 https://download.csdn.net/download/IndexMan/84238085 1.说明 最近需要在spring boot项目启动时读取json文件并保存到Li ...

  9. ORA-16019 和 ORA-16018 错误的处理方法

    一. ORA-16019 和 ORA-16018 错误产生描述 同事在修改归档目录,一不小心把参数设置错误了, 他设置的是log_archive_dest参数. 这个参数和默认log_archive_ ...

  10. Python之密码生成器

    介绍 这段程序用来随机批量生成一批安全性相对较高的密码,要了解你当前使用的密码强度到底如何? 可以试一下这个网站: https://howsecureismypassword.net/ 他会告诉你计算 ...