数据结构
发表于|更新于|rt-thread
数据结构
文章作者: Liya Huang
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 wdfk-prog的个人博客!
相关推荐

2025-10-03
fatfs
fatfs 因此应用程序应尽可能以大块的形式写入数据。理想的写入块大小和对齐方式是扇区大小,簇大小最好。当然,应用程序和存储设备之间的所有层都必须考虑多扇区写入,但大多数开源存储卡驱动程序都缺乏这一点。不要将多扇区写入请求拆分为单扇区写入事务,否则写入吞吐量会变差。 努力实现扇区对齐的读/写访问可以消除缓冲数据传输,从而提高读/写性能。除此之外,在 tiny 配置下,缓存的 FAT 数据不会被文件数据传输刷新,因此它可以以较小的内存占用实现与非 tiny 配置相同的性能。 如果由于意外故障(例如突然断电、错误移除介质和不可恢复的磁盘错误)而中断对 FAT 卷的写入操作,则卷上的 FAT 结构可能会被破坏。为了最大限度地降低数据丢失的风险,可以通过最小化以写入模式打开文件的时间或使用f_sync函数来最小化临界区 FatFs 模块不支持对文件的重复打开的读写冲突控制。仅当对文件的每种打开方式都是读取模式时才允许重复打开。始终禁止对文件进行一次或多次写入模式的重复打开,并且打开的文件不得重命名或删除。违反这些规则可能会导致数据冲突。 文件系统操作mkfs 格式化...

2025-10-03
CAN驱动
CAN驱动CAN驱动框架CAN初始化-rt_hw_can_register注册CAN设备,并初始化互斥量 -rt_timer_init初始化CAN定时器,注册定时器回调函数 cantimeout 初始化&&配置 RT_CAN_CMD_SET_PRIV 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960if (can->config.privmode) { for (i = 0; i < can->config.sndboxnumber; i++) { level = rt_hw_interrupt_disable(); if(rt_list_isempty(&tx_fifo->buff...

2025-10-03
DFS
DFS 虚拟文件系统https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/filesystem/filesystem 123456789101112131415161718FatFS 是专为小型嵌入式设备开发的一个兼容微软 FAT 格式的文件系统,采用 ANSI C 编写,具有良好的硬件无关性以及可移植性,是 RT-Thread 中最常用的文件系统类型。传统型的 RomFS 文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以 XIP(execute In Place,片内运行) 方式运行,在系统运行时, 节省 RAM 空间。Jffs2 文件系统是一种日志闪存文件系统。主要用于 NOR 型闪存,基于 MTD 驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃 / 掉电安全保护,提供写平衡支持等。DevFS 即设备文件系统,在 RT-Thread 操作系统中开启该...

2025-10-03
FINSH模块
FINSH模块MSH初始化 根据链接脚本指明FINSH使用内存空间 _syscall_table_begin _syscall_table_end的地址 FSymtab段1234. = ALIGN(4);__fsymtab_start = .;KEEP(*(FSymTab))__fsymtab_end = .; __fsymtab_start和 __fsymtab_end用于指明finsh使用内存 FSymTab用于存放所有注册命令的结构体 struct finsh_syscall,包括命令名称,命令选项,命令描述,命令函数执行地址信息 宏12345678910111213141516171819202122232425262728293031/** * @ingroup msh * * This macro exports a command to module shell. * * @param command is the name of the command. * @param desc is the description of the command, wh...

2025-10-03
I2C驱动
I2C驱动 https://www.i2c-bus.org/i2c-primer/termination-versus-capacitance/ 硬件电路 I2C 总线使用 SDA 和 SCL 传输数据和时钟。首先要意识到:SDA 和 SCL 是开漏(在 TTL 世界中也称为开集),也就是说 I2C 主设备和从设备只能将这些线路驱动为低电平或保持开路。如果没有 I2C 设备将其拉低,终端电阻Rp 会将线路拉高至 Vcc。这允许同时操作多个 I2C 主设备(如果它们具有**多主设备功能)或拉伸(从设备可以通过按住 SCL 来减慢通信速度)等功能。 终端电阻 Rp 与线路电容 Cp 一起影响 SDA 和 SCL 上信号的时间行为。虽然 I2C 设备使用开漏驱动器或 FET 拉低线路(通常可以驱动至少约 10mA 或更多),但上拉电阻 Rp 负责将信号恢复到高电平。Rp 通常在 1 kΩ 至 10 kΩ 之间,导致典型的上拉电流约为 1 mA 或更小。这就是 I2C 信号具有锯齿状外观的原因。事实上,每个“齿”在上升沿显示线路的充电特性,在下降沿显示放电特性。 SDA(上)和 SC...

2025-10-03
IDLE线程
IDLE线程 cleanup 会在线程退出时,被空闲线程回调一次以执行用户设置的清理现场等工作。 defunct流程 rt_thread_defunct_enqueue 将退出线程和分离线程插入到defunct链表中 IDLE线程会在空闲时,执行defunct链表中的线程,将线程节点从链表中移除 从对象容器中移除线程对象 执行线程清除函数,释放线程控制块
评论
公告
欢迎光临!有任何问题或想法,欢迎在文章下留言交流,或者通过 关于页面 联系我。



