打印

【APT32F173测评】+ RISC V 处理器性能初体验

[复制链接]
469|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
airwill|  楼主 | 2024-1-19 20:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 airwill 于 2024-1-31 22:33 编辑

  关注 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 类似的功能, 接下来先试验下跑马灯来验证 CPU 时钟. 对于熟悉 STM32 的人来说, APT32F1732的外设寄存器都有似曾相识的感觉, 所以看用户手册不费劲, 不过外设库函数不大习惯, 但大都可以从 user_demo.c 里去找类似函数.
  为了避免中断开销影响性能评分, 考虑通过读定时器中断状态寄存器判断定时器溢出, 调试发现不能实现, 只得打开中断.  为此改了一下, 采用 65536分频,  再设置 65535 为周期, 这样不会轻易中断, 避免中断开销的影响. 通过读计数值, 检查高8位的变化来判断 24 位计数溢出情况作为测试时基, 看看开发环境

  开发板没有可控的指示灯, 为此特意淘来一块带8路指示灯的灯板. 通过 IO 口寄存器累加来计时, 看指示灯的闪烁速度大致能判断时钟是否准确. 看下安装了跑马灯的测试版
  
  接下来进行电机算法运行时间测试, 目前我一直在用的是浮点库. 正好 E906 也有浮点单元, 测试代码来着 TI 官方代码库里的一段 FOC 代码, 主要包括电流坐标变换的算法和闭环控制. 通过移植, 修改各种外设寄存器地址修改完, 在 ARM-M4编译通过调试. 但再移植到 CDK, 发现编译错误, 连接不到 fmaxf, fminf, sinf cosf 等函数, 前两个是比较大小的函数, 倒是好解决, 写个 if else 能解决. 但是三角函数却没有办法不用. 发了官网支持邮件求助一下.
  再找手册和例程里各函数和文件, 看看有没有解决办法.
  例程用的不是标准库, 而是另带的 libcsi_xt900p32f_dsp.a 文件, 于是想到去找找有没有相关的头文件, dsp文件夹里找到 csi_math.h 有 void csi_sin_cos_f32() 函数, 想必是用来三角函数的, 放到测试代码中. 执行到这个函数死锁... 没有能调试进去看里面的二进制指令.
  时间不多了, 先总结一下, 待有进一步测试后更新吧.



使用特权

评论回复

相关帖子

沙发
airwill|  楼主 | 2024-1-19 22:14 | 只看该作者
本帖最后由 airwill 于 2024-1-31 22:57 编辑

再次查看 csi_math.h, 找到两个三角函数定义
float32_t csi_sin_f32(float32_t x);
float32_t csi_cos_f32(float32_t x);
应该是 DSP 库里的三角函数浮点计算函数, 马上改过来再试. 运行正常, 于是调整编译优化等级, 测试了下几个数据.
APT32F1732 在16777216时钟周期下, 可以执行测试代码次数.
编译优化 O0 条件下测得 1BF8;
编译优化 O3,条件下测得 1CFA;
编译优化 Og,条件下测得 19D7

相同代码在 N32G455VET7 开发板上 KEIL 编译器测试
编译优化 O0 条件下测得 16E6;  
编译优化 O3 条件下测得 1F4E~1F5F.




使用特权

评论回复
板凳
airwill|  楼主 | 2024-1-19 22:18 | 只看该作者
从 没有开编译优化的条件下, 玄铁 E906 内核快了不少, 但是打开编译器优化后, ARM-M4 的速度提升了很多,  但 RISC-V 的提升不多, 也许有可能编译器的代码优化的水平还不是很高吧.

使用特权

评论回复
地板
airwill|  楼主 | 2024-1-19 22:18 | 只看该作者
本帖最后由 airwill 于 2024-1-20 12:18 编辑

随着摸索, 越发感觉 APT32F1732 处理器功能很强大. 未来 RISC-V 会越来越更大地占有 嵌入式市场份额.

使用特权

评论回复
5
airwill|  楼主 | 2024-3-9 15:36 | 只看该作者
记得若干年前, 首次玩 ARM-M3 的处理器时, 特别测试了一下处理器的性能裕量。
经测试, 发现  标称 72MHz 的 107 处理器,跑到了 128Mhz 以上, 标称 168MHz 的 407 更是冲到了 280MHz 以上。
今天再来试试这款 RISCV 处理器到底怎么样。

还是打算用累加的办法逐步提升频率, 用法
                        csi_pll_disable();
                        csp_pll_set_nul(SYSCON, ++cknul);
                        csi_pll_enable();                       
发现改不了 SYSCON_PLLCK 里的 NUL 量, 无效。

查了下代码库里面的配置方法, 是借助于结构体:
csi_pll_manual_config_t g_tPllClkConfig =
        {PLL_SEL_HFOSC_24M, 3, 35, 1,CKQ_DIV4};       //PLLPCLK = 24 /(3+1) *35 / (1+1)  PLLQCLK = 24 /(3+1) *35 / 4
其中 35 就是 PLL 的倍数。对于 24MHz 的晶振, 处理器主频 105Mhz,
于是修改这个参数。
发现还是没有能够改掉  SYSCON_PLLCK 里的 NUL 量,仍然无效。
仿真器跟踪,sysclk.c 里
                        csp_pll_set_nul(SYSCON, g_tPllClkConfig.byNul);
用 Watch, 发现 g_tPllClkConfig.byNul 仍然是 0X23; 但是 F12 查这个变量定义,里的数据已经被改动了
难道是 csp_pll_set_nul 调用前,有代码修改了这个变量,没有看到处理器支持数据修改中断,很难找到哪里修改了这个数据。
此方法暂时作罢, 无效

为了获得这个数据, 决定试试手动修改 NUL 量, 在 sysclk.c 里
                        csp_pll_set_nul(SYSCON, g_tPllClkConfig.byNul);
打下断点, 待函数执行后, 手动改 NUL, 发现有效。

测试 2b,能正常工作,  但 2c 时卡死。
担心 FLASH 等待周期不够引起的问题,
再将 IFC_MR 里的 WAIT 由4 分别改为 5,6,7,再进行测试,当该为 7 时,我的流水灯又闪了起来。
再往上调, 就再也没有可以运行了
以上频率的变化,对流水灯的转换时间进行了测试。验证时钟得到了提升。
结果:
105Mhz  APT32F1732 处理器,最大极限频率测试能运行到 138Mhz。
其中 135Mhz 下, cpu 还算比较稳定。

顺便查了下, 频率过高后,处理器进入了异常循环,异常序号 5, 好像内核资料 E906R2S3 称这个异常号保留

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎进入 TI 模拟技术论坛!

556

主题

17720

帖子

884

粉丝