- 2024-11-14
-
回复了主题帖:
[STM32H7R/S]测评 ⑨nano edge ai studio 训练一个模型--下
好文章,等我回去试试这个方法。打个胶先(
- 2024-11-13
-
发表了主题帖:
【读书】《RISC-V开放架构设计之道》3.乘法和除法指令集RV32M
这一篇帖子简单说下RV中的乘除法,RV32M是RISC-V架构中的一个标准扩展指令集,它为RV32I基础整数指令集添加了乘法和除法操作。RV32M扩展包含了一系列用于执行乘法、除法和相关运算的指令,这些指令对于执行算术密集型任务非常有用。乘法和除法指令集(RV32M)作为RV32I的扩展指令集,指令相对较少,如图:
指令格式
RV32M指令通常使用R型(Register)格式,该格式包含三个寄存器操作数(rs1、rs2和rd),以及一个操作码,用于指示要执行的具体乘法或除法操作。
这个用法我推荐看老狼的帖子:https://www.cnblogs.com/mikewolf2002/p/9872287.html写的更详细,我这里不再赘述
指令列表
乘法指令
mul rd, rs1, rs2 ,用法是寄存器 [rs2]乘以寄存器 [rs1],乘积写入寄存器x[rd]中。
乘法指令有:
mul
:无符号乘法,结果为32位。
mulh
:无符号乘法,结果的高32位。
mulhsu
:一个操作数为无符号,另一个为有符号的乘法,结果的高32位。
mulhu
:两个操作数均为无符号的乘法,结果的高32位。
mulhusu
:32位有符号-无符号乘法,结果为32位。这个比较特殊: x[rs2]为无符号数,其他和mulhu相同
除法指令
div rd, rs1, rs2 ,用法是寄存器 x[rs1]除以寄存器 x[rs2],向零舍入,将这些数视为二进制补码,把商写入 x[rd]。
除法指令有:
div
:无符号除法,结果为32位。
divu
:有符号除法,结果为32位。
rem
:无符号除法的余数,结果为32位。
remu
:有符号除法的余数,结果为32位。
结语
和ARM不同的是,ARM长久以来只有乘法指令,除法指令到2005年才被添加。乘法指令用于执行快速的硬件乘法操作,这对于数字信号处理、图形处理和其他需要大量乘法的应用至关重要。况且RV32M作为一个扩展指令,可以选择性的添加到RV32I中,这意味着它可以在不需要乘除法操作的场景中省略,以节省硬件资源。
- 2024-11-10
-
回复了主题帖:
[STM32H7R/S]测评 ⑧nano edge ai studio 训练一个模型--上
大佬有检查过MAKEFILE没
- 2024-11-08
-
发表了主题帖:
【读书】《RISC-V开放架构设计之道》2.基础指令集RV32I
本帖最后由 电子烂人 于 2024-11-9 16:14 编辑
RISC-V可以根据不同的应用需求,通过模块化的方式组合不同的指令集扩展。RISC-V架构的主要类别包括以下几种:
基础指令集(Base ISA):
RV32I:32位基础整数指令集。
RV64I:64位基础整数指令集。
RV128I:128位基础整数指令集(目前还在开发中)。
标准扩展(Standard Extensions):
M:乘法和除法扩展。
A:原子操作扩展。
F:单精度浮点扩展。
D:双精度浮点扩展。
Q:四精度浮点扩展(目前还在提议阶段)。
C:压缩指令扩展,旨在减少代码大小。
V:向量扩展,用于高性能计算。
特权架构扩展(Privileged Architecture Extensions):
Machine Level(M-Mode):用于运行操作系统内核和 hypervisor。
Supervisor Level(S-Mode):用于运行操作系统。
User Level(U-Mode):用于运行用户应用程序。
定制化扩展(Custom Extensions):
用户可以根据自己的需求定义定制化的指令集扩展,通常以“X”开头。
这里我们先详细的讲一下最基础的两种指令集之一:RV32I
Rv32I 的设计哲学在于“精简”,只需要处理最核心的几个功能,设计目标是简单、高效、模块化,易于理解和实现。它提供了足够的指令来执行通用计算任务,同时保持了指令集的简洁性。
RV32I指令集支持以下几种指令格式:
R型(Register):用于寄存器到寄存器的操作。
I型(Immediate):用于立即数与寄存器之间的操作。
S型(Store):用于将寄存器的值存储到内存中。
B型(Branch):用于条件分支。
U型(Upper immediate):用于加载大立即数。
J型(Jump):用于无条件跳转。
寄存器
RV32I定义了32个通用寄存器,每个寄存器宽度为32位。其中,寄存器x0被硬编码为0,通常用于表示常量0。
指令集
以下是RV32I指令集的一些主要指令:
这个代码卡的阅读顺序是每一段英文的开头字母,合成为一段具体指令
Load和Store指令
lb
(load byte):从内存中加载一个字节到寄存器,符号扩展到32位。
lh
(load half):从内存中加载一个半字(16位)到寄存器,符号扩展到32位。
lw
(load word):从内存中加载一个字(32位)到寄存器。
lbu
(load byte unsigned):从内存中加载一个字节到寄存器,零扩展到32位。
lhu
(load half unsigned):从内存中加载一个半字到寄存器,零扩展到32位。
算术和逻辑指令
包含简单的加减和一些逻辑运算,是构成计算的最基础部分。这些指令也有对应的立即数操作的。
算数指令:
add
:加法。
sub
:减法。
逻辑指令:
xor
:异或。
or
:或。
and
:与。
sll
(shift left logical):逻辑左移。
srl
(shift right logical):逻辑右移。
sra
(shift right arithmetic):算术右移。
立即数操作:
立即数是一个固定值,通常是一个小的整数,它作为指令的一部分直接编码在指令中,比如:
addi rd, rs1, imm
这条指令代表寄存器rs1的值与立即数imm相加(运算),结果存储在寄存器rd中。
addi
:立即数加法。
xori
:立即数异或。
ori
:立即数或。
andi
:立即数与。
slli
:立即数逻辑左移。
srli
:立即数逻辑右移。
srai
:立即数算术右移。
分支指令
RV32I可以实现简单的比较操作:
beq
:相等则分支。
bne
:不等则分支。
blt
:小于则分支。
bge
:大于或等于则分支。
bltu
:无符号小于则分支。
bgeu
:无符号大于或等于则分支。
跳转和链接指令
RV32I不支持复杂的过程调用,故有跳转链接
jal
(jump and link):无条件跳转,并将返回地址存储在寄存器x1(ra)中。
jalr
(jump and link register):跳转指令的寄存器版本,通过寄存器加立即数偏移进行跳转,并将返回地址存储在寄存器x1(ra)中。
系统指令
包含ecall 、ebreak和 fence、fence.i四个指令
ecall
:环境调用,用于触发操作系统服务。
ebreak
:环境断点,用于触发调试器。
fence
对外部可见的设备I/O和访问存储请求进行定序。
fence.i
用于同步指令和数据流
- 2024-11-07
-
回复了主题帖:
[STM32H7R/S]测评 ⑦制作一个NANO EDGE AI STUDIO采集数据使用的Data Logger
不爱胡萝卜的仓鼠 发表于 2024-11-7 14:04
这个解析结果肯定有问题,他这里都打感叹号了。
首先得确定一下你一共采样了几轮,还有每轮采样几次? ...
这边我是用的datalogger的源代码修改的,因为涉及到多个传感器,所以把其他的部分全都删掉;只留下了加速度计的一轴数据。
我猜测也是修改的时候改的数据格式有问题,采样的图窗只有前几段的数据,后面的数据就看不见了。等我回去看一下当时具体的采样速度。
-
回复了主题帖:
[STM32H7R/S]测评 ⑦制作一个NANO EDGE AI STUDIO采集数据使用的Data Logger
第一步配置的是一轴,我做的电机监测,当震动传感器用,故也不需要太多
当时的截图:
感觉像是数据收发不正常,只收到了一点点,然后就扔进数据处理了
-
回复了主题帖:
[STM32H7R/S]测评 ⑦制作一个NANO EDGE AI STUDIO采集数据使用的Data Logger
请问下,这个用的是三轴的数据吗,我用的一轴加速度但是软件采集数据不正确
- 2024-11-03
-
回复了主题帖:
【读书】《RISC-V开放架构设计之道》1.新生儿RISC-V
秦天qintian0303 发表于 2024-11-2 23:18
不算新生儿了,实物都出来了,应该属于幼年时代
倒也是,不过这本书是从他怎么出生来描述的
- 2024-11-02
-
发表了主题帖:
【读书】《RISC-V开放架构设计之道》1.新生儿RISC-V
本帖最后由 电子烂人 于 2024-11-2 11:45 编辑
每当有一个新概念产生时,我们会习惯性的问:催生他的目的是什么?
对于RISC-V来说,他的主要目的在于:替代现有的ARM架构和X86架构
当然,X86架构是CISC(复杂指令集),我们首先和同为RISC(精简指令集)的ARM架构做对比
ARM好用吗?答案是肯定的。现如今一个房间里的ARM设备极大可能要比X86、8051等架构的设备要多许多,况且ARM的多样化也是其他几种类型的几倍。
但是,还不够好。
(图源:网络)
ARM架构由ARM公司收取专利费,RISC-V架构免费使用,这是这个新架构最大的一个特点。
不过只有免费还不够,工程师们的初衷在于重新设计一种更好用一些的架构,故RISC-V开源了所有架构底层的代码,支持扩展修改,并如同LINUX一样由基金会管理
(图源:网络)
本书的作者将RISC-V的设计逻辑分为了五种性质,所有添加的功能和优化全部围绕这五种性质中的一个或者几个来做
简介性:ISC-V强调简单、高效的指令集设计。这种简洁性不仅加快了处理速度,并节省了功耗,还简化了架构,消除了任何不必要的复杂性。
例如,RISC-V的基础指令集包括基本的加载、存储、算术和逻辑运算指令这些处理器执行的最基本操作。
具体可以看RISC-V指令参考卡:RISCVGreenCardv1.xlsx (cam.ac.uk)
模块化:不同于传统的增量型ISA,RISC-V采用模块化的指令集架构(ISA), RISC-V架构采用模块化设计,包括一个强制的基本ISA(指令集架构)和许多可选的ISA扩展,可以随着用处来删减和添加指令集。这种设计允许开发者根据需要自定义指令集,以满足不同应用场景的需求。例如,可以根据具体的应用需求添加浮点运算、向量运算或加密运算等扩展指令集。编者以ARM中的指令 举例,所有指令要兼容之前的版本,产生了很多冗余,在RISC-V中可以删减不用的指令,更加简单
高效性能: RISC-V架构采用简单而高效的指令集,使得处理器在执行指令时具有更快的速度和更低的功耗。同时,RISC-V还支持多种优化技术,如流水线、超线程等,进一步提高了处理器的性能
安全性:RISC-V支持多种安全特性,包括但不限于MultiZone和,这部分可以和ARM的TrustZone做对比
图:Arm TrustZone与RISC-V MultiZone都基于隔离安全机制(来源:Hex Five)
可拓展性:RISC-V的可扩展性体现在其支持多种位宽的指令集,包括32位、64位和128位。这种设计允许用户根据不同的寄存器位宽和地址需求选择合适的指令集。这种灵活性使得RISC-V能够广泛应用于各种应用场景,从资源受限的嵌入式系统到需要高性能计算能力的复杂系统。
这本书与其说是修习武功的全集,不如说是修习目录。指令集 看上去没有太多难处,但是还需要上手才能了解具体的部分
-
回复了主题帖:
《RISC-V开放架构设计之道》启程:理念、指令与实践初探【学习笔记1】
写的好全面,点个赞
- 2024-10-08
-
回复了主题帖:
【STM32H7S78-DK】⑦连接WIFI获取时间(基于ESP8266)
cc1989summer 发表于 2024-10-7 13:15
谢谢!我帖子里附了B-U585I-IOT02A的WIFI例程(mx_wifi),需要移植到STM32H7S78-DK
我看了一下,目前貌似还没有h7s上的threadx移植好的历程,等官方出吧
- 2024-10-07
-
回复了主题帖:
【STM32H7S78-DK】⑦连接WIFI获取时间(基于ESP8266)
这个模块的例程在H573上有(例程名:NX_network_wifi),主控和模块用SPI通信,而且是threadx的操作系统,写的比较麻烦
- 2024-09-22
-
回复了主题帖:
【STM32H7S78-DK】测评+ToucGFX之FATFS文件系统移植
大佬牛皮,学习了
- 2024-09-20
-
回复了主题帖:
黎巴嫩BB机怎么炸的
风尘流沙 发表于 2024-9-19 14:40
以后见到拿iphone或开特斯拉的人,最好躲远点,妈呀,那可都是移动炸弹。
那这么说好多车也别开了,MD一辆车里的当量够浩克去见阎王
感觉这群人在做蠢事,搞得现在谁敢用电子产品
附一张群里看到的图
- 2024-09-19
-
回复了主题帖:
【读书】《RISC-V开放架构设计之道》:0.阅读计划
freebsder 发表于 2024-9-19 13:48
一共才100多页啊
挺薄的,毕竟RISC-V才出也没几年
-
回复了主题帖:
黎巴嫩BB机怎么炸的
hellokitty_bean 发表于 2024-9-19 19:54
黎巴嫩还在用BB机?????刚看到这个新闻时有点懵。。。
以改装后,黎巴嫩人还买它的???
国外信号不好,错过电话很正常,所以还在用
-
发表了主题帖:
【读书】《RISC-V开放架构设计之道》:0.阅读计划
《RISC-V开放架构设计之道》是一本RISC-V架构设计的专业书籍,内容较为深入和复杂。
对目录进行一个简单的整理:
目前计划实际有三周的时间阅读,以下是一个拟定的比较详细的阅读安排:
第一周:基础了解与初步探索
第1-2天:阅读第1章,了解RISC-V的基本概念和发展历程。
第3-5天:阅读第2章,学习RISC-V的指令集架构特点。
第6-7天:阅读第3章,了解RISC-V的处理器核心设计。
第二周:深入研究与理解
第8-9天:阅读第4章,学习RISC-V的内存管理。
第10-11天:阅读第5章,研究RISC-V的异常和中断处理。
第12-13天:阅读第6章,掌握RISC-V的扩展指令集。
第14天:复习前两周所学内容,整理笔记,巩固知识点。
第三周:实践应用与总结
第15-16天:阅读第7章,了解RISC-V的生态系统和应用案例。
第17-18天:阅读第8章,学习RISC-V的编程模型和软件开发。
第19天:阅读第9章,展望RISC-V的未来发展趋势。
第20-21天:总结全书内容,整理学习心得,针对薄弱环节进行复习。
-
发表了主题帖:
黎巴嫩BB机怎么炸的
9月17日下午3点30分,黎巴嫩境内发生了震惊世界的手持寻呼机爆炸事件,造成9人遇难,2800人受伤,其中200人伤情危重。这起事件迅速引发全球关注,黎巴嫩公共卫生部长的声明令公众震惊,尤其是当《纽约时报》披露了更加惊人的细节后。根据该报导,以色列竟然通过将炸药秘密植入黎巴嫩真主党武装购买的寻呼机中,从而实施了这次攻击。(来自搜狐)
这次黎巴嫩恐怖袭击有数千台BB机被遥控引爆,不太理解是怎么炸掉的?直接引爆电池也没这么大威力,消费电子这么小怎么塞入的炸弹?
另外这款BB机卖了这么多地方,怎么就黎巴嫩炸了??是用联网控制的吗??
- 2024-09-13
-
回复了主题帖:
G431驱动板链接不上,怀疑是芯片烧了
damiaa 发表于 2024-9-12 17:00
检查一下电压,然后观察一下是哪些芯片发热。
或者断开其他电路或者电机之类的东西再观察。
观察一下 ...
之前可以正常转的,后来就只能启动的时候动一下,感觉像是电流不够给憋停了
后面就链接不上了
-
回复了主题帖:
G431驱动板链接不上,怀疑是芯片烧了
wangerxian 发表于 2024-9-12 16:13
之前是正常的吗?这种电机驱动板一般都有保护的吧。
按理是有的,但是主控烫的一批,感觉不对