本帖最后由 zhanzr21 于 2022-11-26 12:46 编辑
#申请原创#为这个板子写的第一篇评测, 记录从拿到板子到配置开发环境, 创建简单工程, 直到下载第一个程序过程.
这个贴子中有一些吐槽, 作者本意是和灵动官方的工程师探讨, 并不是想故意”黑”哪个板子或哪个芯片.惯例先上图吧,
因为不是摄影比赛, 所以也没有上原始的高清图, 大家凑和看看.板子外形没有啥好评论的, 中规中矩. 主要还是看功能和开发体验.
下面开始准备开发环境, 板子自己没有带调试器, 需外接调试器和电源就可以了, 实验中直接用调试器的电源对板子也可以供电, 不用单独插那个MicroUSB的电源线. 不过这肯定不规范.
软件开发, 首先准备设备驱动支持包. 作者本人使用Keil MDK 5.36.于是开始找对应的设备支持包. 首先在灵动的网站上找到了一个应用手册,按照这个手册来的, 发现坑比较多.
这个手册给了三种方法, 实验中全部没有成功,虽然最后就在下载应用手册的旁边找到了需要的Keil Pack, 不过还是把其中的经历记录下,希望官方工程师做出相应的修复, 要么修复文档,要么修复网站.
上述应用笔记推荐的第一种方法, 就是通过Keil软件本身的包管理器来下载, 这个其实也是本人一向推荐的方法, 最直接明了,理论上是”最佳实践”, 实际情况下因为灵动官方没有上传相应的软件包,导致这个方法没有走通.
这是本人MDK版本, 5.36,比较新,所以不认为是版本原因.
在包管理器中没有找到MM32L0136C7P对应的软件包, 应该是厂商没有上传, 顺便测试了下另外还有两个其他两个包无法下载,原因不明.
上述应用笔记推荐的第二种方法,是去Keil网站去下载回来手动安装.本人认为第一种方法如果不可行, 第二种方法肯定也行不通, 因为从包管理器和网站下载是读取的同一个数据源. 实际情况验证了作者的推断. 该网站页面上的内容和Keil包管理器内的内容完全一致, 没有MM32L0136C7P对应的软件包.
应用笔记中提供的第三种方法是到提供的一个网址上去下载软件包.
这个更离谱, 打开直接给你翻白眼.
用了应用笔记中的例子连接,点开是404错误.
最后只好到下载这个应用笔记的页面去找, 这次还好, 找到了.
下载解压, 发现要找的软件包.
点击安装,一路next.
现在来创建一个最简单的工程,用工程向导,选这几个组件,来个先进的流水灯实验以验证硬件软件开发环境.
之后点击按钮进行build,BANG的一声.下面看第一个错误:
然来是官方软件包提供的启动文件有误, 也不知道发布前怎么测试的:定义异常向量和默认向量处理函数的符号没有对应上.
__Vectors DCD |Image$ARM_LIB_STACK$ZI$Limit| ; Top of Stack
DCD Reset_Handler ; -15 Reset
DCD NMI_Handler ; -14 NMI
DCD Hardwarefault_Handler ; -13 Hardwarefault
DCD 0 ; -12 Reserved
DCD 0 ; -11 Reserved
DCD 0 ; -10 Reserved
DCD 0 ; -9 Reserved
DCD 0 ; -8 Reserved
DCD 0 ; -7 Reserved
DCD 0 ; -6 Reserved
DCD SVCall_Handler ; -5 SVCall
HardFault_Handler\
PROC
EXPORT HardFault_Handler [WEAK]
B .
ENDP
SVC_Handler PROC
EXPORT SVC_Handler [WEAK]
B .
ENDP
修复这个简单, 改成一致就好了.
再来build,BANG的一声, 来看第二个错误:
看了下是初始栈顶没有定义导致的错误.
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
IMPORT |Image$ARM_LIB_STACK$ZI$Limit|
__Vectors DCD |Image$ARM_LIB_STACK$ZI$Limit| ; Top of Stack
DCD Reset_Handler ; -15 Reset
DCD NMI_Handler ; -14 NMI
DCD HardFault_Handler ; -13 Hardwarefault
这个有点无厘头, 其它厂家的启动文件中就顺便把stack,heap的大小定义了, 虽不是最合理的做法, 却已经约定俗成, 本人的意见是继续沿用.
但这个是芯片厂商的选择权利, 我们只能去适应.
于是参考灵动官方的例子工程, 另外配置了一个自定义连接脚本.
连接脚本可以用文本编辑, 也可以在Keil界面进行图形化配置, 本人倾向后者.
这下终于build通过了, 下载也可以了.
这板子上手的经历实在是有点崎岖, 强烈呼吁厂商提升开发体验. 第一篇评测贴到此为止, 下篇再见!
|