forked from TommHeaven/linux_raspberrypi
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin' into nostalgia
- Loading branch information
Showing
1 changed file
with
24 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. [ ] 完善补充及增添代码的批注及安全注释. | ||
|