本帖最后由 airwill 于 2024-1-19 20:52 编辑
关注 RISC V 处理器已经很久了, 由于内核的复杂性, 一直没有能决心试试. 这次非常高兴能有幸体验这款搭载 玄铁 E906 国产内核的处理器. 非常兴奋.早早就寻找和查阅了处理器手册和内核资料.
期待了好久, 终于收到了快递, 开发板+仿真器外加一条数据线, 靓照来一个
开发板虽然引脚都引出来了, 但是没有留可以玩的外设, 连个IO指示灯都没有.
鉴于 RISC V 处理器内核比大致同等的 ARM M4 有更多的 CPU 寄存器, 在应付复制计算时, 能减少内存访问, 提高效能. 想看看这款 APT32F1732 的性能. 为此从熟悉的手头一个电机控制算法库里拉初一段程序, 找手头另外一块 ARM M4 内核的国民 N32G455 开发板做个对比.
APT32F173 开发工具安装, 从官网 http://www.aptchip.com 下载集成开发环境, CDK_V2.14.0.
安装后打开例程, 发现与 ARM 的开发环境挺接近, 用起来没有太多陌生感.但是当下载程序调试的时候
却怎么也不成功. CDK提示仿真器没有和PC连接, 费了很多时间没有解决问题.
意外地在一个说明文档看到说要 CDK_V2.20 版以上才能连接仿真器. 网上一通搜啊, 终于在平头哥的网站上找到了 CDK_V2.22 版, 安装后果然与仿真器连接上了... 相信测评的朋友都在 IDE 上浪费了时间吧, 官网既然知道要新版本, 为何没有提供新版本的连接呢?
在性能测试之前, 先要熟悉下芯片资源, 得先调个时间基准出来, 验证时钟速度.
对于 M4 最简单的 Systick 做时间对比最为合适, 为了降低中断开销的影响, 我让 M4的 Systick 定时跑最大 24 位计数 (16777216), 但是 E906 内核没有看到类似的定时器, 不过定时器资源倒是挺丰富的. 查了各个定时器外设, 感觉 BT 外设简单方便, 通过256分频后, 用足16位的65535计数可以和 M4 的 Systick 类似
先试验跑马灯验证时钟. APT32F1732的外设寄存器都有似曾相识的感觉, 看手册不费劲, 不过外设库函数不大习惯, 但大都可以从 user_demo.c 里去找类似函数. 开发板没有可控的指示灯, 为此找来一块指示灯板, 8路指示灯. 通过 IO 口寄存器累加来计时, 看指示灯的闪烁速度大致能判断时钟是否准确. 看下跑马灯的测试版
接下来进行电机算法运行时间测试, 目前我一直在用的是浮点库. 正好 E906 也有浮点单元, 代码移植, 各种外设寄存器地址修改完, 编译. 发现编译错误, 连接不到 fmaxf, fminf, sinf cosf 等函数, 前两个是比大小的函数, 倒是好解决, 写个 if else 能解决. 但是三角函数却没有办法不用. 发了官网支持邮件求助.
再找手册和例程里各函数和文件, 看看有没有解决办法.
例程用的不是标准库, 而是另带的 libcsi_xt900p32f_dsp.a 文件, 于是想到去找找有没有相关的头文件, dsp文件夹里找到 csi_math.h 有 void csi_sin_cos_f32() 函数, 想必是用来三角函数的, 放到测试代码中. 执行到这个函数死锁... 没有能调试进去看里面的二进制指令.
时间不多了, 先总结一下, 待有进一步测试后更新吧.
|