这是描述信息

上海乐鑫科技代理商wifi控制模块Xmodem协议介绍及应用(基于ESP-IDF)

上海乐鑫科技代理商wifi控制模块Xmodem协议介绍及应用(基于ESP-IDF)

上海乐鑫科技代理商wifi控制模块Xmodem协议介绍及应用(基于ESP-IDF)

上海乐鑫科技代理商wifi控制模块Xmodem协议介绍及应用(基于ESP-IDF)

上海乐鑫科技代理商wifi控制模块Xmodem协议介绍及应用(基于ESP-IDF)

上海乐鑫科技代理商wifi控制模块Xmodem协议介绍及应用(基于ESP-IDF)

1. 介绍
Xmodem 和 Ymodem 是串口通信中广泛用到的异步文件传输协议。这个协议包括了文件的识别、传送的起止时间、错误的判断与纠正等内容。Xmodem、Ymodem 和 Zmodem 协议是常用的三种通信协议。本文只介绍 Xmodem 和 Ymodem 协议,Zmodem 协议后续添加。
1.1 使用场景
Xmodem 和 Ymodem 协议是串口文件传输协议,顾名思义可用于通过串口相连的 ESP 设备与 MCU 之间的文件传输。当 MCU 设备作为接收端时,上海乐鑫科技代理商wifi控制模块ESP 设备通过 WIFI、BLE 或者其他方式获取 MCU 固件或者配置文件,通过串口文件传输协议传输到 MCU 端,MCU 根据接收到的固件或者配置文件进行升级或配置;当 MCU 设备作为发送端时,通过串口文件传输协议将 MCU 的日志或者配置文件等传输到 ESP 设备端,ESP 设备上传文件至云平台或者服务器。
例如: ESP 设备将从 OTA 平台获取到的固件通过 Xmodem 协议传输到 MCU 设备,从而实现 MCU 固件的 OTA 升级

1.2 协议介绍
1.2.1 Xmodem 协议
Xmodem 协议早是以 128 字节块的形式传输数据,并且每个块都使用校验和进行错误检测。后面衍生出使用循环冗余校验方式 (CRC16) 和支持 1024 字节块的传输协议 (Xmodem-1k)。
1.2.2 Ymodem 协议
Ymodem 协议是 Xmodem 协议的改良版,以 1024 字节块的形式传输数据,并且支持传输多个文件。一般 Ymodem 协议是使用 CRC16 进行校验。
1.3 协议特点
Xmodem 和 Ymodem 协议传输由接收程序和发送程序完成。先由接收程序发送协商字符协商校验方式,协商通过之后,发送程序开始发送数据包。接收程序接收到一个完整的数据包之后,按照协商的校验方式对数据包进行校验,校验通过之后发送确认字符,校验失败则发送否认字符。发送程序收到确认字符后继续发送下一包,收到否认字符后重传数据包。
1.4 协议解析
Xmodem 和 Ymodem 从控制符定义和帧包格式上是基本一致的。
1.4.1 控制符定义

1.4.2 帧包格式

说明: - 该帧是 Xmodem 使用 CRC16 校验方式,如果使用 Xmodem-1k 或者 Ymodem,帧格式 Byte 4 - Byte 131 (128 字节) 需要增大为 Byte 4 - Byte 1027 (1024字节)。 - Xmodem 如果使用校验和,帧格式 Byte 132 - Byte 133 只需要占用一个字节。 - Byte 3 是 Byte 2 按位取反,Byte 2 取值范围 0 - 255,超过 255 后从 0 递增。
1.4.3 交互流程
流程里 NAK, ACK, CAN, CRC16 和 EOT 是没有包头和数据,只是一个单独的字符数据。
1.4.3.1 Xmodem 校验和交互流程

1.4.3.2 Xmodem CRC16 交互流程
计算 CRC16 校验的除数多项式为X ^ 16 + X ^ 12 + X ^ 5 + 1,信息报中的 128 数据字节将参加 CRC16 校验的计算,在发送端 CRC16 的高字节在前,低字节在后

说明: - 相比于 Xmodem 校验和, Xmodem CRC16 是发送控制字符 C,而校验和发送控制字符 NAK,并且 CRC16 校验字段占 2 Byte。 - 如果使用 Xmodem-1k 协议发送 1024 字节的数据,只需要将数据头标志由 SOH 替换为 STX,数据部分占 1024 字节。 - 如果发送的数据不满 128 字节或者 1024 字节,使用 0x1A 填充。
1.4.3.3 Ymodem 交互流程
Ymodem 协议的起始帧并不直接传输文件的数据,而是将文件名与文件的大小放在数据帧中传输。它的数据帧结构如下:

说明: - 头标志是 SOH,包序列固定是 0x00。 - Filename 是传输的文件名字,比如 hello_world.bin,它在起始帧中的格式为: 68 65 6c 6c 6f 5f 77 6f 72 6c 64 2e 62 69 6e 00,也就是把 ASCII 码转成十六进制,后的 0x00 代表文件名结束。 - Filesize 是要传输的文件的大小,比如文件大小为 120 KB,转换为 120 * 1024 = 122880 Byte,转化为十六进制为 0x1E00,它在起始帧中的格式为: 31 45 30 30 00,对应 ASCII 1E00,后的 0x00 代表文件长度结束。 - 后 NUL 代表剩余不足 128 Byte 部分用 0x00 填充。
Ymodem 协议的结束帧与起始帧类似,结构如下:

文件传输流程:

1.5 方案对比
1.5.1 对比 AT 透传升级 MCU

1.5.2 对比其他串口文件传输协议升级 MCU
相关其他串口文件传输协议,请参考维基百科。
归纳总结: - 当前常用的串口文件传输协议就只有 Xmodem、Ymodem 和 Zmodem,并且它们的 license 是 Public domain。 - 它们支持数据错误检查机制: 校验和和出错重传。
使用 Xmodem 和 Ymodem 串口文件传输协议实现 MCU 升级,对于 MCU 侧可按照标准协议文档实现,对于上海乐鑫科技代理商wifi控制模块ESP 设备侧可参考文档后续章节介绍。
2. 目的
本文基于 Xmodem 和 Ymodem 协议规范,针对 ESP8266_RTOS_SDK 和 ESP-IDF 平台开发了基于 UART 传输的文件传输协议组件。支持以下 Xmodem 和 Ymodem 组合协议功能。

本文将介绍如何使用该组件提供的接口进行串口文件传输。
3. 硬件准备
linux 环境 用来编译 & 烧写 & 运行等操作的必需环境。
windows 用户可安装虚拟机,在虚拟机中安装 linux。
ESP 设备 ESP 设备包括上海乐鑫科技代理商wifi控制模块ESP芯片,ESP模组,ESP开发板等。
USB串口 杜邦线 连接 PC 和 ESP 设备,用来烧写/下载程序,通过串口 UART 传输文件协议,查看 log 等。
4. 环境搭建
如果您熟悉 ESP 开发环境,可以很顺利理解下面步骤;如果您不熟悉某个部分,比如编译,烧录,需要您结合官方的相关文档来理解。如您需阅读 ESP-IDF 编程指南文档等。
4.1 编译器环境搭建
ESP8266 平台:根据官方链接中 Get toolchain,获取 toolchain。
ESP32 平台:根据官方链接中工具链的设置,下载 toolchain。
toolchain 设置参考 ESP-IDF 编程指南。
4.2 烧录工具/下载工具获取
ESP8266 平台:烧录工具位于 ESP8266_RTOS_SDK 下 ./components/esptool_py/esptool/esptool.py
ESP32 平台:烧录工具位于 esp-idf 下 ./components/esptool_py/esptool/esptool.py
esptool 功能参考:
$ ./components/esptool_py/esptool/esptool.py --help
5. SDK 准备
esp-xmodem,通过该 SDK 可实现 Xmodem 和 Ymodem 协议应用。
Espressif SDK
ESP32 平台: ESP-IDF,支持 v4.0 之后版本。
ESP8266 平台: ESP8266_RTOS_SDK,支持 v3.3 之后版本。
6. 功能介绍
功能框架如下:
Xmodem Sender 和 Xmodem Receiver 上层遵循 Xmodem 协议,数据传输通过 transport 层将协议数据写入 UART 串口,然后 Xmodem 主机和从机通过串口通信协议传输数据。

6.1 文件的传输与接收
6.1.1 配置 UART 传输层
esp_xmodem_transport_config_t transport_config = {
    .baud_rate = 921600,
    #ifdef CONFIG_IDF_TARGET_ESP32
    .uart_num = UART_NUM_1,
    .swap_pin = true,
    .tx_pin = 17,
    .rx_pin = 16,
    .cts_pin = 15,
    .rts_pin = 14,
    #endif
};
esp_xmodem_transport_handle_t transport_handle = esp_xmodem_transport_init(&transport_config);
ESP8266 默认只能使用 UART0 进行传输和接收,由于 UART0 会存在 bootloader 相关打印,为了减少此类打印数据,可以使能 swap_pin 功能,将传输接收口 swap 到 IO15 和 IO13 上,bootloader 的输出还是通过 UART0 口输出。
ESP32 则可以使用 UART0,UART1 和 UART2,建议使用 UART1 进行文件传输和接收,UART0 用作 LOG 输出。
baud_rate 值越大,传输速率就越快。
recv_timeout 是串口读取 ring buffer 的超时时间,默认建议选择 100 ms。
6.1.2 配置 Xmodem role
esp_xmodem_config_t config = {
    .role = ESP_XMODEM_SENDER,
    .event_handler = xmodem_sender_event_handler,
    .support_xmodem_1k = true,
};
esp_xmodem_handle_t sender = esp_xmodem_init(&config, transport_handle);
role 代表是 sender 还是 receiver, 后续调用 esp_xmodem_start 会根据 role 去选择起 sender 还是 receiver 去处理。
support_xmodem_1k 仅对于发送者 (sender) 有效,表示是否支持按照 Xmodem-1k 方式传输数据。如果不设置,默认 support_xmodem_1k 为 false,数据按照 128 字节发送。 如果设置 support_xmodem_1k 为 true,就会按照 1024 字节发送。如果数据少于 1024 字节,大于 128 字节,就会按照 1024 字节发送,不足 1024 字节部分填充 0x1A 后发送。如果数据少于 128 字节,就会按照 128 字节发送,不足 128 字节部分填充 0x1A 后发送。
event_handler 用于注册事件 event,根据相应的 event 处理不同事件,相应逻辑处理可以参考示例。
esp_xmodem_config_t config = {
    .role = ESP_XMODEM_RECEIVER,
    .crc_type = ESP_XMODEM_CRC16,
    .event_handler = xmodem_receiver_event_handler,
    .recv_cb = xmodem_data_recv,
    .cycle_max_retry = 25,
};
esp_xmodem_handle_t receiver = esp_xmodem_init(&config, transport_handle);
crc_type 是 receiver 支持的校验方式。
recv_cb 仅对于接收者 (receiver) 有效,用于底层接收到文件给用户层的回调函数。相应逻辑处理可以参考 (recevier) 示例。
6.1.3 启动 Xmodem
esp_xmodem_start(sender);
根据返回值 ESP_OK 判断有没有启动成功.
连接到 Xmodem receiver 后,会上报 ESP_XMODEM_EVENT_CONNECTED 事件,然后处理相应逻辑。本例中是起了一个http client task 来下载文件。
esp_xmodem_start(receiver);
调用该函数后,receiver 会根据crc_type 的值发 'C' 或者 NAK,一旦有 sender 发送数据,就会上报 ESP_XMODEM_EVENT_CONNECTED 事件,并且数据会上报至注册的 recv_cb 中。如果是文件传输,会在 ESP_XMODEM_EVENT_ON_FILE 事件中上报文件名和文件长度。
7. 编译&烧写&运行
7.1 编译
7.1.1 导出编译器
参考 工具链的设置 设置 IDF_PATH,运行 $IDF_PATH/install.sh 安装相关工具,执行 $IDF_PATH/export.sh 导出路径。
7.1.2 示例编译
make 执行如下命令,可以通过 make menuconfig 修改串口烧录配置
cd esp-xmodem/examples/xmodem_receiver
make defconfig
make
cmake 执行如下命令,可以通过 idf.py menuconfig 修改串口烧录配置
cd esp-xmodem/examples/xmodem_receiver
idf.py build
7.2 烧写
7.2.1 Linux 平台烧写
对于 make 执行 make flash,对于 cmake 执行 idf.py flash。
使用 make erase_flash 或者 idf.py erase_flash 擦除 flash。
使用 make monitor 或者 idf.py -p (PORT) monitor 查看串口输出。
7.2.1 Windows 平台烧写
使用 Flash 下载工具(ESP8266 & ESP32) 烧录 Xmodem 示例固件。 - 打开 flash download tool, ESP8266 的烧录配置如下:

打开 flash download tool, 上海乐鑫科技代理商wifi控制模块ESP32 的烧录配置如下:

点击 start 进行烧录, 烧录成功后按 EN 键重启开发板。
7.3 运行
示例可以通过 Linux 系统命令 rz 和 sz 配合测试。这两者支持 Xmodem,Ymodem 和 Zmodem 文件传输协议。如果用户发现 Linux 系统上找不到该命令,可以执行如下命令安装。
sudo apt-get install lrzsz
rz 用于接收 sender 发送来的文件,sz 用于发送文件至 receiver。详细命令可以参考 rz --help 或者 sz --help。
7.3.1 示例 xmodem_receiver (用于在主机上通过 xmodem 协议给模组从机进行 OTA)
该示例用于充当 receiver 来接收 sender 发送的文件,利用文件进行 OTA。详细操作请参考示例下对应的 README 文件。 对于 sender 可以使用如下命令进行发送 OTA 文件:
sz --ymodem (file name or pure data) >/dev/ttyUSB0 </dev/ttyUSB0
其中 ttyUSB0 是用于与 receiver 进行文件传输的串口。 设备侧log:
...
[17:46:56.538][0;32mI (286) uart: queue free spaces: 10[0m
[17:46:56.575][0;32mI (3286) xmodem_receive: Waiting for Xmodem sender to send data...[0m
[17:46:59.580][0;32mI (6286) xmodem_receive: Waiting for Xmodem sender to send data...[0m
[17:47:02.618][0;32mI (6292) xmodem_receive: ESP_XMODEM_EVENT_CONNECTED[0m
[17:47:02.618][0;32mI (6294) xmodem_receive: This is a file begin transfer[0m
[17:47:02.618][0;32mI (6298) xmodem_receive: ESP_XMODEM_EVENT_ON_FILE[0m
[17:47:02.618][0;32mI (6306) xmodem_receive: file_name is xmodem_receiver.bin, file_length is 176704[0m
[17:47:02.618][0;32mI (6339) xmodem_receive: Starting OTA...[0m
[17:47:02.641][0;32mI (6340) xmodem_receive: Writing to partition subtype 17 at offset 0x110000[0m
[17:47:02.641][0;32mI (9305) xmodem_receive: esp_ota_begin succeeded[0m
[17:47:05.607][0;32mI (9306) xmodem_receive: Please Wait. This may take time[0m
[17:47:05.607][0;32mI (18056) xmodem_receive: Receive EOT data[0m
[17:47:14.388][0;32mI (18059) xmodem_receive: Receive EOT data again[0m
[17:47:14.388][0;32mI (18066) xmodem_receive: This is a file end transfer[0m
[17:47:14.388][0;32mI (18067) xmodem_receive: ESP_XMODEM_EVENT_FINISHED[0m
...
[17:47:14.531][0;32mI (18224) xmodem_receive: esp_ota_set_boot_partition succeeded[0m
7.3.2 示例 xmodem_sender (用于在主机上通过 xmodem 协议接收模组从机进行文件传输)
该示例用于充当 sender 来发送通过 http 下载的文件。Linux 电脑上可以通过命令 python -m SimpleHTTPServer 起一个 Http Server。详细操作请参考示例下对应的 README 文件。 对于 receiver 可以使用如下命令进行接收文件:
rz --ymodem >/dev/ttyUSB0 </dev/ttyUSB0
其中 ttyUSB0 是用于与 receiver 进行文件传输的串口。 设备侧 log:
...
[17:40:45.177][0;32mI (481) example_connect: Connecting to HUAWEI_888...[0m
[17:40:45.188][0;32mI (1768) wifi:state: 0 -> 2 (b0)
[17:40:46.472][0m[0;32mI (1782) wifi:state: 2 -> 3 (0)
[17:40:46.485][0m[0;32mI (1790) wifi:state: 3 -> 5 (10)
[17:40:46.493][0m[0;32mI (1829) wifi:connected with HUAWEI_888, aid = 1, channel 1, HT20, bssid = 34:29:12:43:c5:40
[17:40:46.549][0m[0;31mE (1839) wifi: AES PN: 0000000000000000 <= 0000000000000000[0m
[17:40:46.549][0;32mI (4270) tcpip_adapter: sta ip: 172.168.30.131, mask: 255.255.255.0, gw: 172.168.30.1[0m
[17:40:49.019][0;32mI (4275) example_connect: Connected to HUAWEI_888[0m
[17:40:49.019][0;32mI (4279) example_connect: IPv4 address: 172.168.30.131[0m
[17:40:49.019][0;32mI (4288) xmodem_send: Connected to AP, begin http client task[0m
[17:40:49.019][0;32mI (4298) uart: queue free spaces: 10[0m
[17:40:49.019][0;32mI (14300) xmodem_send: Connecting to Xmodem receiver(1/25)[0m
[17:40:59.011][0;32mI (23638) xmodem_send: ESP_XMODEM_EVENT_CONNECTED[0m
[17:41:08.349][0;32mI (24771) xmodem_send: Send image success[0m

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模块网站地图