这是描述信息

智能家居matter模块乐鑫科技wifi ble芯片Secure Boot方案

智能家居matter模块乐鑫科技wifi ble芯片Secure Boot方案

智能家居matter模块乐鑫科技wifi ble芯片Secure Boot方案

智能家居matter模块乐鑫科技wifi ble芯片Secure Boot方案

智能家居matter模块乐鑫科技wifi

智能家居matter模块乐鑫科技wifi ble芯片Secure Boot方案,Secure Boot 方案用于实现固件 (包括 Bootloader 固件app 固件)数据的合法性保护,它使用RSA数字签名算法,在加载运行新固件数据前,对固件数据附加的签名进行校验,从而验证待加载运行固件的数据是否合法。智能家居matter模块乐鑫科技wifi ble芯片启用 Secure Boot方案后,设备端将仅加载运行指定私钥签名授权的固件。


Secure Boot的中文释义为“安全引导”或“安全启动”,因此,在介绍Secure Boot方案的实现原理前,我们来简单复习下 ESP32-C3 的启动引导流程,如图 13-11 所示。

ROM Boot-->Bootloader-->app

图13-11ESP32-C3启动引导流程


设备端上电后,系统首先运行 ROM Boot,然后从 ROM Boot 跳转到 Bootloader,后在Bootloader 运行结束后跳转到 app 固件。其中,ROM Boot是固化在片内 ROM 中的一段可执行程序,它不可被更改。因此,Secure Boot 方案需要保护的数据是可能发生改变的 Bootloader固件和 app 固件。智能家居matter模块乐鑫科技wifi ble芯片更改固件数据的方式有两种:一种是物理烧录,即通过烧录工具,将新的Bootloader 固件和 app 固件烧录到设备端的 Flash 中;另一种 OTA 升级,这种方式仅能更新app 固件,不能更新 Bootloader 固件。


那么,如何保证无论从哪种途径发送到设备端上的固件数据都是合法的呢? 带着疑问,我们将在下面两节分别介绍智能家居matter模块乐鑫科技wifi ble芯片Secure Boot 的两种工作模式即软 Secure Boot和硬 SecureBoot。
注意:Secure Boot 方案有两个版本,即 v1 和 v2,ESP32-C3 仅支持 v2,因此这里介绍的内容主要适用于 Secure Boot v2。
软 Secure Boot 介绍
Software Secure Boot 即软件 Secure Boot,简称软 Secure Boot,是一种无硬件 (主要是 eFuse)参与校验的 Secure Boot 方案。
在启用软 Secure Boot 方案前,需要生成 RSA 签名私钥,运行下述命令可生成私钥:
$ espsecure.py generate_signing_key --version 2 secure_boot_signing_key.pem


生成的私钥数据将保存在 secure boot signing key.pem 文件内。
启用软 Secure Boot 方案的方法很简单,在menuconfig 中,选择 Require signed app images选项,然后编译烧录固件即可。ESP32-C3 使用软 Secure Boot 的方法如图 13-12 所示。


[*]Require signed app images
APP Signing Scheme (RSA)-->
[]Verify app signature on update
[*]Enable hardware Secure Boot in bootloader (READ DOCS FIRST)
[]Sign binaries during build
(secure_boot_signing_key.pm) Secure boot private signing key
[]Enable flash encryption on boot (READ DOCS FIRST)

图13-12 ESP32-C3 使用软 Secure Boot 的方法


启用软 Secure Boot方案后,在编译固件时,将在生成的app 固件 (下述称为 origin_app)中包含公钥,该公钥将用于验证OTA升级发送的新固件 new_app 的合法性。智能家居matter模块乐鑫科技wifi ble芯片当执行 OTA 升级时,接收完固件,调用 esp_ota_end()或者 esp_ota set_bootpartition()函数时,其内部将自动使用 origin_app 中的公校验 new_app 中附带的数字签名。


启用软 Secure Boot 方案后,通过 OTA 升级方式发送到设备端的 app 固件必须使用私钥进行签名,有两种方式可以用于签名:
(1) 配置选项 sign binaries during build,并指明私钥文件的目录位置,在编译时即可自动对 app 固件进行签名。
(2)使用下面的命令可对 app 固件进行签名:
$ espsecure.py sign data --version 2 --keyfile PRIVATE_SIGNING_KEY BINARY_FILE上述命令将直接修改当前文件,并在当前文件中添加校验信息,使用--output 选项可以指定添加签名后的文件名称。智能家居matter模块乐鑫科技wifi ble芯片使用命令对固件进行签名的方法允许将签名的私钥存储在远程服务器上,而不是存储在编译固件的主机上,因此对于设备量产后实现批量签名更加方便。


启用软 Secure Boot 方案后,对 app 固件的签名将附加在 app 固件后面的签名块中,签名块中包含了对固件的签名和验证签名需要的其他数据。对于 ESP32-C3,在使用软 Secure Boot 时仅第一个签名块有效;在使用硬 Secure Boot 时多允许附加三个签名块,每个签名块都可以使用不同的私钥对其进行签名,只要其中一个签名有效则校验通过。ESP32-C3 签名后的 app固件数据格式如图 13-14 所示。

固件数据    签名块1        签名块2        签名块3

图 13-14 ESP32-C3 签名后的 app 固件数据格式


在软 Secure Boot 方案中,用于验证签名的公钥被编译在当前运行的 app 固件中,完全不需要用户管理它,设备端将自动管理公钥。如果想要查看公钥的具体内容,可以使用下述命令手动地导出私钥生成的公钥:
$ espsecure.py extract_public_key --version 2 --keyfile secure_boot_signing_key.pem pub_key .pem

其中,secure_boot_signing_key·pem为私钥,pub key.pem 为私钥生成的公钥。
从软 Secure Boot 方案的实现原理不难看出,软 Secure Boot 方案通过 origin app 校验 OTA升级发送的 new_apP,从而确保 new app 的合法性。智能家居matter模块乐鑫科技wifi ble芯片但是攻击者可能通过物理烧录的方式将未经签名授权的 Bootloader 固件和 origin app 固件烧录到设备端,软 Secure Boot方案无法应对这种物理攻击。因此,在确保设备端在不会受到物理攻击的场景中可以使用软 SecureBoot 方案。接下来,让我们探讨硬 Secure Boot 方案是如何应对物理攻击的。


硬 Secure Boot 介绍

Hardware Secure Boot即硬件 Secure Boot,简称硬Secure Boot,是一种添加了硬件校验的SecureBoot 方案。硬Secure Boot 方案中使用 eFuse 中存储的数据来校验固件数据的合法性。

硬Secure Boot 方案包含了 中所述的软 Secure Boot 方案的所有功能,在软 Secure Boot方案的基础上,硬 Secure Boot 方案可提供更多的校验,包括对烧录的 Bootloader 固件和origin app 固件的签名校验。介绍的生成私-公对的方法、对 app 固件签名的方法和 app 固件签名的格式同样适用于硬 Secure Boot 方案,这里不再重复介绍。


启用硬 Secure Boot 方案后,除了需要对 app 固件进行签名,还需要对使用的 Bootloader 固件进行签名,其签名的方法和格式与 app 固件签名的方法和格式一致。但是,启用硬 Secure Boot方案后,若要对 Bootloader 固件重新编译并签名,智能家居matter模块乐鑫科技wifi ble芯片则需要单独运行命令 idf.py bootloader,并运行命令 idf.py -p PORT bootloader-flash 烧录 Bootloader 固件,运行命令idf.pyflash 将仅烧录签名后的 app 固件和分区表,不再自动烧录 Bootloader 固件。我们可以按照下述步骤使用硬 Secure Boot 方案:


(1)配置编译选项。在menuconfig --> Security features 菜单中,选择Enable hardwareSecure Boot 选项。
(2)如果需要在编译时对固件进行签名,则需要指定签名的私钥。如图 13-15,在 menuconfig -->Security features 菜单中,通过选项 Secure Boot private key 可以指定签名需要的私钥文件。若还未生成私钥,请参考 13.4.3 中生成私的方法导出私钥。此外,我们也可以参考 13.4.3 中介绍的内容,通过命令 espsecure.py 对固件进行签名。
(3)先运行命令 idf.py bootloader 编译 Bootloader 固件,再运行命令 idf.py -p PORTbootloader-flash 烧录 Bootloader 固件。
(4)运行命令 idf.py flash monitor 烧录 app 固件和分区表。
(5)设备启动后将运行上述编译的 Bootloader 固件,自动地将 eFuse 中的 SECURE BOOT EN标志位置位,永久使用硬 Secure Boot 方案,并将 Bootloader 固件签名块中附带的公钥的摘要写入 eFuse 的 BLOCK KEY。编译时使用硬 Secure Boot 方案的方法如图 13-15 所示。


App sionino scheme (RSA)--->
[*]Enable hardware Secure Boot in bootloader (READ DOCS FIRST)
Select secure boot version (Enable Secure Boot version 2)-->
[*]Sign binaries during build
(secure_boot_signing_key.pem) Secure boot private signing key
[*]Allow potentially insecure options
[] Enable flash encrytion on boot (READ DOCS FIRST)
Potentially insecure option --->

图 13-15 编译时使用硬 Secure Boot 方案的方法


注意:1、使用硬 Secure Boot 方案后,请务必保存好签名的私钥文件,否则可能导致无法将更改后的 Bootloader固件和 app 固件数据发送到设备端;2、使用硬 Secure Boot方案后,Bootloader固件的体积将增大,因此可能需要调整分区表或者减小 Bootloader 固件的大小,请参考中的描述进行调整;3、如果在 Bootloader 固件中添加了较多的内容,在使用硬 Secure Boot 方案后,Bootloader 固件大不能大于 0x10000。


提示:硬 Secure Boot 方案在 eFuse 中保存的是公的 SHA256 摘要,而不是公钥本身。因为公钥本身的数据很多,eFuse 的存储空间是受限的。
使用硬 Secure Boot 方案后,设备端在后续更新 Bootloader 固件或者 app 固件时将按照下述步骤执行校验。


(1)公校验。设备端上电后,ROM Boot 检测 eFuse,若使用了硬 eure Boot 方案,则读Bootloader 固件中的公钥,对比该公钥摘要与存储在 eFuse 中的公摘要是否相等。若不相副代表公钥已被篡改或损坏,引导终止:否则,认为 Bootloader 固件中的公钥是正确的,可继续向下执行。
(2)验证 Bootloader 根据的签名。ROM Bot 使用公校验 Bootloader 固件的签名,若校验失败则引导终止;否则继续向下执行。
(3)验证待加载 origin_app 的签名。Bootloader 固件使用公验证origin app 的签名若校验失败则引导终止。
(4)当设备执行端OTA升级时,将执行与软 Secure Boot 方案相同的过程,由origin_app验证 new app 的签名。


注意:详细的签名校验过程除校验签名信息外,还会校验固件的摘要等信息。硬Secure Boot 方案从 ROM Boot 开始签名校验,分层次地校验 Bootloader 固件、origin_app固件和new_app 固件的签名,智能家居matter模块乐鑫科技wifi ble芯片从而创建了 ROM boot --> bootloader --> origin_app --> new_app 的完整可信链。通过上述硬 Secure Boot 方案进行签名校验的基本流程,不难看出软 Secure Boot 方案与硬 Secure Boot 方案的区别。


硬Secure Boot 方案在从 ROM Boot 到执行 origin app 的过程中,增加了一些校验步骤因此在 Bootloader 固件代码中需要执行的步骤更多,设备启动时间将变长,并且 Bootloade固件大小将略微增加。在设备端需要快速启动,或者 Bootloader 固件需要足够小的应用场景,可以尝试使用软 Secure Boot 方案。


使用硬 Secure Boot 方案后,设备端的使用将有一些限制,主要包括:
1、设备端只能运行经过签名的 Bootloader 固件和 app 固件,因此烧录更改后的 Bootloader 固件和 app 固件,或者通过 OTA 升级更新 app 固件均需要使用对应的私钥进行签名。
2、为了加强系统的安全性,默认情况下在使用硬 Secure Boot 方案后将关闭JTAG 调试功能禁止 eFuse 读保护并注销掉 eFuse 中未使用的签名槽。在测试开发阶段,如果需要保留这些功能,智能家居matter模块乐鑫科技wifi ble芯片则可通过menuconfig -->Security features --> Potentially insecure options菜单保留这些功能。在量产时,应当默认关闭这些功能,增强设备的安全性。
3、启用硬 Secure Boot 方案后,设备端的 UART 下载固件的功能将发生变化,其具体影响取决于menuconfig --> security features --> UART ROM download mode 选项的值UART ROM download mode 选项的值有三种。


我们在这里介绍了硬 Secure Boot 方案基本原理和常见的使用方法,硬 Secure Boot 方案还有很多高级的用法,如使用多个签名或者注销失效的公钥。

uA级别智能门锁低功耗雷达模块让门锁更加智能省电节约功耗,指纹门锁并不是什么新鲜事,我相信每个人都很熟悉。随着近年来智能家居的逐步普及,指纹门锁也进入了成千上万的家庭。今天的功耗雷达模块指纹门锁不仅消除了繁琐的钥匙,而且还提供了各种智能功能,uA级别智能门锁低功耗雷达模块用在智能门锁上,可以实现门锁的智能感应屏幕,使电池寿命延长3-5倍,如与其他智能家居连接,成为智能场景的开关。所以今天的指纹门锁更被称为智能门锁。 今天,让我们来谈谈功耗雷达模块智能门锁的安全性。希望能让更多想知道智能门锁的朋友认识下。 指纹识别是智能门锁的核心 指纹识别技术在我们的智能手机上随处可见。从以前的实体指纹识别到屏幕下的指纹识别,可以说指纹识别技术已经相当成熟。指纹识别可以说是整个uA级低功耗雷达模块智能门锁的核心。 目前主要有三种常见的指纹识别方法,即光学指纹识别、半导体指纹识别和超声指纹识别。 光学指纹识别 让我们先谈谈光学指纹识别的原理实际上是光的反射。我们都知道指纹本身是不均匀的。当光照射到我们的指纹上时,它会反射,光接收器可以通过接收反射的光来绘制我们的指纹。就像激光雷达测绘一样。 光学指纹识别通常出现在打卡机上,手机上的屏幕指纹识别技术也使用光学指纹识别。今天的光学指纹识别已经达到了非常快的识别速度。 然而,光学指纹识别有一个缺点,即硬件上的活体识别无法实现,容易被指模破解。通常,活体识别是通过软件算法进行的。如果算法处理不当,很容易翻车。 此外,光学指纹识别也容易受到液体的影响,湿手解锁的成功率也会下降。 超声指纹识别 超声指纹识别也被称为射频指纹识别,其原理与光学类型相似,但超声波使用声波反射,实际上是声纳的缩小版本。因为使用声波,不要担心水折射会降低识别率,所以超声指纹识别可以湿手解锁。然而,超声指纹识别在防破解方面与光学类型一样,不能实现硬件,可以被指模破解,活体识别仍然依赖于算法。 半导体指纹识别 半导体指纹识别主要采用电容、电场(即我们所说的电感)、温度和压力原理来实现指纹图像的收集。当用户将手指放在前面时,皮肤形成电容阵列的极板,电容阵列的背面是绝缘极板。由于不同区域指纹的脊柱与谷物之间的距离也不同,因此每个单元的电容量随之变化,从而获得指纹图像。半导体指纹识别具有价格低、体积小、识别率高的优点,因此大多数uA级低功耗雷达模块智能门锁都采用了这种方案。半导体指纹识别的另一个功能是活体识别。传统的硅胶指模无法破解。 当然,这并不意味着半导体可以百分识别活体。所谓的半导体指纹识别活体检测不使用指纹活体体征。本质上,它取决于皮肤的材料特性,这意味着虽然传统的硅胶指模无法破解。 一般来说,无论哪种指纹识别,都有可能被破解,只是说破解的水平。然而,今天的指纹识别,无论是硬件生活识别还是算法生活识别,都相对成熟,很难破解。毕竟,都可以通过支付级别的认证,大大保证安全。 目前,市场上大多数智能门锁仍将保留钥匙孔。除了指纹解锁外,用户还可以用传统钥匙开门。留下钥匙孔的主要目的是在指纹识别故障或智能门锁耗尽时仍有开门的方法。但由于有钥匙孔,它表明它可以通过技术手段解锁。 目前市场上的锁等级可分为A、B、C三个等级,这三个等级主要是通过防暴开锁和防技术开锁的程度来区分的。A级锁要求技术解锁时间不少于1分钟,B级锁要求不少于5分钟。即使是高级别的C级锁也只要求技术解锁时间不少于10分钟。 也就是说,现在市场上大多数门锁,无论是什么级别,在专业的解锁大师面前都糊,只不过是时间长短。 安全是重要的,是否安全增加了人们对uA级别低功耗雷达模块智能门锁安全的担忧。事实上,现在到处都是摄像头,强大的人脸识别,以及移动支付的出现,使家庭现金减少,所有这些都使得入室盗窃的成本急剧上升,近年来各省市的入室盗窃几乎呈悬崖状下降。 换句话说,无论锁有多安全,无论锁有多难打开,都可能比在门口安装摄像头更具威慑力。 因此,担心uA级别低功耗雷达模块智能门锁是否不安全可能意义不大。毕竟,家里的防盗锁可能不安全。我们应该更加关注门锁能给我们带来多少便利。 我们要考虑的是智能门锁的兼容性和通用性。毕竟,智能门锁近年来才流行起来。大多数人在后期将普通机械门锁升级为智能门锁。因此,智能门锁能否与原门兼容是非常重要的。如果不兼容,发现无法安装是一件非常麻烦的事情。 uA级别低功耗雷达模块智能门锁主要是为了避免带钥匙的麻烦。因此,智能门锁的便利性尤为重要。便利性主要体现在指纹的识别率上。手指受伤导致指纹磨损或老年人指纹较浅。智能门锁能否识别是非常重要的。 当然,如果指纹真的失效,是否有其他解锁方案,如密码解锁或NFC解锁。还需要注意密码解锁是否有虚假密码等防窥镜措施。 当然,智能门锁的耐久性也是一个需要特别注意的地方。uA级别低功耗雷达模块智能门锁主要依靠内部电池供电,这就要求智能门锁的耐久性尽可能好,否则经常充电或更换电池会非常麻烦。
微波雷达传感器雷达感应浴室镜上的应用,如今,家用电器的智能化已成为一种常态,越来越多的人开始在自己的浴室里安装智能浴室镜。但是还有很多人对智能浴镜的理解还不够深入,今天就来说说这个话题。 什么是智能浴室镜?智慧型浴室镜,顾名思义,就是卫浴镜子智能化升级,入门级产品基本具备了彩灯和镜面触摸功能,更高档次的产品安装有微波雷达传感器智能感应,当感应到有人接近到一定距离即可开启亮灯或者亮屏操作,也可三色无极调,智能除雾,语音交互,日程安排备忘,甚至在镜子上看电视,听音乐,气象预报,问题查询,智能控制,健康管理等。 智能化雷达感应浴室镜与普通镜的区别,为什么要选TA?,就功能而言,普通浴镜价格用它没有什么压力!而且雷达感应智能浴镜会让人犹豫不决是否“值得一看”。就功能和应用而言,普通浴镜功能单一,而微波雷达传感器智能浴室镜功能创新:镜子灯光色温和亮度可以自由调节,镜面还可以湿手触控,智能除雾,既环保又健康! 尽管智能浴镜比较新颖,但功能丰富,体验感更好,特别是入门级的智能浴镜,具有基础智能化功能,真的适合想体验下智能化的小伙伴们。 给卫生间安装微波雷达传感器浴室镜安装注意什么? ①确定智能浴室镜的安装位置,因为是安装时在墙壁上打孔,一旦安装后一般无法移动位置。 ②在选购雷达感应智能浴室镜时,根据安装位置确定镜子的形状和尺寸。 ③确定智能浴镜的安装位置后,在布线时为镜子预留好电源线。 ④确定微波雷达传感器智能浴镜的安装高度,一般智能浴镜的标准安装高度约85cm(从地砖到镜子底),具体安装高度要根据家庭成员的身高及使用习惯来决定。 ⑤镜面遇到污渍,可用酒精或30%清洁稀释液擦洗,平时可用干毛巾养护,注意多通风。
冰箱屏幕唤醒微波雷达传感器屏幕唤醒性能强悍智能感应,随着年轻一代消费观念的转变,冰箱作为厨房和客厅的核心家用电器之一,也升级为健康、智能、高端的形象。在新产品发布会上,推出了大屏幕的冰箱,不仅屏幕优秀,而且微波雷达传感器屏幕唤醒性能强大。 大屏智能互联,听歌看剧购物新体验 冰箱植入冰箱屏幕唤醒微波雷达传感器触摸屏,重新定义了冰箱的核心价值。除了冰箱的保鲜功能外,该显示屏还集控制中心、娱乐中心和购物中心于一体,让您在无聊的烹饪过程中不会落后于听歌、看剧和购物。新的烹饪体验是前所未有的。 不仅如此,21.5英寸的屏幕也是整个房子智能互联的互动入口。未来的家将是一个充满屏幕的家。冰箱可以通过微波雷达传感器屏幕与家庭智能产品连接。烹饪时,你可以通过冰箱观看洗衣机的工作,当你不能腾出手来照顾孩子时,你可以通过冰箱屏幕连接家庭摄像头,看到孩子的情况。冰箱的推出标志着屏幕上的未来之家正在迅速到来。 管理RFID食材,建立健康的家庭生活 据报道,5G冰箱配备了RFID食品材料管理模块,用户将自动记录和储存食品,无需操作。此外,冰箱还可以追溯食品来源,监控食品材料从诞生到用户的整个过程,以确保食品安全;当食品即将过期时,冰箱会自动提醒用户提供健康的饮食和生活。 风冷无霜,清新无痕 冰箱的出现是人类延长食品保存期的一项伟大发明。一个好的冰箱必须有很强的保存能力。5g冰箱采用双360度循环供气系统。智能补水功能使食品原料享受全方位保鲜,紧紧锁住水分和营养,防止食品原料越来越干燥。此外,该送风系统可将其送到冰箱的每个角落,消除每个储藏空间的温差,减少手工除霜的麻烦,使食品不再粘连。 进口电诱导保鲜技术,创新黑科技加持 针对传统冰箱保存日期不够长的痛点,5g互联网冰箱采用日本进口电诱导保存技术,不仅可以实现水果储存冰箱2周以上不腐烂发霉,还可以使蔬菜储存25天不发黄、不起皱。在-1℃~-5℃下,配料不易冻结,储存时间较长。冷冻食品解冻后无血,营养大化。此外,微波雷达传感器5g冰箱还支持-7℃~-24℃的温度调节,以满足不同配料的储存要求。 180°矢量变频,省电时更安静 一台好的压缩机对冰箱至关重要。冰箱配备了变频压缩机。180°矢量变频技术可根据冷藏室和冷冻室的需要有效提供冷却,达到食品原料的保鲜效果。180°矢量变频技术不仅大大降低了功耗,而且以非常低的分贝操作机器。保鲜效果和节能安静的技术冰箱可以在许多智能冰箱中占有一席之地,仅仅通过这种搭配就吸引了许多消费者的青睐。 配备天然草本滤芯,不再担心串味 各种成分一起储存在冰箱中,难以避免串味。此外,冰箱内容易滋生细菌,冰箱总是有异味。针对这一问题,冰箱创新配置了天然草本杀菌除臭滤芯。该滤芯提取了多种天然草本活性因子,可有效杀菌99.9%,抑制冰箱异味,保持食材新鲜。不仅如此,这个草本滤芯可以更快、更方便、更无忧地拆卸。家里有冰箱,开始健康保鲜的生活。 目前,冰箱屏幕唤醒微波雷达传感器正在继续推动家庭物联网的快速普及,相信在不久的将来,智能家电将成为互动终端。
esp32 c3智能音箱模块乐鑫代理商RISC-V机器模式异常管理寄存器,RISC-V 处理器内核中与机器模式异常相关的 CSR 寄存器列表。其中列出了处理器中与机器模式异常和中断管理相关的 10个 CSR 寄存器。 RISC-V 与机器模式异常相关的 CSR 寄存器 符号    名称    功能描述    CSR 空间地址 mstatus    机器模式状态寄存器 Machine Status Register    寄存器中MIE 和MPIE用于中断全局使能    0x300 medeleg    机器模式异常委托寄存器 Machine Exception Delegation Register    将异常委托给管理员模式    0x302 mideleg    机器模式中断委托寄存器 Machine Interrupt Delegation Register    将中断委托给管理员模式    0x303 mie    "机器模式中断使能寄存器  Machine Interrupt Enable Register"    内核中断使能    0x304 mtvec    机器模式异常入口基地址寄存器 Machine Trap-Vector Based-Address Register    中断向量表基地址,进入异常的PC地址    0x305 mepc    机器模式异常 PC寄存器 Machine Exception Program Counter    保存异常返回地址    0x341 mcause    机器模式异常原因寄存器 Machine Cause Register    保存异常类型和编码    0x342 mtval    机器模式异常值寄存器 Machine Trap Value Register    保存异常的附加信息    0x343 mip    机器模式中断状态寄存器 Machine Interrupt Pending Register    中断状态    0x344 mscratch    临时寄存器 Machine Scratch    暂时存放一个字大小的数据    0x340 1.机器模式状态寄存器(mstatus) mstatus 用于机器模式下控制和跟踪处理器内核(Hart)的运行状态,esp32 c3智能音箱模块乐鑫代理商管理员模式下与之对应的寄存器是 sstatus,用户模式下与之对应的寄存器是 ustatus。mstatus、sstatus 和 ustatus 在 CSR 空间的地址不同。RV32 架构 mstatus 寄存器中与中断处理相关的内容,包括 MIESIE、UIE、MPIE、SPIE、UPIE、SPP 位和MPP[1:0]域。对于 RV64,mstatus 寄存器为64 位。 MIE、SIE 和 UIE 分别是机器模式、管理员模式和用户模式中断使能控制位。 MIE=1,打开机器模式全局中断使能,使处理器内核能够响应中断请求;MIE=0,关闭机器模式全局中断使能,esp32 c3智能音箱模块乐鑫代理商处理器内核不响应任何中断请求。 SIE=1,打开管理员模式全局中断使能;SIE-0,关闭管理员模式全局中断使能。 UIE=1,打开用户模式全局中断使能;UIE=0,关闭用户模式全局中断使能。 MPIE、SPIE、UPIE 分别是机器模式、管理员模式和用户模式下的中断状态位。 发生中断请求时,MPIE=MIE、SPIE=SIE。如果开启中断使能,即MIE和SIE为1,则中断发生时MPIE和SPIE置1。 发生中断请求时,MPP[1:0]和SPP 自动保存中断发生前处理器内核的特权模式。在MPP[1:0]中可以保存M、S和U三种模式码;SPP中保存S和U两种模式码。 2.机器模式异常和中断委托寄存器(medeleg 和 mideleg) 对于RV32,medeleg 和 mideleg 是 32 位可读/写寄存器。在支持机器模式、管理员模式和用户模式 3 种模式的 RISC-V 处理器系统中,设置机器式下 medel。或 mideleg 中某一个位,可将与该位对应的异常或中断委托给管理员模式或用户式处理。esp32 c3智能音箱模块乐鑫代理商设置管理员模式下 sedeleg 和 sideleg 寄存器中某一位,可将与该位对应异常或中断委托给用户模式处理。在支持管理员模式的系统中,必须拥有 medele和mideleg 寄存器,而 sedeleg 和 sideleg 寄存器只存在于同时实现了用户模式中断和N扩展的系统中。 无论怎样设置中断和异常委托寄存器,发生异常时的控制权都不会移交给比当前级别更低的特权模式。在机器模式下发生的异常总是在机器模式下处理。esp32 c3智能音箱模块乐鑫代理商在管理员模式下发生的异常,根据具体的委托设置,可能由机器模式或管理员模式处理,但永远不会由用户模式处理。 3.机器模式中断使能寄存器(mie) 在 RV32 架构中,mie 是 32 位寄存器,设置不同模式和类型中断的使能状态。 mie 寄存器结构图其中,USIE 是用户模式软件中断使能位,SSIE是管理员模式软件中断使能位,esp32 c3智能音箱模块乐鑫代理商MSIE 是机器模式软件中断使能位,UTIE 是用户模式定时器中断使能位,STIE 是管理员模式定时器中断使能位,MTIE 是机器模式定时器中断使能位,UEIE 是用户模式外中断使能位,SEIE 是管理员模式外中断使能位,MEIE 是机器模式外中断使能位。 使能位置 1,使能与该位对应的中断类型;使能位清 0,关闭与该位对应的中断类型。 对于 RV64,mie 寄存器是 64 位。 管理员模式下对应的寄存器是管理员模式中断使能寄存器(sie)。与 mie 相比sie 去除了 MEIE、MTIE 和 MSIE 位。 用户模式下对应的寄存器是用户模式中断使能寄存器(uie)。与 mie 和 sie相比,uie寄存器中只有 UEIE、UTIE 和 USIE 位。 4.机器模式异常入口基地址寄存器(mtvec) mtvec 寄存器保存异常向量表基地址。mtvec 低 2 位选择中断外理程序人口模式(mode),高 30 位是异常向量表基地址(base[31;2])的高 30位基地址4字节对齐。对于 RV64,mtvec 寄存器为 64位。 mode=0,查询方式。所有中断响应后的入口地址相同,皆为基地址(baseaddress),进入中断处理程序后,查询具体中断源信息,然后根据中断源进行相应处理。 mode=1,向量中断模式。直接跳到向量表中与中断源相对应的位置,获取与该中断源对应的中断服务程序入口地址,执行中断服务程序。esp32 c3智能音箱模块乐鑫代理商在中断向量表中,与中断源对应的向量地址为 base address+4Xmcause[30:0]。 mode≥2,保留。 在管理员模式下,与 mtvec 对应的寄存器为管理员模式异常向量基地址寄存器(Supervisor Trap Vector Base Address Register,stvec)。 5.机器模式异常 PC寄存器(mepc) 在 RV32 架构中,mepc 是 32 位寄存器,用于保存发生异常时的 PC值,可以是有效的物理地址或虚拟地址。 当发生异常,esp32 c3智能音箱模块乐鑫代理商处理器进入机器模式时,mepc 寄存器自动保存发生中断或异常时指令的逻辑地址、物理地址或虚拟地址。 对于 RV64,mepc 寄存器是 64 位。 在管理员模式下,与 mepc 对应的寄存器是管理员模式异常 PC 寄存器(Supervisor Exception Program Counter,sepc)。 6.机器模式异常原因寄存器(mcause) mcause 保存产生异常的原因,异常发生时用当前异常码(Exception Code)自动更新该寄存器的值。RV32 架构中 mcause 寄存器结构图。其中,高位Interrupt 表示异常类型,低 31 位是异常编码。对于 RV64,mcause 寄存器为 64 位Interrupt=1,表示内核中断;Interrupt=0,表示异常。 列出了RISC-V中断相关的异常编码,中断类型包括软件中斯、内核定时器中断和外部中断。 RISC-V 中断异常编码 中断(Interrupt)    异常编码    异常描述 软件中断    0    用户模式软件中断 软件中断    1    管理员模式软件中断 软件中断    2    保留 软件中断    3    机器模式软件中断 定时器中断    4    用户模式定时器中断 定时器中断    5    管理员模式定时器中断 定时器中断    6    保留 定时器中断    7    机器模式定时器中断 外中断    8    用户模式外中断 外中断    9    管理员模式外中断 外中断    10    保留 外中断    11    机器模式外中断 保留    15    保留 保留    ≥16    保留 在管理员模式和用户模式下,与 mcause 对应的寄存器分别为管理员模式异常原因寄存器(Supervisor Cause Register,scause),以及用户模式异常原因寄存器User Cause Register, ucause) 。 7.机器模式异常值寄存器(mtval) 在RV32 架构中,mtval是 32 位寄存器。当发生异常进入机器模式时,mtval置零,或者写入该异常的特定信息,以便协助软件处理异常事件。在esp32 c3智能音箱模块乐鑫代理商RV64 架构中,mtval 寄存器是 64 位。 在管理员模式下,与 mtval 对应的寄存器为管理员模式异常值寄存器(Supervirsor Trap Value, stval) 。 8.机器模式中断状态寄存器(mip) 在 RV32 架构中,mip 是 32 位寄存器,指示机器模式下的中断状态。 mip寄存器结构。其中,USIP 是用户模式软件中断状态位,SSIP是管理员模式软件中断状态位,MSIP 是机器模式软件中断状态位,UTIP 是用户模式定时器中断状态位,STIP 是管理员模式定时器中断状态位,MTIP 是机器模式定时黑中断状态位,UEIP 是用户模式外中断状态位,SEIP 是管理员模式外中断状态位,MEIP 是机器模式外中断状态位。 当中断请求发生时,如果 mie 寄存器中与该中断类型对应的使能位为 1,则 mip相应的状态位置 1。例如,MEIE=1,当出现外中断请求时 MEIP=1。对于 RV64,mip 寄存器是 64 位。 在管理员模式下,与 mip 对应的寄存器是管理员模式中断状态寄存器(sip)。与mip 相比,sip 寄存器中去除了 MEIP、MTIP 和MSIP 位。esp32 c3智能音箱模块乐鑫代理商在用户模式下,与 mip 对应的寄存器是用户模式中断状态寄存器(uip),与 mip和 sip 相比,uip 寄存器中只有 UEIP、UTIP 和USIP位。
wifi和蓝牙芯片esp32 s2 c3乐鑫一级代理商RISC-V异常和中断处理,异常和中断处理是处理器中不可缺少而又复杂的功能,使处理器在正常程序运行过程中能够响应和处理异常事件或中断请求。当异常事件发生时,处理器暂停执行当前主程序,从暂停处跳转到异常件处理程序人口,执行异常处理程序。异常处理程序结束后,返回主程序暂停处的下一条指令,然后继续执行主程序。 RISC-V 特权架构定义了 RISC-V 处理器异常处理机制。在wifi和蓝牙芯片esp32 s2 c3乐鑫一级代理商RISC-V 特权架机器(M)模式和管理员(S)模式中,RISC-V 内核通过 CSR 寄存器管理异常和中断事件的响应和处理过程。 与ARM 等其他处理器架构相比,RISC-V 内核使用更多的寄存器和更复杂的方式,可更加灵活地管理异常和中断。  RV32 特权模式与异常 缺省情况下,RISC-V 处理器在机器(M)模式中处理异常事件和中断请求,执行异常处理和中断服务程序。 为了提高系统性能,wifi和蓝牙芯片esp32 s2 c3乐鑫一级代理商RISC-V 特权架构支持异常和中断委托机制,使处理器能够在低特权模式处理异常和中断,而不需要进入机器模式。通过设定 CSR 寄存器中机器模式的中断委托(Machine Interrupt Delegation,mideleg)和异常委托(MachineException Delegation,medeleg)寄存器将一些中断和异常委托低特权模式处理在被委托的低级模式中,可以通过软件屏蔽任何被委托给该特权模式的中断。 在机器(M)模式下发生的异常只能在机器模式中处理。在管理员(S)模式下发生的异常,根据中断委托设置,可在机器模式或管理员模式下处理。wifi和蓝牙芯片esp32 s2 c3乐鑫一级代理商在用户模式下发生的异常,根据中断委托设置,可在机器模式、管理员模式或用户模式下处理。如果在特权模式下响应用户模式下发生的中断请求,则处理完成后通过指令返回到用户模式。 RISC-V 处理器中断处理过程中 RV32 特权模式。其中,只支持机器(M)和用户(U)两种模式,在未设置中断委托情况下,处理器响应中断时特权模式转换方式。在用户模式下发生中断请求,并且处理器开启中断使能的情况下,处理器进入机器模式,响应中断请求并执行中断处理程序。中断处理程序完成后,处理器通过指令 MRET 从机器模式返回到用户模式。 支持 M、S 和 U 三种模式。如果不设置中断委托模式,则在用户模式发生中断后,处理器进入机器模式,响应并处理中断请求。中断处理完成后,使用指令 MRET 返回用户模式。wifi和蓝牙芯片esp32 s2 c3乐鑫一级代理商如果设置了中断委托模式,并且委托管理员模式处理中断请求,则在用户模式下发生请求时,处理器进入管理员模式并处理中断,运行中断服务程序,后通过指令 SRET 返回用户模式。在管理员模式中,可以通过程序中屏蔽任何委托给管理员模式的中断。 列出了 RV32 特权架构指令,其中 mret 和 sret 用于异常或中断处程序结束后返回,并在返回时改变处理器特权模式。 RV32特权架构指令 操 作    助记符    解释 machine-mode trap return    mret    机器模式异常返回 supervisor-mode trap return    sret    管理员模式异常返回 supervisor-mode fence. virtual memory address    sfence    管理员模式内存访问同步 wait for interrupt    wf    等待中断 wait for exception    wfe    等待异常
matter协议芯片乐鑫科技芯片代理商RISC-V寻址方式,寻址方式是处理器执行指令时获取数据地址,或者下一条指令地址的方式。RISC-V 处理器支持立即数寻址、寄存器寻址、寄存器间接寻址和程序计数(PC)相对寻址 4 种寻址方式。 1、立即数寻址 立即数寻址是简单直接的寻址方式,指令中直接以常数作为操作数。在RISC-V 汇编语句中,通常将字母“i”置于操作符末,表示立即数操作指令。例如,加法运算“add”操作的两个源操作数都是寄存器,而“addi”操作的一个源操作数是器,另一个操作数是立即数。在matter协议芯片乐鑫科技芯片代理商RV32I不同类型指令中立即数的取值范围有所差别。例如,操作“lui”的立即数范围是 20 位,“addi”和“andi”运算的立即数范围是 12位。使用 RV32I 指令组合,可以把任意 32 位整数装载到寄存器中。 例如,matter协议芯片乐鑫科技芯片代理商通过下列两条指令,能够将 32 位数 0x12345678 装载到寄存器 t0 中 1 lui t0,0x12345 //t0 =0x12345000 2 addi t0,t0,0x678 //t0=0x12345678 第1行,“lui”将一个 20 位常量加载到寄存器 t0 的第 12 位到第 31位,即t0[31:12],右边的 12 位 t0[11:0]填充 0。 第 2行,“addi”将 12 位立即数加到 t0 的第 0位到第 11 位,即 to[11:0]。 在装载和存储指令中,地址偏移量“offset”也是立即数,其取值范围是 12 位,即offset[11:0]。 2、寄存器寻址 寄存器寻址指令的源操作数是寄存器,从寄存器读取数据,并把结果保存到寄存器中。在matter协议芯片乐鑫科技芯片代理商RV32I指令集中,“add”“sub”“and”“or”和“xor”等运算指令的所有操作数都是寄存器,是典型的寄存器寻址指令。末字母非“i”的指令是寄存器寻址指令。 3、寄存器间接寻址 寄存器间接寻址指令以寄存器的数值作为内存地址(存储地址的寄存器又称为地址寄存器),从该内存地址所指向的存储单元读取数据,或者将数据写入到内存地址所指向的存储单元。如果指令中有偏移量“offset”,则存储单元的地址是地址寄存器的数值与“offset”之和。 下面通过示例说明间接寻址指令的操作。 列出了 0x800000 至 0x80001f 内存段中每个字节的数据。其中,第 1列是4字节对齐地址,第 1行是各字节的偏移地址,其他部分是相应内存单元中的数据 内存数据 内存地址    0    1    2    3 0x800000~0x800003    0x00    0xl0    0x20    0x30 0x800004~0x800007    0x04    0x14    0x24    0x34 0x800008~0x80000b    0x08    0x18    0x28    0x38 0x80000c~0x80000f    0x0c    0xlc    0x2c    0x3c 0x800010~0x800013    0x10    0x20    0x30    0x40 0x800014~0x800017    0x14    0x24    0x34    0x44 0x800018~0x80001b    0x18    0x28    0x38    0x48 0x80001c~0x80001f    0xlc    0x2c    0x3c    0x4c RISC-V 仅支持小端(litle-endian)存储格式。在字或半字数据中,数据中低位字节存放在内存中的低地址。 如果tl寄器中初始数值为 0x800000,则下列第1条、第 2条和第3条语句执行后 t0 中的数值分别为 0x302010000、x38281808 和 0x28。 1 Iw t0,(t1)    //t0=0x30201000 2 lw t0,8(t1)    //t0=0x38281808 3 Ib t0,10(t1) //t0 = 0x28 4、PC 相对寻址 PC相对寻址以当前 PC值为基地址,以指令中操作数为偏移量,两者相加后到新的内存地址。处理器从新的内存地址读取数据,或跳转到新的程序地址。matter协议芯片乐鑫科技芯片代理商RISC-V用PC相对寻址实现条件跳转和无条件跳转。在下列汇编程序中第4行语句中的“end”汇编后转成立即数 12,第 6 行中的“start”汇编后转成立即数-16,都是内存中当前指令到目标位置的距离,地址增大的方向为正,地址减小的向为负。条件分支指令立即数范围是±4 KB。 1 start: 2 add t0, t0, t1 3 ld t2,0(t0) 4 bne t2, t3, end //if(t2 != t3) PC= PC+ 12 5 addi t4, t4,1 6 beg t0, t0, start //PC= PC-16 7 end ; 下列两条是无条件跳转指令,语句 1 中“jal”跳转的范围是±1 MB,语句 2中“jalr”跳转的范围是±2 GB。 1 jal ra, dst //PC= PC+dst,ra= PC+ 4 2 jalr ra,0(t0) //PC=t0,ra= PC+4
上一页
1
2
...
110

地址:深圳市宝安区西乡街道麻布社区宝安互联网产业基地A区6栋7栋7706

邮箱:Sales@ferry-semi.com

版权所有©2020  深圳市飞睿科技有限公司  粤ICP备2020098907号    飞睿科技微波雷达wifi模块网站地图