华体育会官网

这是描述信息

乐鑫科技代理公司蓝牙wifi二合一模块ESP32内存分析案例研究

乐鑫科技代理公司蓝牙wifi二合一模块ESP32内存分析案例研究

乐鑫科技代理公司蓝牙wifi二合一模块ESP32内存分析案例研究

乐鑫科技代理公司蓝牙wifi二合一模块ESP32内存分析案例研究

乐鑫科技代理公司蓝牙wifi二合一模块ESP32内存分析案例研究

乐鑫科技代理公司蓝牙wifi二合一模块ESP32内存分析案例研究,内存对硅片成本以及芯片尺寸具有重大影响,因此从硬件角度看,优化内存尺寸很重要,从软件角度来看,能够充分利用内存资源也至关重要。
在本文中,我们将讨论 ESP-IDF 中的一些即将推出的功能和常用配置选项(可调项),以允许 终端应用程序 以佳方式利用各个内部存储区域。
重要提示
这里我们将重点介绍乐鑫科技代理公司蓝牙wifi二合一模块ESP32 的单核模式,因为该模式下可以适用更多内存优化功能;
我们将在这里考虑典型的 IoT 用例,在该用例下牺牲性能获得内存是可以接受的准则;
我们将以典型的云应用程序为研究用例,该应用需要具有相互认证支持的 TLS 连接;
这里使用的 ESP-IDF 功能分支可查阅 http://github.com/mahavirj/esp-idf/tree/feature/memory_optimizations 。

ESP32:内部存储器分解

从存储器布局可以看出,芯片内部存在各种具有不同时钟速度的存储器区域;
对于单核用例,我们获得了额外的 32K 指令存储空间(IRAM),否则(双核模式)该区域会作为 APP CPU 内核的 cache;
对指令 RAM 的访问,地址和空间大小应始终 32 位对齐;
对于终端应用程序的业务逻辑来说,总是希望有更多的 DRAM,它是访问速度快的内存且没有任何访问限制。
案例研究— AWS IoT 示例应用程序
我们将使用来自 ESP-AWS-IoT 的 subscribe_publish 示例作为研究案例,来分析内存利用率;
乐鑫科技代理公司蓝牙wifi二合一模块ESP-IDF 提供了一个 API ,可以使用 heap_caps_get_minimum_free_size() 获取小空闲堆或者说系统中可用的动态内存大小。我们的目标是大化这个数字(进行相对分析),从而增加终端应用程序特定业务逻辑的可用内存数量(特别是 DRAM 区域)。
默认内存利用率
我们将在 subscribe_publish 示例之上添加以下代码补丁来记录动态内存的统计信息。
开始,我们将分别记录 DRAM 和 IRAM 区域如上所述的系统小空闲堆大小;
其次,我们将使用堆任务跟踪功能,该功能提供了基于每个任务的动态内存使用信息。修改此功能后,还可以记录每个任务 DRAM 和 IRAM 区域的峰值使用量;
我们将分别为 aws_iot_task ,tiT (tcpip) 和 wifi 任务记录这些信息 (因为这些任务定义了从应用层到物理层的数据传输通道,反之亦然)。还应该注意的是,网络任务的峰值内存使用量会受到环境因素(如 Wi-Fi 连接,网络等待时间)的影响而变化。
注意 : 任务创建过程中对 core-id 的更改(代码补丁如下)是针对单核的配置,这里我们仅用于此特殊示例。
diff --git examples/subscribe_publish/main/subscribe_publish_sample.c examples/subscribe_publish/main/subscribe_publish_sample.c
index c5b48ae..1982375 100644
--- examples/subscribe_publish/main/subscribe_publish_sample.c
+++ examples/subscribe_publish/main/subscribe_publish_sample.c
@@ -157,6 +157,28 @@ void disconnectCallbackHandler(AWS_IoT_Client *pClient, void *data) {
     }
 }

+#include "esp_heap_task_info.h"
+static void esp_dump_per_task_heap_info(void)
+{
+    heap_task_stat_t tstat = {};
+    bool begin = true;
+    printf("Task Heap Utilisation Stats:\n");
+    printf("||\tTask\t\t|\tPeak DRAM\t|\tPeak IRAM\t|| \n");
+    while (1) {
+        size_t ret = heap_caps_get_next_task_stat(&tstat, begin);
+        if (ret == 0) {
+            printf("\n");
+            break;
+        }
+        const char *task_name = tstat.task ? pcTaskGetTaskName(tstat.task) : "Pre-Scheduler allocs";
+        if (!strcmp(task_name, "wifi") || !strcmp(task_name, "tiT") || !strcmp(task_name, "aws_iot_task")) {
+            printf("||\t%-12s\t|\t%-5d\t\t|\t%-5d\t\t|| \n",
+                        task_name, tstat.peak[0], tstat.peak[1]);
+        }
+        begin = false;
+    }
+}
+
 void aws_iot_task(void *param) {
     char cPayload[100];

@@ -278,6 +300,16 @@ void aws_iot_task(void *param) {
         }

         ESP_LOGI(TAG, "Stack remaining for task '%s' is %d bytes", pcTaskGetTaskName(NULL), uxTaskGetStackHighWaterMark(NULL));
+
+        const int min_free_8bit_cap = heap_caps_get_minimum_free_size(MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT);
+        const int min_free_32bit_cap = heap_caps_get_minimum_free_size(MALLOC_CAP_INTERNAL|MALLOC_CAP_32BIT);
+
+        esp_dump_per_task_heap_info();
+        printf("System Heap Utilisation Stats:\n");
+        printf("||   Miniumum Free DRAM\t|   Minimum Free IRAM\t|| \n");
+        printf("||\t%-6d\t\t|\t%-6d\t\t||\n",
+                    min_free_8bit_cap, (min_free_32bit_cap - min_free_8bit_cap));
+
         vTaskDelay(1000 / portTICK_RATE_MS);
         sprintf(cPayload, "%s : %d ", "hello from ESP32 (QOS0)", i++);
         paramsQOS0.payloadLen = strlen(cPayload);
@@ -328,5 +360,5 @@ void app_main()
     ESP_ERROR_CHECK( err );

     initialise_wifi();
-    xTaskCreatePinnedToCore(&aws_iot_task, "aws_iot_task", 9216, NULL, 5, NULL, 1);
+    xTaskCreatePinnedToCore(&aws_iot_task, "aws_iot_task", 9216, NULL, 5, NULL, 0);
 }

在订阅发布示例之上打补丁

使用默认配置(并启用了堆任务跟踪功能),我们得到以下堆利用率统计信息(所有值以字节为单位):
任务的内存使用率统计:
 || 任务名       | 峰值 DRAM |峰值 IRAM||
 || aws_iot_task | 63124   |     0   ||
 || tiT          | 3840    |     0   ||
 || wifi         | 31064   |     0   ||

 系统的内存使用率统计:
 || 小可用 DRAM | 小可用 IRAM ||
 || 152976        | 40276        ||
单核配置
如前所述,我们将在所有实验中使用单核配置。请注意,即使在单核模式下,乐鑫科技代理公司蓝牙wifi二合一模块ESP32 仍具有足够的处理能力(接近 300 DMIPS),足以满足典型的 IoT 用例的需求。
在应用程序中启用相应的配置:
CONFIG_FREERTOS_UNICORE = y
重新运行应用程序之后更新的堆利用率统计信息如下所示:
任务的内存使用率统计:
 || 任务名       | 峰值 DRAM |峰值 IRAM||
 || aws_iot_task | 63124   |     0   ||
 || tiT          | 3892    |     0   ||
 || wifi         | 31192   |     0   ||

 系统的内存使用率统计:
 || 小可用DRAM | 小可用IRAM ||
 || 162980      | 76136       ||
从上面可以看出,我们在 DRAM 中多获得了约 10KB 的内存,这是由于不再需要第二个 CPU 内核的某些服务(例如,idle, esp_timer 任务等)。此外,也不再需要用于处理器间通信的 IPC 服务,因此我们可以从该服务的堆栈和动态内存中获得额外内存。 IRAM 的增加是由于释放了第二个 CPU 内核的 32KB cache,并且由于禁用了上述服务节省了一些代码空间。
TLS 特定(优化)
非对称 TLS 内容长度
此功能从 v4.0 开始已成为 ESP-IDF 的一部分。此功能允许为 TLS IN/OUT 缓冲区启用非对称的内容长度。因此,应用程序能够将 TLS OUT 缓冲区从默认值 16KB (每个规范的大 TLS 片段长度) 减小到 2KB,从而可以节省 14KB 的动态内存空间。
请注意,不太可能将 TLS IN 的缓冲区长度从默认值 16KB 减小,除非您可以直接控制服务器配置项,或者确保服务器不会出现发送超过某个阈值的入站数据的行为(在握手或实际数据传输阶段)。
在程序中启用相应的配置:
#启用 TLS 非对称 IN/OUT 内容长度
 CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN = y
 CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN = 2048
重新运行应用程序以更新堆利用率统计信息,如下所示:
任务的内存使用率统计:
 || 任务         | 峰值 DRAM | 峰值 IRAM ||
 || aws_iot_task | 48784     | 0        ||
 || tiT          | 3892      | 0        ||
 || wifi         | 30724     | 0        ||

系统的内存使用率统计:
 || 小可用 DRAM | 小可用 IRAM ||
 || 177972        | 76136        ||
从上面可以看出,我们从 aws_iot_task 任务中获得了约 14KB 的内存,因此小可用 DRAM 数量也相应的增加了。
动态缓冲区分配特性
在 TLS 连接期间,mbedTLS 堆栈从初始握手阶段开始在整个会话期间保持动态分配功能的开启。这些分配包括 TLS IN/OUT 缓冲区,对端证书,客户端证书,私钥等。在此特性中(即将成为乐鑫科技代理公司蓝牙wifi二合一模块ESP-IDF 的一部分),mbedTLS 内部 API 已被粘合(使用 SHIM 层),因此可以确保只要资源使用(包括数据缓冲区)完成,就会立即释放相关的动态内存。
这大大有助于减少 TLS 连接时堆内存峰值利用率。由于频繁进行动态内存操作(按需资源使用策略),因此对性能有微小的影响。此外,由于与身份验证凭据(证书,密钥等)有关的内存已被释放,因此在 TLS 尝试重新连接(如果需要)期间,应用程序需要确保再次填充 mbedTLS SSL 上下文。
应用程序中启用相应的配置:
#允许对 mbedTLS 使用动态缓冲策略
 CONFIG_MBEDTLS_DYNAMIC_BUFFER = y
 CONFIG_MBEDTLS_DYNAMIC_FREE_PEER_CERT = y
 CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA = y
重新运行应用程序以更新堆利用率统计信息,如下所示:
任务的内存使用率统计:
 || 任务         | 峰值 DRAM | 峰值 IRAM||
 || aws_iot_task | 26268     | 0        ||
 || tiT          | 3648      | 0        ||
 || wifi         | 30724     | 0        ||

系统的内存使用率统计:
 || 少可用DRAM | 小可用IRAM ||
 || 203648       | 76136        ||
从上面可以看出,我们从 aws_iot_task 任务中获得了约 22KB 的内存,因此小可用 DRAM 数量也相应增加。
网络特定(优化)
Wi-Fi / LwIP 配置
我们可以进一步优化 Wi-Fi 和 LwIP 配置以减少内存使用,但以牺牲一些性能为代价。我们将减少 Wi-Fi TX 和 RX 缓冲区,并且通过将一些关键代码路径从网络子系统迁移到指令存储器(IRAM)来尝试平衡二者。
​从性能方面考虑,在默认网络配置下,平均 TCP 吞吐量接近 〜20Mbps,但在下面的配置下,它将接近 〜4.5Mbps,这仍然足以满足典型的 IoT 用例。
应用程序中启用相应的配置:
#小的 Wi-Fi / lwIP 的配置
 CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM = 4
 CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM = 16
 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM = 8
 CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED =
 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE = 16
 CONFIG_LWIP_TCP_SND_BUF_DEFAULT = 6144
 CONFIG_LWIP_TCP_WND_DEFAULT = 6144
 CONFIG_LWIP_TCP_RECVMBOX_SIZE = 8
 CONFIG_LWIP_UDP_RECVMBOX_SIZE = 8
 CONFIG_ESP32_WIFI_IRAM_OPT = Y
 CONFIG_ESP32_WIFI_RX_IRAM_OPT = Y
 CONFIG_LWIP_IRAM_OPTIMIZATION = Y
重新运行应用程序以更新堆利用率统计信息,如下所示:
任务的内存使用率统计:
 || 任务         | 峰值 DRAM | 峰值 IRAM||
 || aws_iot_task | 26272     | 0        ||
 || tiT          | 4108      | 0        ||
 || wifi         | 19816     | 0        ||

 系统的内存使用率统计:
 || 少可用DRAM | 小可用 IRAM ||
 || 213712       | 62920        ||
从上面的日志可以看出,我们获得了大约 9KB 的额外 DRAM 供应用程序使用。对总 IRAM 的影响(减少)是因为我们将关键代码路径从网络子系统移到了该区域。
系统特定(优化)
使用 RTC(快速)内存(仅单核)
从前述的内存分解图可以看到,有一个有用的 8KB RTC 快速内存(相当快),它一直处于空闲状态并且没有被充分利用。ESP-IDF 很快将具有启用 RTC 快速内存以进行动态分配的功能。该选项存在于单核配置中,因为 RTC 快速内存只能由 PRO CPU 访问。
已经确定的是 RTC 快速内存将用作第一个动态存储范围,并且大多数启动,预调度程序代码/服务都将占据该范围。这样就不会因为内存的时钟速度(稍微慢一点)而影响应用程序代码的性能。
由于对该区域没有访问限制,因此从功能上我们以后将其称为 DRAM 。
让我们使用此功能重新运行我们的应用程序并收集内存数据。
应用程序中启用相应的配置:
#将RTC内存添加到系统堆中
 CONFIG_ESP32_ALLOW_RTC_FAST_MEM_AS_HEAP = y
重新运行应用程序以更新堆利用率统计信息,如下所示:
任务的内存使用率统计:
 || 任务         | 峰值 DRAM | 峰值 IRAM||
 || aws_iot_task | 26272     | 0 ||
 || tiT          | 4096      | 0 ||
 || wifi         | 19536     | 0 ||

 系统的内存使用率统计:
 || 少可用 DRAM | 小可用 IRAM ||
 || 221792        | 62892         ||
从上面的日志可以看出,我们获得了 8KB 的额外 DRAM 供应用程序使用。
使用指令存储器(IRAM,仅单核)
​到目前为止,我们已经看到了允许终端应用程序从 DRAM(数据内存)区域获得更多内存的不同配置选项。沿着类似的路线继续,应该注意到的是 IRAM(指令内存)还剩余充足的空间,但是由于 32 位地址和大小对齐的限制,它不能被用作通用目的。
如果访问(加载或存储)来自 IRAM 区域且大小未按字对齐,则处理器将生成 LoadStoreError(3) exception 异常;
如果访问(加载或存储)来自 IRAM 区域且地址未字对齐,则处理器将生成 LoadStoreAlignmentError(9) exception 异常。
在 ESP-IDF 的此特殊特性中,上面提到的未对齐访问异常已通过相应的异常处理程序进行了修复,因此程序能够正确的执行。但是,对于每个(受限制的)加载或存储操作,这些异常处理程序多可能消耗 167 个 CPU 周期。因此,使用此功能时可能会导致性能显著下降(与 DRAM 访问相比)。
可以按以下方式使用此内存区域:
先通过使用堆分配器中称为MALLOC_CAP_IRAM_8BIT 的 API,以使用特殊功能区域;
其次使用提供的链接器属性 IRAM_DATA_ATTR 和 IRAM_BSS_ATTR 将 DATA/BSS 重定向到此区域。
局限性:
该存储区预不能用于 DMA 目的;
该内存区域不能用于分配任务堆栈。
​在讨论该内存区域的使用以及理解性能损失的同时,发现 TLS IN/OUT(根据我们的配置值缓冲区可以是 16KB/2KB)缓冲区是从该区域分配的潜在候选对象之一。在其中一项实验中,将 TLS IN/OUT 缓冲区移至 IRAM 后,通过 TLS 连接传输 1 MB 文件的时间从约 3 秒增加到 5.2 秒。
也可以将所有 TLS 分配重定向到 IRAM 区域,但这可能会对性能产生更大的影响,因此此功能仅重定向大小大于或等于 TLS IN 或 OUT 小缓冲区的缓冲区(在我们的示例中,阈值为 2 KB)。
让我们使用此功能重新运行并收集内存数据
应用程序中启用相应的配置:
#允许将 IRAM 用作 8 位可访问区域
 CONFIG_ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY = y
 CONFIG_MBEDTLS_IRAM_8BIT_MEM_ALLOC = y
重新运行应用程序中更新的堆利用率统计信息,如下所示:
任务的内存使用率统计:
 || 任务         | 峰值 DRAM | 峰值 IRAM||
 || aws_iot_task | 17960     | 21216    ||
 || tiT          | 3640      | 0        ||
 || wifi         | 19536     | 0        ||

系统的内存使用率统计:
 || 少可用DRAM | 小可用IRAM ||
 || 228252       | 40432        ||
从上面的日志可以看出,我们为应用程序又增加了约 7KB 的额外 DRAM 。请注意,即使我们已将所有超过 2KB 阈值的分配重定向到 IRAM ,但 DRAM 区域(另一个局部大值)仍发生许多较小的(同时发生的)分配,因此有效增益低于实际值。如果附加的性能影响是可以接受的,则可以将所有 TLS 分配重定向到 IRAM ,并从 DRAM 区域获得至少 10-12KB 的内存。
总结
通过配置选项对各种功能进行选择从而实现对应用程序的完全控制,是 ESP-IDF 的重要功能之一;
通过上述实践,我们系统地评估了乐鑫科技代理公司蓝牙wifi二合一模块ESP-IDF 中的各种特性和配置选项,从而将终端应用程序的 DRAM (快的内存)预算提高了63 KB (小空闲 DRAM 大小从 ~160KB 增加到 ~223KB);
其中一些配置选项仅适用于单核配置(在标题本身中已进行了标记),但即使在双核配置中,其余选项也可用于节省内存;
对性能无严格要求的模块(如终端应用程序的日志记录和诊断),还可以将指令存储器(IRAM)用作 8 位可访问区域;
一旦实现了所需的系统特性后,建议禁用上面实践中使用的某些调试功能,例如堆任务跟踪,以减少元数据开销(并进一步增加内存预算)。
引用
修改后的 subscription_publish 示例以及终 sdkconfig.defaults 文件可以在 这里 找到;
这个应用程序应该基于此处 ESP-IDF 副本和特性分支来构建。

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%,抑制冰箱异味,保持食材新鲜。不仅如此,这个草本滤芯可以更快、更方便、更无忧地拆卸。家里有冰箱,开始健康保鲜的生活。 目前,冰箱屏幕唤醒微波雷达传感器正在继续推动家庭物联网的快速普及,相信在不久的将来,智能家电将成为互动终端。
wifi ble模块乐鑫C3报价乐鑫芯片代理商Nuclei Studio 开发环境,Nuclei Studio 是基于 MCU Eclipse IDE 开发的一款针对芯来 RISC-V 处理器内核产品的集成开发环境工具,它继承了 Eclipse IDE 平台的优点。wifi ble模块乐鑫C3报价乐鑫芯片代理商Eclipse 平台采用开放式源代码模式运作,并提供公共许可证、免费源代码以及全球发布权利Eclipse 本身只是一个框架平台,除了 Eclipse 平台的运行内核之外,其所有功能均位于不同的插件中。开发人员既可通过 Eclipse 项目的不同插件来扩展平台功能,也可利用其他开发人员提供的插件,从而实现大程度的集成商业 IDE 软件比如 Keil 和IAR 在国内非常深入人心,很多嵌入式软件工程均对其非常熟悉。但是商业 IDE 软件需要授权并且要收费,在 ARM MCU 世界,wifi ble模块乐鑫C3报价乐鑫芯片代理商大MCU厂商也会推出自己的免费 IDE 供用户使用,譬如 NXP的 LPCXpressoSTM32 Cube IDE等。这些IDE 均是基于开源的 Eclipse 框架,Eclipse 几乎成了源免费 MCUIDE的主流选择。 为了方便用户快速上手使用,芯来公司推荐使用预先整理好的 Nuclei StudioIDE软件压缩包。芯来公司已将该软件的压缩包上传至公司网站,有 Windows 和Linux 两个版本。 Nuclei Studio 安装 wifi ble模块乐鑫C3报价乐鑫芯片代理商芯来集成开发环境(IDE)Nuclei Studio 压缩包解压后包含若干个文件,下面分别进行介绍。 1、Nuclei Studio 软件包:该软件包中包含了 Nuclei Studio IDE 的软件,具体版本以及文件名可能会不断更新。 2、HBird_Driver.exe:此文件为芯来蜂鸟调试器的 USB 驱动安装文件,调试时需要安装此驱动使其 USB 能够被识别,如果要使用J-Link 则需要另外安装驱动程序。 3、Java 安装文件:jdk-8u512-windows-x64.exe。 4、ToolChain:工具链配置工具。 5、UartAssist.exe:串口调试助手(当然也可以使用其他串口助手)。Eclipse 是基于Java 平台运行的环境,wifi ble模块乐鑫C3报价乐鑫芯片代理商为了能够使用 Nuclei Studio,必须安装 JDK。如果用户的 Windows 平台上尚未配置 Java 安装环境,则需要双击安装解压文件包中的jdk8ul52-windows-x64.exe,根据安装向导的提示完成 JDK 安装过程。Nuclei Studio软件本身无须安装,安装好 Java 平台运行环境后,直接单击 Nuclei Studio 文件夹中eclipsec.exe 即可启动 Nuclei Studio。
esp32 c3蓝牙芯片模组上海乐鑫代理商RISC-V处理器内核工具链,自RISC-V 架构诞生以来,市场上已有数十个版本的 RISC-V 内核和 SoC 芯片它们中的一部分是开源免费的,而商业公司开发的 RISC-V 处理器内核和平台是需要商业授权的。某些商业公司开发用于内部使用的 RISC-V 内核,但也可以开源运作。esp32 c3蓝牙芯片模组上海乐鑫代理商介绍到西部数据的SweRV架构(RV32IMC)是 RISC-V 内核处理器的典型代表,它是一个32 bit 顺序执行指令架构,具有双向超标量设计和9级流水线,采用28 nm工艺技术实现,运行频率高达 1.8 GHz,可提供 4.9 CoreMark/MHz 的性能,略高于ARM的 Cortex A15,已经在西部数据的 SSD 和HDD 控制器上使用,SweRV 项目是一个开源项目(Chip Alliance)。 典型的开源 RISC-V内核有 Roket Core,它是加州大学伯克利分校开发的一个经典的 RV64 设计。伯克利分校还开发了一个 BOOM Core,它与 Rocket Core 不同的是面向更高的性能。苏黎世理华体育会官网学(ETH Zurich)开发的 Zero-riscy,是经典的RV32 设计。esp32 c3蓝牙芯片模组上海乐鑫代理商介绍到苏黎世理华体育会官网学还开发了另外一款 RISC-V R15CY Core,可配置成RV32E,面向的是超低功耗、超小芯片面积的应用场景。由 Clifford Wolf 开发的RISC-V Core-Pico RV32,其内核重点在于追求面积和 CPU 频率的优化。 开源的 RISC-V 内核非常适用于研究和教学,但用于商业芯片设计还有许多工作要做。SiFive(美国赛科技)由 Yunsup Lee 创立,他也是 RISC-V 的创始人之一。2017 年SiFive 公司发布 RISC-V 内核、SC 平台家族,以及相关支持软件和开发板。esp32 c3蓝牙芯片模组上海乐鑫代理商介绍到在这些芯片中,包括采用 28 nm 制造技术,支持 Linux 操作系统的 64 位多核CPU U500,以及采用180 nm 制造技术的多外设低成本 IOT 处理器内核 E300开发 RISC-V处理器内核的厂商还包括 Codasip、Syntacore、T-Head(平头哥半导体)、Andes (晶芯科技),以及创业公司芯来科技等。 RISC-V GNU 工具链 RISC-V GNU工具链包括 riscv gcc 编译器、riscv binutils 链接器汇编器、riscv gdb GDB调试工具以及 OpenOCD 。 OpenOCD(Open 0n-Chip Debugger,开源片上调试器)是一款开源的调试软件,它提供针对人式设备的调试、系统编程和边界扫描功能。esp32 c3蓝牙芯片模组上海乐鑫代理商介绍到OpenOCD需要硬件仿真器来配合完成调试。例如 J-Link或者CMSIS-DAP等。OpenOCD内置了 GDB server模块,可以通过 GDB命令来调试硬件。 目前,市场上支持 RISC-V 处理器开源的 GNU 工具软件有 SiFive Freedo Sudio、AndesSight 和 Nuclei tudio IDE。这些软件针对自家企业 RISC-V 处内核开发和优化,集成开发环境基于开源的 Eclipse。 如果开发者有兴趣,完全可以自己下载以下几个开源软件搭建一个 RISC-V发环境。esp32 c3蓝牙芯片模组上海乐鑫代理商介绍到这些软件是jdk-8ul01-windows-x64.exe、Eclipse IDE for C/C++ develoners,GNU MCU Eclipse Windows Build Tools、OpenOCD 以及 risev32-unknown-elf-gcc。
GD32E230C8T6 stm32 gd32兆易芯片代理商GD5F系列SPI NAND Flash,兆易创新38nmGD5FSPINANDFlash产品覆盖1Gb~4Gb容量,满足AEC-Q100标准,兼具性能和成本优势,可为整车厂或整车厂或Tire1模块厂提供高质量的汽车级存储解决方案,行业领先的半导体设备供应商兆易创新GigaDevice(股票代码603986)宣布其全国产化38nmSPINANDFlash——GD32E230C8T6 stm32 gd32兆易芯片代理商GD5F整个系列已经通过AEC-Q100辆车规级认证。该系列包括GD5F1GQ5/GD5F2GQ5/GD5F4GQ6产品,覆盖1Gb~4Gb容量,从设计开发、制造到包装测试,采用国内供应链,在很大程度上填补国内大容量汽车存储空白,全面进入汽车应用领域,兆易创新具有强大的本地化支持和快速客户响应能力,加快汽车应用本地化。 目前,汽车电气化和智能化正处于快速发展的趋势,激发了汽车厂商对大容量、高可靠性存储解决方案的需求。汽车存储芯片作为存储代码、数据和网络协议的载体,在车载应用中发挥着越来越关键的作用。GD32E230C8T6 stm32 gd32兆易芯片代理商GD5F系列SPINANDFlash提供了1Gb~4Gb选择,在现有的GD25SPINORFlash在车载产品的基础上进一步扩大容量,可作为车载网关,DVR,智能驾舱,Tbox等应用程序提供大容量、高性价比的解决方案。 随着对车载电子复杂性和空间紧凑性的需求越来越大,“少引脚、小包装”的芯片也逐渐受到车厂的青睐。GD32E230C8T6 stm32 gd32兆易芯片代理商GD5F系列SPINANDFlash芯片使用成熟的38nm制造工艺,采用WSON88mmx6mm少引脚,小包装,在狭小空间内实现大容量选择;内置ECC纠错模块,在保留NAND成本优势的前提下,大大提高了产品的可靠性;在-40℃~105℃在宽温范围内,实现高达10万次的擦写性能。 兆易创新汽车产品事业部执行主任何芳女士说:“随着汽车产业智能化、网络化的演变,以及汽车产业的发展,以及SOTA(软件在线升级),MaaS(旅游就是服务)可以实现,市场对车载存储的程序和处理的数据量提出了更多的新需求。兆易创新自2014年开始布局汽车行业,凭借多年的经验和积累,拥有38nmGD5FSPINANDFlash通过AEC-Q100辆车级认证,实现整个产业链的国内闭环。未来,我们将继续关注汽车行业的需求,关注行业的增量市场,了解细分市场的客户需求,继续投资产品可靠性、优化升级,为市场提供更好的产品和服务。” 目前,GD32E230C8T6 stm32 gd32兆易芯片代理商GD5F全系列SPINANDFlash均已通过AEC-Q100车规级认证,并在其久经验证的车规级认证GD25SPINORFlash在此基础上,形成了有效的扩展。在Flash存储器领域,兆易创新实现了从Flash存储器领域的实现。SPINORFlash到SPINANDFlash车辆标准产品的全面布局为车辆应用的本地化提供了丰富多样的选择,这也极大地突出了兆易创新在汽车领域的持续投资和创新。 GD32E230C8T6 stm32 gd32兆易芯片代理商GD5FSPINANDFlash和GD25SPINORFlash车辆规格产品已批量生产,客户可联系销售代表或授权代理了解相关订购信息。
上一页
1
2
...
109

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

邮箱:Sales@hlccgs.com

版权所有©华体育会官网  华体育会(中国) - app官方下载      华体育会官网科技微波雷达wifi模块网站地图