- Last 7 days
-
Local file Local file
-
当 ADC 应用中遇到上述类似现象,可以调节 MR 电压,切换 ADC 供电为数字系统,不用内部 LDO 供电方式,能有效改善 ADC 工作的稳定性
可以试试
-
- Mar 2025
-
Local file Local file
-
The trickle charge voltage threshold can be set to 60% or 70%of 4.2V/cell by TRICKLE_SET bi
涓流充电电压设置
-
- Feb 2025
-
Local file Local file
-
外部中断 GPIO 映射
中断和引脚的映射关系
-
-
cn.southchip.com cn.southchip.com
-
When EN_OTG bit is 0, the IC works in charging mode. Thecurrent flows from VBUS to VBAT to charge the battery cells.
要看下这个bit在哪里设置
-
-
Local file Local file
-
Figure 25 illustrates a flow chart describing the EEPROM programming sequence.
有
-
00: Continuous conversion (CC)01: Shutdown (SD)
这两个模式可以在eeprom配置,需要看看怎么配置的。
-
- Jan 2025
-
Local file Local file
-
如果用户程序需要在主存储区和其它存储区之间跳转时,必须关闭 iCache并且将 iCache 数据清零,否者会产生指令获取错误。
这个值得注意
-
支持相联方式:4WAY
将缓存分为多个组(Set),每组中有固定数量的缓存块(Block)。一个内存地址只能映射到特定的组,但可以存储在该组内的任意块中 而其中的4-way 相连方式(4-way set associative)是一种缓存组织方式。 4-way 相连方式是一种权衡性能与成本的缓存设计方案,适用于大多数处理器的 L1 缓存(如 ICache 或 DCache)。它在直接映射缓存和全相连缓存之间提供了折中点,既提升了缓存命中率,又保持了相对较低的硬件复杂性
include <stdio.h>
include <stdlib.h>
include <stdbool.h>
define CACHE_SIZE 16 // 缓存总块数
define BLOCK_SIZE 4 // 每组内的块数(4-way)
define NUM_SETS (CACHE_SIZE / BLOCK_SIZE) // 组数
typedef struct { int valid; // 有效位 int tag; // 地址标签 int last_used; // LRU 计数 } CacheBlock;
// 定义缓存(二维数组,每组包含多个块) CacheBlock cache[NUM_SETS][BLOCK_SIZE];
// 全局计数器用于 LRU 替换策略 int global_time = 0;
// 计算组索引 int get_set_index(int address) { return address % NUM_SETS; // 简单取模 }
// 计算标签 int get_tag(int address) { return address / NUM_SETS; // 地址除以组数 }
// 缓存查找和替换 bool access_cache(int address) { int set_index = get_set_index(address); int tag = get_tag(address);
// 查找对应的组 for (int i = 0; i < BLOCK_SIZE; i++) { if (cache[set_index][i].valid && cache[set_index][i].tag == tag) { // 缓存命中,更新 LRU cache[set_index][i].last_used = global_time++; return true; // 命中 } } // 缓存未命中,需要替换 // 找到需要替换的块(使用 LRU 策略) int lru_index = 0; for (int i = 1; i < BLOCK_SIZE; i++) { if (cache[set_index][i].last_used < cache[set_index][lru_index].last_used) { lru_index = i; } } // 替换 LRU 块 cache[set_index][lru_index].valid = 1; cache[set_index][lru_index].tag = tag; cache[set_index][lru_index].last_used = global_time++; return false; // 未命中
}
int main() { // 初始化缓存 for (int i = 0; i < NUM_SETS; i++) { for (int j = 0; j < BLOCK_SIZE; j++) { cache[i][j].valid = 0; cache[i][j].tag = -1; cache[i][j].last_used = 0; } }
// 模拟访问 int addresses[] = {0, 0, 8, 12,4, 8, 20, 12, 4, 32}; int n = sizeof(addresses) / sizeof(addresses[0]); for (int i = 0; i < n; i++) { int address = addresses[i]; if (access_cache(address)) { printf("Address %d: Cache HIT\n", address); } else { printf("Address %d: Cache MISS\n", address); } } return 0;
}
-
主存储区最大为 64KB,也称作主闪存存储器,包含 32 个 Page,用于用户程序的存放和运行,以及数据存储。
xip
-
-
Local file Local file
-
在启动时,可以通过BOOT0引脚和选项字节BOOT配置(USER2)来选择在复位后的启动模式:
没说怎么配置啊
-
-
Local file Local file
-
4KB 嵌入式加密 Flash,16KB SRAM
应该不适合跑os,内存太小
-
- Dec 2024
-
Local file Local file
-
Wrap Bit Definition
Wrap Bit 地址的核心功能是定义当设备读取到一个特定的边界(如页或块边界)时,是否以及如何自动返回到该边界的起点继续读取。,在页内访问特定范围的数据时,Wrap Bit 确保数据读取操作保持在该范围内。
-
Read from Cache x4 IO (6BH) Sequence Diagram
命令和地址是1dataline的,与qspi的差别
-
Each bitin 16-bit column address and the followed dummy byte will be latched in during the raising edge of SCLKthrough these four input pins
地址后面有个dummy byte
-
-
-
he burst is defined on the OCTOSPI side by programming the FIFO threshold FTHRES[4:0] in OCTOSPI_CRwith a 1- to 32-byte burst size
这里要配置32 bit?
-
- Nov 2024
-
customsupport.asrmicro.com customsupport.asrmicro.com
-
用 adiff 工具制作差分包,是先把压缩区解压缩,然后对解压缩的数据进行差分计算,而不是直接对压缩区进行差分计算。
压缩前差分和压缩后差分的处理差异
-
-
mp.weixin.qq.com mp.weixin.qq.com
-
具有极致成本特征的Cat.1模组在便携式Dongle、MiFi等共享网络终端大量出货,因此该领域今年出货量迅速达到1000万。
只能海外吧
-
- Oct 2024
-
google.github.io google.github.io
-
请注意,for 循环只迭代到 4。现在展示使用 1..=5 语法表示一个包含边界的范围。
有点特别
-
- Sep 2024
-
Local file Local file
-
USB主机一旦检测到这样的变化就能确定有设备连接
主机测量数据线电压检测设备连接
-
VBUS
设备通过vbus电压检查
-
就是让发送者先发送一个同步头,内容是8'b01010101(NRZI编码后的)的方波,接收者通过这个同步头计算出发送者的频率,从而使得接收方和发送方的采样频率达到同步,此时就可以采样得到实际的数据。
还是脱离不了硬件支持,软件模拟会出问题
-
这是因为对于高速设备而言,时钟线和数据线同步的微小偏差,就会造成接收端有时无法满足数据采样的建立时间,进而导致接收到的数据出错。
看看他是是怎么解决的,或许自定义总线协议的时候可以参考
-
在高速模式下,当接收端检测到D+信号线的电压比D-信号线的电压高360mV时,表示差分信号“1”;当D-信号线的电压比D+信号线的电压高360mV时,表示差分信号“0”。
判断电压居然不同
-
- Aug 2024
-
docs.espressif.com docs.espressif.com
-
OTA 数据分区的容量是 2 个 flash 扇区的大小(0x2000 字节),防止写入时电源故障引发问题。两个扇区单独擦除、写入匹配数据,若存在不一致,则用计数器字段判定哪个扇区为最新数据。
注意加上计数器的作用。
-
-
docs.espressif.com docs.espressif.com
-
下溢表示在读取内存时,读取的数据超出了所分配内存的范围,读取了未分配的内存区域的数据
读的时候怎么检查的,得看看代码
-
头 canary 字的值为 0xABBA1234 (按字节顺序为 3412BAAB),尾 canary 字的值为 0xBAAD5678 (按字节顺序为 7856ADBA)。
取值有何讲究?
-
-
docs.espressif.com docs.espressif.com
-
下表展示了在不同配置下,用 Mbed TLS 作为 SSL/TLS 库运行示例 protocols/https_request (启用服务器验证)时,内存的实际使用情况。
乐鑫的tls 内存优化方案
-
-
-
Comparison of wolfSSL and mbedTLS
看上去wolfssl 也不错
-
-
Local file Local file
-
一切顺利后,会擦除ota的前4K,以防下次重启再次升级
升级失败也得擦除,不然下次重启又进入升级检验
-
1.0.13版本后,增加支持lzma,683K 可压缩到 401K
lzma 压缩最小
-
- Jul 2024
-
Local file Local file
-
這裡一樣遵循電子學中可以解決 70% 以上問題的歐姆定律:V = IR,或者也可以寫成 I = V/R
要么调整负载,要么调整电压
-
-
-
device
新版本位置变了
-
vmlinux.lds
新版本有不同,还没确定放哪去了
-
我们的 subsys_initcall 宏便是将指定的函数指针放在了.initcall4.init 子节。其他的比如core_initcall 将函数指针放在.initcall1.init 子节,device_initcall 将函数指针放在了.initcall6.init 子节等,都可以从 include/linux/init.h 文件找到它们的定义。各个子节的顺序是确定的,即先调用.initcall1.init 中的函数指针,再调用.initcall2.init 中的函数指针等。__init 修饰的初始化函数在内核初始化过程中调用的顺序和.initcall.init 节里函数指针的顺序有关,不同的初始化函数被放在不同的子节中,因此,也就决定了它们的调用顺序。
控制代码的调用顺序,这个方式值得学习,装波13
-
那就是 Kconfig、Makefile、README
看代码先看这几个文件
-
哥写的不是 USB,是寂寞
所以,有些人寂寞的时候就写书?
-
- Jun 2024
-
oss.komect.com oss.komect.com
-
备进入 SoftAP 配网时,和家亲 APP 周期性扫描符合设备 SoftAP(设备可通过软件模拟启动一个类似路由器的 Wi-Fi 热点,该热点名称由杭研规定)特征的热点
softap 配网的设备发现方式,通过ssid名称
-
- Mar 2024
-
Local file Local file设计方案模板1
-
在实现该接口时有线形态设备应在获取合法 IP 地址前阻塞该接口
wifi 也应该阻塞一段时间吧?
-
-
Local file Local file
-
Layers 1 to 4 not defined)
应用协议
-
-
oss.komect.com oss.komect.com
-
若是 TRSSI 阈值范围内的设备,智能组网终端则下发入网信息(热点信息中 password 采用 AES-128 进行加密),通知设备连接工作热点;若不是 TRSSI 阈值范围内的设备,或智能组网终端获取信号强度阈值异常,则不下发入网信息
借助已经配网的设备配网,ap配网
-
自有生态设备
相当于有一个网关做代理,终端设备没有注册、上线流程
-
- Feb 2024
-
stackoverflow.com stackoverflow.com
-
For anyone else having the same issue with the integrity, adding the following code to my config.yml file solved the problem.
这个有效
-
-
download.mikroe.com download.mikroe.comMLX753051
-
Figure 3Relative Spectral Response00.20.40.60.811.2350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050Wave Length [nm]Relative Spectral Response
看图是线性关系
-
-
-
Consider a small 4-byte file. With a two block metadata-pair and one block for the CTZ skip-list, we find ourselves using a full 3 blocks. On most NOR flash with 4 KiB blocks, this is 12 KiB of overhead. A ridiculous 3072x increase.
小文件的存储开销大
-
The main downside is performance
日志型文件系统存在性能问题
-
we have logging filesystems, such as JFFS, YAFFS, and SPIFFS,
日志文件系统,掉电保护的实现方式之一
-
such as FAT and ext2.
没有掉电保护和磨损均衡
-
- Jan 2024
-
docs.zephyrproject.org docs.zephyrproject.org
-
Bluetooth Shell
rw612 和这个文档基本一样
-
-
Local file Local file
-
Manufacturer and Device Identification
MID与XM25QU32C一样,还有看其他参数是否有差异
-
-
-
b, rb+, wb, wb+, ab, ab+
fdi nvm只支持这几个权限,仅w权限会打开失败。老坑了。
-
-
Local file Local file
-
设备注册singleSert
测试使用get方法, https 的证书?
-
原有的通道为星图,新的通道为阿里云微消息队列,当发现设备的 mac 地址在认证表中时,使用阿里云通道下载数据,否则使用星图通道
要增加新的消息通道下发消息处理,同时还要兼容旧的。这里需要对业务功能熟悉才能搞。
-
0不需要重新生成设备证书、1需要重新生成设备证书
什么时候需要重新生成证书?
-
tp合法性校验字段,根据指定加密盐(salt)生成
签名算法没给出
-
-
-
Up to eight pins can be selected from all GPIO pins on ports 0 and 1 as edge-sensitive or level-sensitiveinterrupt requests
有些脚不可以?
-
-
www.byteparadigm.com www.byteparadigm.com
-
Use another master edge for sampling data.
在另一个时钟边沿采样。有些spi控制器可以延迟半个时钟周期或者1个时钟周期采样。
-
This means that the SCLK frequency can be at max: 1/ 18.56 ns = 53.87 MHz if a 'pure SPI' protocol has to beused with the provided system.
另一种解决方案是降频
-
Shorten the connections and find a Slave with a shorter clock to output delay. However such a 'fasterslave' may simply not be available. Using shorter or 'faster' connections will also have a very limited impactbecause this is the smallest share of the 'missing' timing budget
缩短二者的电路连接影响甚微。在这种频率下能够快速响应的slave也难以做到。
-
TSamp
master 采样的可用时间
-
tprop_data
slave数据输出到master的延迟
-
tSSCLKtoOut
slave 时钟到数据输出的延迟
-
tprop_SCLK
master 到 slave 的时钟 延迟
-
TSamp = TSCLK / 2 - tprop_SCLK - tSSCLKtoOut - tprop_data
采样时间的计算
-