1. 复盘
在8月份的时候有评估国产的BLE模块,经过强烈的内部争论后终选择了Phylius 的PHY6212。理由是:这个PHY6212 安信可有模组提供,硬件工程师可以方便快速的搭建电路。我内心是抗拒的,从产品角度讲我不认为这是一个很好的方案。 我这里简单的复盘一下抗拒的原因有如下:
- 发射功率: 和WHC 一款比较没有明显优势,略高于其他BLE模块
- 低功耗模式:只支持睡眠模式和掉电模式;IO口唤醒只支持上升沿和下降沿,不支持高电平或低电平唤醒
- 虽然是M0内核,但是没有对应的 .pack支持包,因此不能在线下载程序,但是经过配置可以在线仿真
- 没有保障的技术支持,安信可的技术支持也只能告诉你一些怎么使用模组以及烧录的表面问题;Phylius跟不用提了,好久联系不上,联系上了一再推脱,不是在开车,就是稍等回复我,然后就没有消息了
- 使用模块IO口资源有限,不利于后期产品升级扩展
事实上,后来也遇到了资源受限的问题。然后考虑采用PHY6212芯片自己设计模组,但是无奈Phylius联系不上,以至于采购样片的窗口的都没有。当然,有人提出淘宝可以购买,我…
从上面的复盘可以看出来,这里面从在很多问题:
- 从我个人角度讲,心里预测到的这些疑点没有能够正确的反馈到团队,让争论发挥的有意思。没有强烈的支持自己的想法,有理有据的说服他人
- 从团队角度讲,没有一个真真能有权威的核心任务决策,一顿争论后,默认的硬件工程师按照自己的想法实施方案
- 团队成员没有关注自己在团队的知识积累,不敢尝试新方案和挑战有难度的设计,主要的目标还是完成任务
上面就是我简单的复盘,无奈,由于安信可模组资源受限,Phylius原厂一再推脱,只能切换方案。又要苦逼的移植平台……
2. PHY6212 是如何配置在线仿真的
已开始我也很疑惑,在MDK下没有 programming Algorithm 是怎么进入Debug 模式的。后来查看到在工程文件下有两个重要的文件
- ram.ini 文件,它是RAM初始化文件, 里面内容如下:
FUNC void Setup(void) {
SP = _RDWORD(0x00000000); // 设置堆栈指针
PC = _RDWORD(0x04); // 设置PC指针
_WDWORD(0xE000ED08, 0x00000000); // 设置中断向量表地址
_WDWORD(0x1fff0ff8, 0xdbdbbdbd);
_WDWORD(0x1fff0ffc, 0x1fff4800);
}
LOAD .\Objects\wrist.axf INCREMENTAL // 加载映像文件到SoC
Setup(); // 调用Setup函数修改堆栈指针和PC指针
//g,main
- scatter_load.sct 分配的地址
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x1fff4800 0x0001a000 { ; load region size_region
ER_IROM1 0x1fff4800 0x0001a000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
*.o(.rev16_text,.revsh_text,.text)
.ANY (+RO)
.ANY (+RW +ZI)
}
}
LR_IROM2 0x1fff0800 0x00800 {
JUMP_TABLE 0x1fff0800 0x00400 {
.ANY (jump_table_mem_area)
}
GOLBAL_CONFIG 0x1fff0c00 0x00400 {
.ANY (global_config_area)
}
}
需要将这两个文件 link 到MDK环境,具体方法详见 博文
2.1 HYPLUS JTAG Debug 操作说明
- 安信可模块按照复位按键和TM 按键,进入烧录模式
- 用PhyPlusKit工具擦除芯片内的程序(PhyPlusKit使用见其使用指导说明);防止芯片内程序进入sleep,而不能进行Debug.
- 把JTAG连接到电脑上,如果第一次链接JTAG,电脑会自动安装对应驱动,安装好后,在电脑的设备管理中的通用串行总线控制器显示一个“J-LINK Driver”设备。
- 用Keil 打开工程,-> 点击option,见下图
- 选择Debug,在Use中选择J-LINK/J-TRACE Cortex如下图:
- 点击”Use”后的settings,进入settings界面,如下图:
如果JTAG链接OK,会显示SN号已经相应的HW,FW版本信息,见图标1,如果这个时候JTAG链接上Phyplus芯片终端,JTAG Device Chain会显示IDCODE, Device Name等信息,见图中2所指示。如果图2中没有显示,可以复位Phyplus芯片,点击图中3所指示的scan来查找。如果没有要check JTAG是否和芯片模组连接好 - 确认OK,点击确认,返回Option界面,选择C/C++,确认CFG_SLEEP_MODE=PWR_MODE_NO_SLEEP,如果不是,修改为PWR_MODE_NO_SLEEP,点击OK,回到Keil主工程界面,重新编译,即rebuild.
- 配置 Flash Downlaad
![](https://img-blog.csdnimg.cn/319d68d3166b41b3b7f3894dcef76a48.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmljb2xlMDg4,size_20,color_FFFFFF,t_70,g_se,x_16 - 编译后,点击Start/stop debug见下图,或按Ctrl+F5组合按键进入Debug界面
- 进入Debug界面 就可以设置断点、运行、调试