63 Matching Annotations
  1. Last 7 days
    1. 当 ADC 应用中遇到上述类似现象,可以调节 MR 电压,切换 ADC 供电为数字系统,不用内部 LDO 供电方式,能有效改善 ADC 工作的稳定性

      可以试试

    Annotators

  2. Mar 2025
    1. The trickle charge voltage threshold can be set to 60% or 70%of 4.2V/cell by TRICKLE_SET bi

      涓流充电电压设置

    Annotators

  3. Feb 2025
    1. 外部中断 GPIO 映射

      中断和引脚的映射关系

    Annotators

    1. When EN_OTG bit is 0, the IC works in charging mode. Thecurrent flows from VBUS to VBAT to charge the battery cells.

      要看下这个bit在哪里设置

    1. Figure 25 illustrates a flow chart describing the EEPROM programming sequence.

    2. 00: Continuous conversion (CC)01: Shutdown (SD)

      这两个模式可以在eeprom配置,需要看看怎么配置的。

    Annotators

  4. Jan 2025
    1. 如果用户程序需要在主存储区和其它存储区之间跳转时,必须关闭 iCache并且将 iCache 数据清零,否者会产生指令获取错误。

      这个值得注意

    2. 支持相联方式: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;
      

      }

    3. 主存储区最大为 64KB,也称作主闪存存储器,包含 32 个 Page,用于用户程序的存放和运行,以及数据存储。

      xip

    Annotators

    1. 在启动时,可以通过BOOT0引脚和选项字节BOOT配置(USER2)来选择在复位后的启动模式:

      没说怎么配置啊

    Annotators

    1. 4KB 嵌入式加密 Flash,16KB SRAM

      应该不适合跑os,内存太小

    Annotators

  5. Dec 2024
    1. Wrap Bit Definition

      Wrap Bit 地址的核心功能是定义当设备读取到一个特定的边界(如页或块边界)时,是否以及如何自动返回到该边界的起点继续读取。,在页内访问特定范围的数据时,Wrap Bit 确保数据读取操作保持在该范围内。

    2. Read from Cache x4 IO (6BH) Sequence Diagram

      命令和地址是1dataline的,与qspi的差别

    3. 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

    Annotators

    1. 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?

  6. Nov 2024
    1. 用 adiff 工具制作差分包,是先把压缩区解压缩,然后对解压缩的数据进行差分计算,而不是直接对压缩区进行差分计算。

      压缩前差分和压缩后差分的处理差异

    1. 具有极致成本特征的Cat.1模组在便携式Dongle、MiFi等共享网络终端大量出货,因此该领域今年出货量迅速达到1000万。

      只能海外吧

  7. Oct 2024
    1. 请注意,for 循环只迭代到 4。现在展示使用 1..=5 语法表示一个包含边界的范围。

      有点特别

  8. Sep 2024
    1. USB主机一旦检测到这样的变化就能确定有设备连接

      主机测量数据线电压检测设备连接

    2. VBUS

      设备通过vbus电压检查

    3. 就是让发送者先发送一个同步头,内容是8'b01010101(NRZI编码后的)的方波,接收者通过这个同步头计算出发送者的频率,从而使得接收方和发送方的采样频率达到同步,此时就可以采样得到实际的数据。

      还是脱离不了硬件支持,软件模拟会出问题

    4. 这是因为对于高速设备而言,时钟线和数据线同步的微小偏差,就会造成接收端有时无法满足数据采样的建立时间,进而导致接收到的数据出错。

      看看他是是怎么解决的,或许自定义总线协议的时候可以参考

    5. 在高速模式下,当接收端检测到D+信号线的电压比D-信号线的电压高360mV时,表示差分信号“1”;当D-信号线的电压比D+信号线的电压高360mV时,表示差分信号“0”。

      判断电压居然不同

    Annotators

  9. Aug 2024
    1. OTA 数据分区的容量是 2 个 flash 扇区的大小(0x2000 字节),防止写入时电源故障引发问题。两个扇区单独擦除、写入匹配数据,若存在不一致,则用计数器字段判定哪个扇区为最新数据。

      注意加上计数器的作用。

    1. 下溢表示在读取内存时,读取的数据超出了所分配内存的范围,读取了未分配的内存区域的数据

      读的时候怎么检查的,得看看代码

    2. 头 canary 字的值为 0xABBA1234 (按字节顺序为 3412BAAB),尾 canary 字的值为 0xBAAD5678 (按字节顺序为 7856ADBA)。

      取值有何讲究?

    1. 下表展示了在不同配置下,用 Mbed TLS 作为 SSL/TLS 库运行示例 protocols/https_request (启用服务器验证)时,内存的实际使用情况。

      乐鑫的tls 内存优化方案

    1. 一切顺利后,会擦除ota的前4K,以防下次重启再次升级

      升级失败也得擦除,不然下次重启又进入升级检验

    2. 1.0.13版本后,增加支持lzma,683K 可压缩到 401K

      lzma 压缩最小

    Annotators

  10. Jul 2024
    1. 這裡一樣遵循電子學中可以解決 70% 以上問題的歐姆定律:V = IR,或者也可以寫成 I = V/R

      要么调整负载,要么调整电压

    Annotators

    1. device

      新版本位置变了

    2. vmlinux.lds

      新版本有不同,还没确定放哪去了

    3. 我们的 subsys_initcall 宏便是将指定的函数指针放在了.initcall4.init 子节。其他的比如core_initcall 将函数指针放在.initcall1.init 子节,device_initcall 将函数指针放在了.initcall6.init 子节等,都可以从 include/linux/init.h 文件找到它们的定义。各个子节的顺序是确定的,即先调用.initcall1.init 中的函数指针,再调用.initcall2.init 中的函数指针等。__init 修饰的初始化函数在内核初始化过程中调用的顺序和.initcall.init 节里函数指针的顺序有关,不同的初始化函数被放在不同的子节中,因此,也就决定了它们的调用顺序。

      控制代码的调用顺序,这个方式值得学习,装波13

    4. 那就是 Kconfig、Makefile、README

      看代码先看这几个文件

    5. 哥写的不是 USB,是寂寞

      所以,有些人寂寞的时候就写书?

    Annotators

  11. Jun 2024
    1. 备进入 SoftAP 配网时,和家亲 APP 周期性扫描符合设备 SoftAP(设备可通过软件模拟启动一个类似路由器的 Wi-Fi 热点,该热点名称由杭研规定)特征的热点

      softap 配网的设备发现方式,通过ssid名称

  12. Mar 2024
    1. 在实现该接口时有线形态设备应在获取合法 IP 地址前阻塞该接口

      wifi 也应该阻塞一段时间吧?

    Annotators

    1. Layers 1 to 4 not defined)

      应用协议

    Annotators

    1. 若是 TRSSI 阈值范围内的设备,智能组网终端则下发入网信息(热点信息中 password 采用 AES-128 进行加密),通知设备连接工作热点;若不是 TRSSI 阈值范围内的设备,或智能组网终端获取信号强度阈值异常,则不下发入网信息

      借助已经配网的设备配网,ap配网

    2. 自有生态设备

      相当于有一个网关做代理,终端设备没有注册、上线流程

  13. Feb 2024
  14. download.mikroe.com download.mikroe.com
    1. 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

      看图是线性关系

    1. 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.

      小文件的存储开销大

    2. The main downside is performance

      日志型文件系统存在性能问题

    3. we have logging filesystems, such as JFFS, YAFFS, and SPIFFS,

      日志文件系统,掉电保护的实现方式之一

    4. such as FAT and ext2.

      没有掉电保护和磨损均衡

  15. Jan 2024
    1. Manufacturer and Device Identification

      MID与XM25QU32C一样,还有看其他参数是否有差异

    Annotators

    1. b, rb+, wb, wb+, ab, ab+

      fdi nvm只支持这几个权限,仅w权限会打开失败。老坑了。

    Annotators

    1. 设备注册singleSert

      测试使用get方法, https 的证书?

    2. 原有的通道为星图,新的通道为阿里云微消息队列,当发现设备的 mac 地址在认证表中时,使用阿里云通道下载数据,否则使用星图通道

      要增加新的消息通道下发消息处理,同时还要兼容旧的。这里需要对业务功能熟悉才能搞。

    3. 0不需要重新生成设备证书、1需要重新生成设备证书

      什么时候需要重新生成证书?

    4. tp合法性校验字段,根据指定加密盐(salt)生成

      签名算法没给出

    Annotators

    1. Up to eight pins can be selected from all GPIO pins on ports 0 and 1 as edge-sensitive or level-sensitiveinterrupt requests

      有些脚不可以?

    Annotators

    1. Use another master edge for sampling data.

      在另一个时钟边沿采样。有些spi控制器可以延迟半个时钟周期或者1个时钟周期采样。

    2. 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.

      另一种解决方案是降频

    3. 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也难以做到。

    4. TSamp

      master 采样的可用时间

    5. tprop_data

      slave数据输出到master的延迟

    6. tSSCLKtoOut

      slave 时钟到数据输出的延迟

    7. tprop_SCLK

      master 到 slave 的时钟 延迟

    8. TSamp = TSCLK / 2 - tprop_SCLK - tSSCLKtoOut - tprop_data

      采样时间的计算