From 8851a2d89a630e46631c0a62d8eb504bdb6cb141 Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Wed, 14 Aug 2024 19:09:46 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E8=BF=9B=E5=BA=A6=E8=B7=9F=E8=B8=AA.m?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改并增添进度 --- ...33\345\272\246\350\267\237\350\270\252.md" | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git "a/docs/\350\277\233\345\272\246\350\267\237\350\270\252.md" "b/docs/\350\277\233\345\272\246\350\267\237\350\270\252.md" index 1d590ff0364038..322bb6a3f89c1e 100644 --- "a/docs/\350\277\233\345\272\246\350\267\237\350\270\252.md" +++ "b/docs/\350\277\233\345\272\246\350\267\237\350\270\252.md" @@ -1,30 +1,41 @@ # 进度跟踪 -## 20240803 +## 2024-8-03 -### 目前已完成的工作 +### 完成工作 -1. 封装了 ClkHw 结构和 ClkOps 特征,用于 i2c 驱动完成中的时钟管理功能,代码主要集中在文件 [rust/kernel/clk_provider.rs](rust/kernel/clk_provider.rs) 中 +1. - 封装 ClkHw 结构和 ClkOps 特征,用于 i2c 驱动完成中的时钟管理功能,代码主要集中在文件 [rust/kernel/clk_provider.rs](rust/kernel/clk_provider.rs) 中 + - 建立 interrput.h 尝试部分封装 + - 建立 i2c.h 尝试部分封装 2. 将 6.1 内核中 module 宏的 params 字段添加回来,用于添加 i2c 驱动模块的相关参数,代码主要在文件 [rust/macros/module_param.rs](rust/macros/module_param.rs) [rust/macros/helpers.rs](rust/macros/helpers.rs) 和 [rust/macros/module.rs](rust/macros/module.rs) 中 3. 将 c 版本 i2c 驱动代码翻译成 Rust 版本,代码主要集中在 [drivers/i2c/busses/i2c_bcm2835_rust.rs](drivers/i2c/busses/i2c_bcm2835_rust.rs) 中 -- 其中前两项工作已全部完成,第三项工作还在进行中:其中 bcm2835_i2c_register_div 的实现基本完成,下一步主要是实现 bcm2835_i2c_probe 函数中的内容,以及完成驱动框架的整体流程,让驱动模块真正能运行起来。 +- 前三项结构下一步主要是实现 bcm2835_i2c_probe 函数中的内容,以及完成驱动框架的整体流程,让驱动模块真正能运行起来。 -### 接下来可做的工作 +### 计划工作 + +#### 结构实现 1. [ ] 使用 module_platform_driver 宏来注册 i2c 驱动模块(现在使用的是 module 宏,但根据老师的建议应该使用前者),并让 i2c 驱动模块能运行起来(不需要真正实现功能,只需要在关键函数中打印一些信息即可) - [x] 测试模块的加载和卸载,并测试其运行结果 (已在 QEMU 和树莓派中测试,可正常进行模块的probe和remove) - [ ] 使用真实的 i2c 设备进行测试 -2. [ ] 完成 i2c_algorithm 在 rust 下的实现,可以参考 ClkOps 和 UartPortOps 的实现 - - [ ] 完成代码编写并通过编译测试 -3. [ ] 完成 i2c_adapter 在 rust 下的实现 +2. [x] 完成 i2c_algorithm 在 rust 下的实现,可以参考 ClkOps 和 UartPortOps 的实现 - [ ] 完成代码编写并通过编译测试 -4. [ ] 完成 i2c_msg 在 rust 下的实现 +3. [x] 完成 i2c_adapter 在 rust 下的实现 - [ ] 完成代码编写并通过编译测试 -5. [ ] 完成 of_node 部分功能的实现 +4. [x] 完成 i2c_msg 在 rust 下的实现 + - [x] 完成代码编写并通过编译测试 +5. [x] 完成 of_node 部分功能的实现 - [ ] 完成of_node_full_name -6. [ ] 完成 interrupt mod 的部分功能实现 - - [ ] 完成 request_irq 的封装 -7. [ ] 完成 bcm2835_i2c_probe 函数的实现(依赖前几项工作) +6. [x] 完成 interrupt mod 的部分功能实现 + - [x] 完成 request_irq 的封装 +- [ ] 完成 bcm2835_i2c_probe 函数的实现(依赖前几项工作) - [ ] 完成代码编写并通过编译测试 - [ ] 使用真实的 i2c 设备进行功能测试 + +#### 封装及改进实现 + +1. [ ] 扩展 Bcm2835I2cDev 结构, 完善封装. +2. [ ] 消除 i2c_bcm2835_rust.rs 中的 unsafe 代码. +3. [ ] 完善补充及增添代码的批注及安全注释. +