关于AIR105

AIR105是合宙LuatOS生态下的一款芯片, 1月初上市, 开发板与摄像头一起搭售(赠送).

从配置信息看, 芯片性能相当不错: Cortex-M4F内核, 最高频率204Mhz, 片上内建640KB SRAM和4MB Flash. QFN88封装, 尺寸10x10mm, 56个可编程GPIO PIN.

功能特性

AIR105 和兆讯的 MH1903S 是同一款芯片, MH1903系列还有 BGA169 等高密度封装

具体的功能特性

  • ARM SecurCore SC300核心

    • 32-bit RISC Core(ARMv7-M)
    • MPU 内存保护单元
    • 最高 204MHz 主频(1、2 分频可调)
    • FPU 单元
    • 1 个受控 JTAG-DP/SW-DP 调试端口
  • 640KB SRAM
  • 1 个 QSPI 控制器, 支持 XIP
  • 系统控制模块(控制所有外设模块时钟及系统相关配置)
  • 安全加密算法加速引擎
    • 对称算法: DES、TDES、AES-128/192/256
    • 非对称算法: RSA-1024/2048、ECC
    • HASH 校验算法: SHA-1/224/256/384/512
  • 2 路 SmartCard 接口(支持 EMV Level-1 协议规范、ISO7816-3 标准), 其中 SCI0 集成 7816 电平转换功能, 可配置输出 3V 和 1.8V
  • 4 路 UART 接口(均支持 4 线)
  • 3 路 SPI 接口(其中 SPI0 主从可配, 其他 2 路仅支持 Master) * 1 路高速 SPI Master 接口 SPI5
  • 1 路 IIC 接口
  • 1 路 KBD(4x5 矩阵键盘)
  • 8 个 32 位 TIMER(带有 PWM 功能, 支持单周期输出)
  • 1 路 LCDI 接口, 支持 8080、6800 总线协议
  • 1 个真随机数发生器
  • 1 个 DMA 控制器(支持 8 通道 DMA 传输)
  • 1 个 CRC 模块(支持 16Bit/32Bit、多种常用多项式计算)
  • 最多支持 87 个 GPIO
  • 最多支持 8 个静态 Tamper 或 4 组动态 Tamper(4 输出, 4 输入), 动/静态可配
  • 1 组内部 Sensor(支持高低电压、高低温、Mesh、时钟和 voltage glitch 检测)
  • 1 块密钥存储区(支持硬件快速擦除)
  • 1 个 USB(OTG-FS)
    • 支持 USB2.0 和 OTG1.0a
    • 内置 USB PHY 模块
    • 专用 DMA 通道和专有的中断向量, 加快数据通信速度
  • 集成内部看门狗
  • 1 个 10bit DAC 接口
  • 1 个 7 通道 12bit ADC, 最高支持 857KHz 采样率(0 通道固定采集 CHARGE_VBAT 电压, 其余通道采集电压范围 0~1.8V 或 0~3.6V 可配)
  • 支持磁条解码功能, 支持 ISO/ABA、AAMVA、IBM 和 JIS II 等标准卡
  • 1 个 DCMI 接口
  • 芯片集成一个可对外输出 150mA 驱动能力的 LDO
  • 芯片集成 USB 充电管理模块, 支持最大 200mA 的充电电流
  • 芯片集成开关机功能
  • 支持 27.12M 输出

资料下载

使用Keil MDK + DAPLINK 烧录和调试

合宙提供了这个芯片及开发板的 LuatOS 开发环境和工具链, 但还是有很多开发用户希望能使用纯C语言的环境和工具链. 以下说明如何在Keil5 MDK中使用 DAP-Link 烧录 AIR105 开发板.

准备工作

板卡

  • AIR105开发板
  • DPALink转接卡

工具部分

  • OK线, 用于引出PC3, 如果不知道OK线长什么样的, 可以在某宝搜索. 如果有直径0.2-0.3mm的漆包线也可以使用
  • 特尖烙铁头, 搜索型号 900-SI, 900M-T-IS, 900M-T-I 这类特尖头和特尖弯头, 因为PC3对应的电阻为0402, 与开关贴得很近, 普通烙铁头不容易焊接
  • 普通焊锡丝
  • UV559(或者类似的, 非酸性)助焊油

软件

  • 预先安装好 Keil5 MDK, 以下假设使用的是默认的安装目录 C:\Keil_v5
  • 下载好示例项目并在Keil5 MDK中打开, 下载地址
  • 下载FLM文件备用, 下载地址

硬件调整: 接出PC3

使用DAP-Link连接需要4根线: VCC, GND, SWCLK 和 SWDIO, 其中 SWCLK对的是PC4, 这个pin脚是现成的; SWDIO对的是PC3, 这个开发板并未接出PC3, 所以需要自行焊接引出.

根据开发板线路图, 靠近开关一侧的LED通过一个5K的电阻连接了PC3, 所以只需要从这个电阻的一侧引出接线即可. 位置可以参考下图的红框部分.

可以使用图中这种固定方式, 焊排针时多留一个排针, 将线一端先固定好, 另一端让线尖正好搭在电阻的一侧. 在线尖处加上助焊剂后, 烙铁尖头搭一点锡后将线焊上. 注意锡不能多, 时间不能太久. 焊完要用万用表检查一下, 量排针到电阻的另一侧, 阻值是否正确.

修改PC3口输出状态

如果开发板还处于出厂状态, PC3用于点亮LED, 会处于输出状态, 所以此时开发板通过DAP-Link连上电脑后, Keil中查看DAP-Link设备会显示 DAP Error, 需要先刷入其他固件, 将PC3口的输出状态修改掉.

烧录使用 Luatools, 参考烧录说明. 可以自己制作(看最后的说明), 或者使用这个已经制作好的soc 点击下载

烧录成功后, PC3口不会再用于输出, 串口会输出大量杂乱内容, 可以忽略.

配置Keil5 MDK

此时开发板通过DAP-Link连上电脑后, 在Keil中查看DAP-Link就正常了

还需要以下的配置

1. 下载Flash算法文件

在前面准备工作中下载的FLM文件, 放到 C:\Keil_v5\ARM\Flash 目录下, 这个目录下能看到其他的 .FLM 文件.

2. 在Keil MDK中的设置

  1. 在Keil MDK中, 点击 Project -> Option for Target ... 打开配置对话框, 切换到 Debug 标签页
  2. 在Use中选中 CMSIS-DAP Debugger, 点击 Settings 打开对话框, 如果前面都操作正确的话, 这里在SW Device中能看到一个IDCODE为 0x2BA01477的设备
  3. 在这个对话框中, 左侧的 CMSIS-DAP - JTAG/SW Adapter 中, 将 Max Clock 修改为 10MHz. 默认的1MHz会导致写入时报 AIR105.FLM 文件无法载入的错误.

3. 设置FLM和内存大小

  1. 在这个对话框, 切换到Flash Download标签页, 可以看到 Programming Algorithm 列表是空白的, 点击 Add, 选中 Air105, 点击 Add 添加到列表
  2. 在这个对话框的右上角, RAM for algorithm 部分, 将 Size 修改为 0x00004000. 默认为 0x00001000, 会报内存不足
  3. 在这个对话框勾选 Reset and Run, 然后点击 OK 保存

4. 烧录

经过上面的配置, 应该就可以直接按F8烧录了

其他说明

制作soc文件

soc文件其实是一个压缩文件, 用7zip之类的工具打开后, 可以将其中的app.bin移除, 换成自己的app.bin.

在keil mdk中生成 bin 格式固件

以 Blink 这个项目为例

  1. 打开项目配置文件 Options for Target ...
  2. 切换到 User 标签页, 在 After Build/Rebuild 下, 勾选 Run #1, 填入要执行的内容, 填入
C:\Keil_v5\ARM\ARMCLANG\bin\fromelf.exe --bin -o  .\Objects\Blink.bin .\Objects\Blink.axf

不同的项目, 其相对路径可能不一样, 需要自行调整

自建项目, 写入报 No Algorithm found 错误

完整错误为

No Algorithm found for: 00000000H - 00001183H

这是因为AIR105的 __ROM_BASE 与标准的 ARMCM4 不一样, 需要修改项目中的 ARMCM4_ac6.sct 文件, 按下面的数值调整

#define __ROM_BASE      0x01001000
#define __ROM_SIZE 0x00080000 #define __RAM_BASE 0x20000000
#define __RAM_SIZE 0x000A0000 #define __STACK_SIZE 0x00000200
#define __HEAP_SIZE 0x00000C00

参考

合宙AIR105使用Keil MDK + DAP-Link 烧录和调试的更多相关文章

  1. 合宙AIR105(二): 时钟设置和延迟函数

    目录 合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试 合宙AIR105(二): 时钟设置和延迟函数 Air105 的时钟 高频振荡源 芯片支持使用内部振荡源, 或使 ...

  2. 合宙AIR105(三): 定时器, 定时器中断和PWM输出

    目录 合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试 合宙AIR105(二): 时钟设置和延迟函数 合宙AIR105(三): 定时器, 定时器中断和PWM输出 Ai ...

  3. 合宙AIR105(四): SPI, MAX7219 8x8LED驱动

    目录 合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试 合宙AIR105(二): 时钟设置和延迟函数 合宙AIR105(三): 定时器, 定时器中断和PWM输出 合宙 ...

  4. 合宙Air32F103CBT6开发板上手报告

    2022年6月初合宙新上市了 Air32F103 系列 MCU, 市面上 STM32F103 的克隆军队又增加了新的一员. 这次不知道是哪家的贴牌, 分 Air32F103CBT6 和 Air32F1 ...

  5. KEIL MDK 5.12帮你快速建工程模板的技巧

    KEIL 5帮你快速建工程模板的技巧 本人使用keil mdk 5.12有一段时间了,发现keil mdk 5.12里面驱动库比较方便.这个新功能可以节省我们的时间,也可以让初学者能尽快上手和掌握这个 ...

  6. keil MDK中如何生成*.bin格式的文件

    在Realview MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件.虽然这两个格式的文件非常有利于ULINK2仿真器的下载和调试,但是ADS的用户更习惯 ...

  7. Keil MDK编译器(V4.03)与J-LINK使用

    前几天进手了一个J-LINK,因为H-JTAG毕竟对MDK支持的不是太完美,比如用keil mdk上面的下载按钮烧录程序,不是直接就能烧录进去,而是弹出H-Flash软件,再手工选择文件烧录:而且用H ...

  8. Keil MDK 无法设置断点【worldsing】

    要解决一个问题就怕不知道怎么搜索,或是别人没有遇到过: 同样碰到Keil MDK Debug调试无法设置断点问题,首先来问百度,GOOGLE,一下是我搜索到的结果:   1.keil 不能设置断点,每 ...

  9. Keil MDK 5.0发布了

          从上图可以看出MDK500.EXE (294,308K)分成了两部分,MDK核和software packs.MDK核跟以往一样分成四个部分,编辑器,编译器,包安装,调试跟踪.此版soft ...

随机推荐

  1. 【剑指Offer】左旋转字符串 解题报告(Python)

    [剑指Offer]左旋转字符串 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目 ...

  2. 【剑指Offer】把数组排成最小的数 解题报告(Python)

    [剑指Offer]把数组排成最小的数 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  3. AI实战分享 | 基于CANN的辅助驾驶应用案例

    摘要:什么是辅助驾驶?简而言之,就是借助汽车对周围环境的自动感知和分析,让驾驶员预先察觉可能发生的危险,有效增加汽车驾驶的舒适性和安全性. 导读:基于昇腾AI异构计算架构CANN的辅助驾驶AI应用实战 ...

  4. 【Java例题】3.4求a+aa+aaa+aaaa+... ...+aa...a(n个

    4. package chapter3; import java.util.*; public class demo4 { public static void main(String[] args) ...

  5. <数据结构>XDOJ327.最短路径

    问题与解答 问题描述 求图中任意两个顶点之间的最短路径. 输入格式 输入数据第一行是一个正整数,表示图中的顶点个数n(顶点将分别按0,1,-,n-1进行编号).之后的n行每行都包含n个整数,第i行第j ...

  6. 【MySQL作业】MySQL函数——美和易思系统信息函数和加密函数应用习题

    点击打开所使用到的数据库>>> 1.显示当前 MySQL 服务器的版本信息和登录信息. MySQL 系统信息函数 version() 用于返回当前 MySQL 的版本号," ...

  7. .NET5.0 依赖注入,关于 Autofac 使用

    前置 工具 VS2019 概念 关于以下几个概念,自行百度. 控制反转:IoC(Inversion of Control) 依赖注入: 容器:DI 容器(.NET Core 自带),Autofac(本 ...

  8. CSS基础 margin塌陷问题以及解决 办法

    场景:两个相互嵌套的块级元素,父子元素相互紧贴margin-top会合并作用在父元素的子元素结果:导致两个盒子同时移动 解决方法: 1.给父元素设置overflow:hidden 2.给父元素设置浮动 ...

  9. Python_上下文管理器

    上下文管理器(context manager)是 Python 编程中的重要概念,用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存).它的语法形 ...

  10. linux 查看历史命令 history命令

    1.history命令 "history"命令就是历史记录.它显示了在终端中所执行过的所有命令的历史. history //显示终端执行过的命令 history 10 //显示最近 ...