稻花鱼是什么鱼| 为什么会得面瘫| 毛泽东属相是什么| 血压低容易得什么病| 网络cp是什么意思| 疱疹有什么症状| 坪效是什么意思| 晚上吃什么有助于睡眠| 丧是什么意思| 毒龙是什么意思| 散光看东西是什么样的| 为什么熊猫是国宝| 宝宝热疹用什么药膏| 萧敬腾为什么叫雨神| 无花果吃了有什么好处| 狗狗气喘吃什么药| 梦见自己的手机丢了是什么意思| 肉炒什么菜谱大全| 芭乐是什么意思| 蒲公英是什么样子| 性生活过后出血是什么原因| 梅花是什么颜色| 王林为什么叫王麻子| aoerbo是什么牌子的手表| 饱的偏旁叫什么| 一竖一点念什么| 长宽高用什么字母表示| com是什么| 胆囊壁增厚是什么意思| 鹦鹉能吃什么水果| 梦见红薯是什么意思| 什么是爱国| 吃了狗肉不能吃什么| 谭字五行属什么| 双肺索条灶是什么意思| 庹在姓氏上读什么| 肌酐指标高说明什么| 深圳居住证有什么用| 做绝育手术对女人有什么影响| 风格是什么意思| 相亲是什么意思| 归来是什么意思| aug是什么意思| 产前诊断是检查什么| 双侧中耳乳突炎是什么意思| 恐龙是什么时候灭绝| 长脸适合什么刘海| sz是什么意思| 怀孕三个月吃什么对胎儿好| 梦见亲人哭是什么征兆| clean什么意思| 武则天姓什么| 大脑供血不足吃什么药| 此是什么意思| rfc是什么意思| 老生常谈是什么意思| 胃不好的人适合吃什么水果| 面筋是什么做的| 两鬓长白发是什么原因| 团县委是什么单位| 什么的兵马俑| 什么是肝掌| lh是什么激素| 诈骗是什么意思| 女人什么时候停经| 朝霞不出门晚霞行千里是什么意思| 毒瘾发作有什么症状| 林俊杰什么时候出道的| 男人交公粮什么意思| 胃蛋白酶原1偏低是什么意思| 食管鳞状上皮增生是什么意思| 东北属于什么气候| 属兔生什么属相宝宝好| 大什么一什么| 鼻炎是什么症状| 宫颈癌前期有什么症状| 金蟾是什么| qn是什么意思| 鸦片鱼是什么鱼| 梦见手机坏了是什么意思| 备孕做什么检查| 偶像包袱是什么意思| 橙色加蓝色是什么颜色| 偶发室上性早搏是什么意思| 什么叫瑕疵| 微循环是什么意思| 幼儿园什么时候报名| 帅是什么意思| 呵呵是什么意思啊| 头发斑秃是什么原因引起的| 元曲是什么意思| 挂号是什么意思| 爽约是什么意思| 益生菌和益生元有什么区别| qty什么意思| 为什么手抖| 茜读什么| 大运是什么意思| eeg是什么意思| hpv45型阳性是什么意思| 靴靴是什么意思| 风土人情是什么意思| 土豆不能和什么一起吃| 早上五点半是什么时辰| 天空中有什么| 梦见买猪肉是什么预兆| hcg下降是什么原因| 为什么养鱼养单不养双| 银杏叶提取物治什么病| 站桩对身体有什么好处和功效| 唵是什么意思| 尔昌尔炽什么意思| 变态反应是什么意思| 吾儿是什么意思| 皇汉是什么意思| 抗0是什么意思| 肚皮冰凉是什么原因呢| cns是什么意思| 打摆子是什么病| 人的牙齿为什么不能再生| 空心菜什么人不能吃| 甲状腺结节有什么症状表现| 为什么拉屎是黑色的| 感冒嗓子痒咳嗽吃什么药| 虫介念什么| 夜尿多吃什么药| 率的部首是什么| 三朵玫瑰花代表什么意思| 摩什么接什么| 备孕需要做什么准备| 芒果有什么功效| 1104是什么星座| 喝茶心慌的人什么体质| 生物包括什么| 蚯蚓吃什么食物| 正局级什么级别| 46岁属什么| 寒性和凉性有什么区别| 粉玫瑰适合送什么人| 孙膑是什么学派| 香蕉可以做什么美食| 黄瓜敷脸有什么好处| 中央候补委员是什么级别| 中间细胞百分比偏高是什么意思| 尿毒清颗粒主治什么病| 渗液是什么意思| 世袭罔替什么意思| 植物神经功能紊乱吃什么药| 尿多是什么回事| 血清高是什么原因| 黄痰黄鼻涕吃什么药| 皮肤黄是什么原因| 霸王别姬是什么菜| 肾结石要注意什么| 妇科支原体感染吃什么药| 过敏性紫癜不能吃什么| 定日是什么意思| 吃坏肚子了吃什么药| 费神是什么意思| 宫外孕是什么| 血沉是查什么病的| 艾灸有什么好处| 三千大千世界什么意思| 化是什么意思| hbv是什么病毒| 畏手畏脚是什么意思| 尿道炎吃什么药比较好的快| 朱元璋是什么星座| halloween是什么意思| 小孩说话不清楚挂什么科| 李宇春父亲是干什么的| 一什么而入| 口腔溃疡吃什么药| fcm是什么意思| 地头蛇比喻什么样的人| 互卦是什么意思| 类似蜈蚣的虫子叫什么| 真谛是什么意思| 霍山石斛有什么功效| 唇腺活检主要是看什么| 口苦吃什么中成药| 歼是什么意思| 最不干净的动物是什么生肖| 瞬息万变是什么意思| 白手套什么意思| 结婚28年是什么婚| 痛经吃什么好| 清汤寡水是什么意思| 歆五行属什么| 上午十点多是什么时辰| 兰花叶子发黄是什么原因| 身体上有小红点是什么病| 肺结核阳性是什么意思| 什么是历史虚无主义| 肚脐眼痒是什么原因| mic是什么意思| 肺结核是什么病| 01年的属什么| 淋巴癌有什么症状| 一个月一个寸读什么| 小山羊是什么病| 外子是什么意思| 抹茶是什么意思| 晚上入睡困难是什么原因| 去威海玩需要准备什么| 葡萄什么时候成熟| 小孩病毒性感冒吃什么药效果好| 今天是个什么日子| 腹泻吃什么消炎药| 人参有什么功效| 3.8号是什么星座| 缺钾吃什么水果| 世界上最多笔画的字是什么字| a型熊猫血是什么血型| 诺氟沙星胶囊治什么| 乙肝25阳性什么意思| 天秤座跟什么星座最配| 樵夫是什么生肖| 脂溢性脱发是什么意思| 怀孕了有什么症状| 什么屈膝| 肌腱是什么组织| 什么叫市级以上医院| 梦泪什么意思| 上皮细胞高是什么原因| 天宫是什么意思| 社恐到底在害怕什么| mf是什么| 他叫什么名字| 一什么清凉| 注解是什么意思| 油碟是什么| 反水什么意思| 宝宝积食吃什么| 晚上睡觉出汗是什么原因| 微白蛋白高是什么情况| 灰指甲是什么原因| 高铁什么时候检票| 护理是做什么的| pussy 什么意思| 老师家访需要准备什么| 脑萎缩挂什么科| 翠玉是什么玉| 射手座什么性格| pg是什么| 女真人是什么民族| 胃酸吃什么食物好| 王玉什么字| 电疗是什么| 生不逢时什么意思| 胸部胀痛什么原因| 吃什么容易排大便| 肉桂茶是什么茶| 什么梨| 西瓜和什么不能一起吃| 腺样体增生是什么意思| 当驾校教练需要什么条件| 什么是梅尼埃综合症| 5月12日什么星座| 春回大地是什么生肖| 大是大非是什么意思| 康波是什么意思| 蔻驰香水属于什么档次| 茶水洗脸有什么好处和坏处| 百度
发新帖本帖赏金 80.00元(功能说明)我要提问
返回列表
打印
[G32R]

旺盛园林控股股东质押1000万股 用于借款提供担保

[复制链接]
2538|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

1.?背景

在传统的嵌入式开发中,如果我们需要在一颗小小的?MCU?上跑一些高强度的运算,常规做法是:

  • 借助库函数或手写汇编进行手动优化;
  • 或是在硬件设计层面,通过额外的外设或协处理器(crypto,?DSP)?助力,完成特定功能加速。

但随着对性能需求越来越苛刻,硬件资源又不想失去?Arm?生态的广泛支持,怎么办?? 这时候,“自定义指令”?(或称自定义加速单元)?就闪亮登场了:

  1. 具备灵活性:? 允许根据应用需求把常用的算法指令“写入”CPU,以极低延迟操作处理器寄存器。
  2. 兼容生态:? 不必魔改编译器、无须大改调试器;保持与现有?Arm?工具的融洽相处。

zidian?就是这样一个在?G32R501?MCU?上基于?ACI?机制打造的“加速引擎”,主要目标是——极速飙升运算能力,让原本需要几十条甚至上百条指令才能搞定的运算,缩短到寥寥几条。

2.?不得不说ACI:一把开启硬件定制的大门

2.1?ACI?的“前世今生”

ACI?全称?Arm?Custom?Instructions,它让芯片厂商能够在?Cortex-M33、Cortex-M55、Cortex-M52?等处理器上,自定义数据处理指令集。

  • 传统做法中,也有借助“Coprocessor?Interface?(协处理器接口)”实现硬件加速,但它往往需要独立管理寄存器、内存访问,适合批量处理或在后台执行的场景。
  • ACI?则进一步贴近?CPU?寄存器流水线,“紧耦合”地完成特定操作,非常适合短周期、高频调用的计算需求。

简单来说,ACI?就是为?MCU?打开了一扇“能深度定制指令的门”,保留了标准?Arm?生态的同时,提供了更细粒度的指令级优化。

image-20250707211719864.png

2.2?ACI?的实现方式

在硬件层面,Arm?针对协处理器指令编码区,预留了部分空间让厂商编写自己的操作:

  1. 指令解码阶段:? CPU?内部会检测该指令是否隶属某个?coprocessor?number;若与?ACI?相关,则交由“定制数据通路”进行计算;
  2. 数据读写:? CPU?读取需要的寄存器?(整数寄存器或浮点寄存器),然后将数据送给?ACI?硬件模块;
  3. 获取结果:? 结果再写回?CPU?寄存器;若支持更新?APSR?的某些标志位?(如NZCV)?也可以在此阶段完成。

2.3?ACI?指令风格

在?Arm?v8-M?架构里,ACI?以类似于?“CXn”?或?“VCXn”?的形式呈现:

  • “CX”?前缀常对应整数指令;
  • “VCX”?前缀常对应浮点?(FPU)?或向量?(MVE);
  • n?可取?1,?2,?3?等,表示几个输入寄存器;
  • 后面可能有?“A”?表示累加模式?(accumulate),或?“D”?表示双寄存器/双精度。

image-20250707211752173.png

指令后面依次跟的是

  • Coprocessor #,协处理器编号;
  • Destination,目的寄存器;
  • Source,源寄存器;
  • Immediate data value,一个立即数值,可以说是指令的编号。

工程师只需在编译器中,通过类似?“-mcpu=cortex-m52+cdecp0”?的编译选项告诉工具链:

“哥们,我要用?coprocessor?0?做我的自定义指令啦~”

然后我们就能在?C?里写类似内置函数:

// Example in C, with English comments
uint32_t custom_operation(uint32_t input) 
{
    // Coprocessor number=0, immediate=0, e.g. simple operation
    return __arm_cx1(0, input, 0);
}

这段看似普通的?C?函数,在编译后就会生成一条“CX1”形式的自定义指令,最终交由硬件中的?ACI?通路执行。这就是?ACI?的魅力之处:紧贴标准工具链,却能完成极具针对性的硬件加速。

2.4?zidian登场

了解了?ACI,我们就能理解?zidian?是如何工作的:

  • 在?G32R501?中,zidian?将常见的数学计算?(如?sin、cos、atan、sqrt?甚至一些?CRC/FFT?相关)?封装为“专用指令”,让应用层只需调用?zidian_math.h?提供的函数,即可调用这些定制指令;
  • 原理上,zidian?就是利用了?Cortex-M?架构中的?ACI?能力,结合自家的协处理器号?(coproc?ID),并封装到一系列“__arm_cxX()”等?intrinsics?中。

3.?zidian:Geehy家族的“小宇宙”

3.1?zidian?能加速哪些运算?

针对?G32R501,zidian?提供了典型的整数和浮点加速:

  • 整数?(ICAU):

    1. SIMD?相关运算?(如复数乘法、FFT)
    2. CRC?算法加速
    3. 一些特殊位操作
  • 浮点?(FCAU):

    1. sin,?cos,?atan,?atan2?等三角函数
    2. 平方根?sqrtf32
    3. 除法、复数比值等

在头文件“zidian_math.h”里,你会看到类似这样的函数:

  • __sinpuf32()
  • ?__cos()
  • __atan2puf32()
  • __sqrtf32()
  • __divf32()?

这些看似普通的函数背后,其实就是?zidian?对?ACI?的进一步封装,令开发者无缝使用。

在头文件“zidian_cde.h”里,你会看到G32R501支持的全部指令:

// CX2
#define __tas(x)       __arm_cx2(0x0, x, 0x1)
#define __rstatus(x)   __arm_cx2(0x0, x, 0x2)
#define __wstatus(x)   __arm_cx2(0x0, x, 0x3)
#define __neg(x)       __arm_cx2(0x0, x, 0x4)

// CX2A
#define __crc8l(y, x)      __arm_cx2a(0x0, y, x, 0x8)
#define __crc16p1l(y, x)   __arm_cx2a(0x0, y, x, 0x9)
#define __crc16p2l(y, x)   __arm_cx2a(0x0, y, x, 0xa)
#define __crc32l(y, x)     __arm_cx2a(0x0, y, x, 0xb)
#define __crc8h(y, x)      __arm_cx2a(0x0, y, x, 0xc)
#define __crc16p1h(y, x)   __arm_cx2a(0x0, y, x, 0xd)
#define __crc16p2h(y, x)   __arm_cx2a(0x0, y, x, 0xe)
#define __crc32h(y, x)     __arm_cx2a(0x0, y, x, 0xf)

// CX2DA
#define __tast(y, x)   __arm_cx2da(0x0, y, x, 0x40)

// CX3
#define __sh1add(x1, x2)       __arm_cx3(0x0, x1, x2, 0x8)
#define __sh1addi(x1, x2)      __arm_cx3(0x0, x1, x2, 0x18)
#define __sh1addexh(x1, x2)    __arm_cx3(0x0, x1, x2, 0xa)
#define __sh1addexhi(x1, x2)   __arm_cx3(0x0, x1, x2, 0x1a)
#define __sh1addexl(x1, x2)    __arm_cx3(0x0, x1, x2, 0xb)
#define __sh1addexli(x1, x2)   __arm_cx3(0x0, x1, x2, 0x1b)
#define __sh1sub(x1, x2)       __arm_cx3(0x0, x1, x2, 0xc)
#define __sh1subi(x1, x2)      __arm_cx3(0x0, x1, x2, 0x1c)
#define __sh1subexh(x1, x2)    __arm_cx3(0x0, x1, x2, 0xe)
#define __sh1subexhi(x1, x2)   __arm_cx3(0x0, x1, x2, 0x1e)
#define __sh1subexl(x1, x2)    __arm_cx3(0x0, x1, x2, 0xf)
#define __sh1subexli(x1, x2)   __arm_cx3(0x0, x1, x2, 0x1f)

// CX3D
#define __hstas(x1, x2)   __arm_cx3d(0x0, x1, x2, 0x20)
#define __hstsa(x1, x2)   __arm_cx3d(0x0, x1, x2, 0x21)
#define __lstas(x1, x2)   __arm_cx3d(0x0, x1, x2, 0x22)
#define __lstsa(x1, x2)   __arm_cx3d(0x0, x1, x2, 0x23)
#define __max(x1, x2)     __arm_cx3d(0x0, x1, x2, 0x25)

// CX3DA
#define __hbitsel(y, x1, x2)   __arm_cx3da(0, y, x1, x2, 0x2)

// VCX2
#define __rd_scr(x)    __arm_vcx2_u32(0x0, x, 0x6)
#define __wr_scr(x)    __arm_vcx2_u32(0x0, x, 0x7)

...

举个栗子,对于 sinf函数:

  1. 开启zidian后,将调用相关的 vcx指令;
  2. 关闭zidian时,使用的是arm的 hardfp_sinf函数

image-20250707222441857.png

3.2?使用?zidian?的小贴士

  1. 在编译器启用?ACI:? MDK-ARM:?加入 -mcpu=cortex-m52+cdecp0?? IAR:?在?Extra?Options?里加?--cdecp=0

  2. 在预编译宏中,定义?__ZIDIAN_FCAU__?(若需要对浮点库进行替换)。

    image-20250707212418159.png

  3. 在?C?代码中?#include?"zidian_math.h",然后大胆调用?sinf(),?cosf(),?sqrtf(),?atan2f()?等。

  4. 编译后,一旦检测到宏开关及指令支持,就会将这些函数替换为?zidian?自定义指令的版本。

4.?来跑个分吧:加速前后的对比

接下来就是见证奇迹的时刻啦~咱们设计一个场景,对比在未使用?zidian?和?使用?zidian?两种情况下的耗时表现。

4.1?设计“超级复杂”的测试驱动

所谓“超级复杂”,可以理解为“重复调用多种函数?+?大循环”。当函数被调用几千几万次后,任何一丁点优化都可能带来大量时间差。CRC?和浮点运算?(sinf/cosf/sqrtf/atanf)?都是嵌入式常见场景,此例就足以说明大规模调用带来的性能落差。

在?G32R501?的?ITCM?区,我们放置了代码,并借助?DWT?计数器测量执行周期数。

整体思路包括:

  1. test_data[ ] 用于?CRC32?计算;
  2. float_data[ ] 存放?0?~?(FLOAT_COUNTS-1)?的弧度数;
  3. 在循环中分别调用?dsp_crc32_test()?和?dsp_trig_test(),用?GET_DWT_CYCLE_COUNT()?宏记录执行前后的周期值;
  4. 最后打印计算时间与结果值,以便观测差异。

4.2?参考代码

以下是一整套?zidian_ex1_math.c?文件示例,你可以直接参照使用。

  • 其中文件开头包含了相关头文件?driverlib、zidian_math.h?等;
  • 代码中用到?GET_DWT_CYCLE_COUNT()?这一宏来简化测量流程;
  • dsp_crc32_test()?和?dsp_trig_test()?会根据宏判断走硬件还是纯软件逻辑。

请留意,示例使用了?SECTION_DTCM_DATA,将数组放入?DTCM(ITCM)?中,以减少访问延迟。

实际项目中可根据需要放在合适的内存区域。

//
// Globals
//
SECTION_DTCM_DATA
volatile uint32_t dwtCycleCounts[2];


// 定义测试规模
#define TEST_SIZE        512
#define FLOAT_COUNTS     5000

// CRC32 的常量
#define CRC32_POLY   0x04C11DB7U
#define CRC32_INIT   0xFFFFFFFFU
#define CRC32_XOROUT 0xFFFFFFFFU

// 全局数组 (放在DTCM中)
SECTION_DTCM_DATA
static uint8_t test_data[TEST_SIZE];

SECTION_DTCM_DATA
float float_data[FLOAT_COUNTS];

// 函数声明
uint32_t dsp_crc32_test(const uint8_t *data, uint32_t length);
float dsp_trig_test(void);

//
// Main
//
void example_main(void)
{
    printf("\nG32R501 EVAL zidian test!\n");

#if defined(__zidian_FCAU__)
    printf("zidian : ENABLED (Hardware Acceleration)\n");
#else
    printf("zidian : DISABLED (Pure Software)\n");
#endif

    //
    // 初始化测试数据
    //
    for(int i = 0; i < TEST_SIZE; i++)
    {
        test_data[i] = (uint8_t)i;
    }
    for(int i = 0; i < FLOAT_COUNTS; i++)
    {
        // 用 (i / 180.0f) * PI 模拟不同弧度
        float_data[i] = (float)(i) / 180.0f * 3.1415926f; 
    }

    //
    // 测试
    //

    // 1) 测量 CRC32
    uint32_t crcResult;
    GET_DWT_CYCLE_COUNT(dwtCycleCounts[0], 
        crcResult = dsp_crc32_test(test_data, TEST_SIZE));

    // 2) 测量 三角函数测试
    volatile float trigResult = 0.0f;
    GET_DWT_CYCLE_COUNT(dwtCycleCounts[1],
        trigResult = dsp_trig_test());

    printf("CRC Cycles  : %u\n", dwtCycleCounts[0]);
    printf("Trig Cycles : %u\n", dwtCycleCounts[1]);
    printf("CRC Value   : 0x%X\n", crcResult);
    printf("Trig Value  : %.6f\n", trigResult);


    //
    // Loop
    //
    for(;;)
    {
    }
}
// 硬件加速 还是 软件版本 取决于编译宏
#if defined(__zidian_FCAU__)
//------------------------------
// 硬件版CRC
//------------------------------
uint32_t zidian_crc32(const uint8_t *data, uint32_t length)
{
    uint32_t crc = CRC32_INIT;
    for(uint32_t i = 0; i < length; i++)
    {
        // 专用zidian指令
        crc = __crc32l(crc, data[i]);
    }
    crc ^= CRC32_XOROUT;
    return crc;
}
#else
//------------------------------
// 纯软件版CRC
//------------------------------
uint32_t zidian_crc32(const uint8_t *data, uint32_t length)
{
    uint32_t crc = CRC32_INIT;
    for(uint32_t i = 0; i < length; i++)
    {
        crc ^= ((uint32_t)data[i]) << 24;
        for(int bit = 0; bit < 8; bit++)
        {
            if(crc & 0x80000000U)
                crc = (crc << 1) ^ CRC32_POLY;
            else
                crc <<= 1;
        }
    }
    crc ^= CRC32_XOROUT;
    return crc;
}
#endif

// 浮点测试函数
float dsp_trig_test(void)
{
    volatile float result = 0;
    for(int j = 0; j < FLOAT_COUNTS; j++)
    {
        // 连续调用一下各种函数
        result += sinf(float_data[j]);
        result += cosf(float_data[j]);
        result += sqrtf(float_data[j]);
        result += atanf(float_data[j]);
        // 还来一次 atanf
        result += atanf(float_data[j]);
    }
    return result;
}

4.3?实测结果

将代码放置至ITCM?RAM中:

image-20250707212605731.png

仿真环境下运行代码:

image-20250707212731122.png

在此上面的代码下,我们采集到如下跑分数据(截取自典型测量结果):

image-20250707212849364.png

??未启用?zidian(纯软件模式,zidian?:?DISABLED)

  • CRC?Cycles?:?114234
  • Trig?Cycles?:?2522328
  • CRC?Value?:?0x2F728526
  • Trig?Value?:?46191.281250

??启用?zidian(硬件加速模式,zidian?:?ENABLED):

  • CRC?Cycles?:?12319
  • Trig?Cycles?:?1250023
  • CRC?Value?:?0x2F728526
  • Trig?Value?:?46191.285156

从结果中可以清晰看到,开启?zidian?后的?CRC?计算从?114234?个周期骤降至?12319?个,性能提升近?9?倍;浮点函数测算也从约?252?万周期降低到约?125?万周期,缩短了一半以上的执行时间。? 更值得注意的是,CRC?结果在两种模式下完全一致,Trig?结果也仅在浮点小数位上有细微差异,可见?zidian?并不会破坏运算精度。

综上可知,zidian?的硬件“外挂”确实能大大缓解?CPU?在处理大规模?CRC?和浮点函数时的性能压力,让?G32R501?整体算力上“飞”了一大截。这正是?zidian?的魅力所在:在几乎不改变业务逻辑的情况下,给你的?MCU?算力打了一个“超神?Buff”。

5.?结语:迈向高效与优雅的新世界

通过?ACI?接口,zidian?在?G32R501?上为我们打开了一扇“更高效”的大门。无论是?CRC?还是三角函数,都只要在编译时简单切换一个宏,就能把重复的“负担”挪给硬件,让?MCU?的主吃力大大减轻。更妙的是,这一切并不需要你手动改写繁琐的汇编,也不必妥协精度——堪称“一步到位”的加速方案。

当然,zidian?能做的事情或许不止这些,如果你的项目中大量使用了?DSP?之类的运算,也可以挖掘更多潜力。毕竟,当你尝到硬件加速的甜头后,就会发现那些曾经令人头疼的性能瓶颈,或许只是一段?__crc32l()?或?__arm_cx2(…)?指令的距离。

参考代码:

upload 附件:zidian_ex2_test.rar,请解压至 G32R501_SDK_V1.1.0\driverlib\g32r501\examples\eval\zidian\

参考文档:

  1. arm-custom-instructions-wp.pdf
  2. arm-custom-instructions-without-fragmentation-whitepaper.pdf
  3. AN1132_G32R501 zidian应用笔记 V1.0.pdf

以上便是本次分享的全部内容啦,欢迎各位在评论区留下你的想法吧!

打赏榜单

21小跑堂 打赏了 80.00 元 2025-08-04
理由:恭喜通过原创社!期待您更多的原创作品~~

评论
kai迪皮 2025-7-16 17:25 回复TA
@21小跑堂 :感谢资持,Thanks?(?ω?)? 
21小跑堂 2025-7-16 15:11 回复TA
在G32R501?上使用zidian?,极速飙升MCU的运算能力。作者将原理和使用方式均进行详细介绍,感兴趣的童鞋可以阅读品鉴。 
沙发
kai迪皮|  楼主 | 2025-7-7 22:35 | 只看该作者
板凳
分形梦想家| | 2025-7-15 20:35 | 只看该作者
这文章写得有深度了。
学习了。
相较于协处理器,增加指令集的方式,应该在功耗上面要优势明显吧
地板
kai迪皮|  楼主 | 2025-7-16 12:22 | 只看该作者
分形梦想家 发表于 2025-7-15 20:35
这文章写得有深度了。
学习了。
相较于协处理器,增加指令集的方式,应该在功耗上面要优势明显吧 ...

功耗没有实测,对于实时控制的MCU可能功耗也应该是比较亮眼的
5
cooldog123pp| | 2025-7-24 16:06 | 只看该作者
这文章写得有深度了。
学习了。
实际测试做了哪些,可以多做一些例如功耗什么的
6
丙丁先生| | 2025-7-24 21:29 | 只看该作者
学习了
7
分形梦想家| | 2025-7-31 01:34 | 只看该作者
kai迪皮 发表于 2025-7-16 12:22
功耗没有实测,对于实时控制的MCU可能功耗也应该是比较亮眼的

也是啊!
不能处在深度休眠的模式,再等着唤醒啊
8
分形梦想家| | 2025-7-31 01:36 | 只看该作者
cooldog123pp 发表于 2025-7-24 16:06
这文章写得有深度了。
学习了。
实际测试做了哪些,可以多做一些例如功耗什么的 ...

版主您的回复有点调皮了啊
9
暖心小太阳| | 2025-8-2 21:37 | 只看该作者
这个帖子太有深度了,G32R501 和 Zidian 的结合简直是性能提升的利器,对于我们这些搞嵌入式开发的来说,真是一大福音。
发新帖 本帖赏金 80.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

284

帖子

11

粉丝
什么是混合痔 四不像长什么样 怀孕前壁和后壁有什么区别 井代表什么数字 离婚证是什么颜色
什么是中产阶级 鸟进屋有什么预兆 rbp是什么意思 百合什么时候收获 猝死什么意思
遇上方知有什么意思 云南白药植物长什么样 法国的国鸟是什么 基友什么意思 吃什么可以降血压
健身rm是什么意思 吃生葵花籽有什么好处和坏处吗 为什么不建议做冠脉cta检查 奔跑吧什么时候播出 peek是什么材质
嘴唇舌头发麻什么病兆hcv9jop5ns4r.cn 孕妇c反应蛋白高说明什么zsyouku.com 阿司匹林肠溶片治什么病hcv8jop4ns7r.cn 为什么叫马桶hcv8jop8ns1r.cn hpv感染后有什么症状hcv8jop8ns3r.cn
手代表什么生肖chuanglingweilai.com 孕妇抽筋是什么原因引起的hcv7jop4ns5r.cn 滚刀什么意思hcv8jop9ns6r.cn 哈尔滨有什么特产youbangsi.com 蒲公英什么时候开花hcv9jop8ns2r.cn
伍德氏灯检查什么hcv8jop6ns8r.cn 县长什么级别干部hcv8jop0ns5r.cn 脑干出血是什么原因hcv8jop7ns9r.cn 白细胞正常c反应蛋白高说明什么hcv8jop6ns3r.cn 湿疹要注意什么hcv7jop9ns6r.cn
女人性冷淡吃什么药hcv9jop4ns7r.cn 仁德是什么意思hcv8jop5ns7r.cn 616是什么意思hcv7jop6ns3r.cn 四个月念什么hcv9jop7ns1r.cn 女生为什么有喉结hcv7jop5ns6r.cn
百度