2023.8月总结

python学习

毕业之后,一直从事linux内核驱动的开发和维护,主要用C语言。最近有空看了下python的基础知识。

python基础知识

主要是看了一下runoob上的python3教程,不懂的地方google。
https://www.runoob.com/python3/python3-set.html
写了一篇字符串理解和操作容易出错点的总结帖。python比C语言还是方便太多。
https://blog.csdn.net/weixin_43158604/article/details/132424379?spm=1001.2014.3001.5502

python图形编程的基础应用

学图形编程是想给小孩做一个记账的对话框程序,让小孩有基础的收支概念。学了一下tkinter库的基础用法,最后做出来的记账软件如下图。

补图。

参考简单的caculator:

https://blog.csdn.net/Sjm05/article/details/127601786

python游戏

找了2款python写的小游戏,初步看了下代码。面向对象编程的一些逻辑忘的差不多了,看起来还比较费劲,只看了一点。

PythonPlantsVsZombies

Alien-Invasion

Linux内核NVMe驱动流程学习

SSD盘在接入Linux系统时,NVMe驱动会创建一个字符设备文件。再根据SSD盘的namespace的数量,创建对应数量的块设备文件。

NVMe驱动创建SSD盘的字符设备文件

NVMe驱动创建namespace块设备和设备文件

python操作SSD盘设备文件

在shell中可以通过盘的字符设备文件,例如/dev/nvme1,向SSD盘的FW发送passthrugh命令。命令的格式需要符合NMVe CMD的格式,命令的内容由SSD盘厂商自定义,FW收到后解析执行。例如,收集SSD盘的log、fw slot信息等。

yhxk@yhxk-System-Product-Name:~/work/GetVendorLog$ sudo python3 app_vendor_log.py -d /dev/nvme1 -f ./log_data/test.txt
device: /dev/nvme1, output file ./log_data/test.txt
read complete, total 0.00 MB, cost 0.00 s speed 8.52 MB/s

optparse模块的OptionParser类

提供了非常方便的命令行参数解析功能,有点类似C语言中的getopt()和getopt_long()。

    usage="usage: %prog <device> [OPTION args...]"

    parser = optparse.OptionParser(usage,version="%prog "+Version)

    parser.add_option("-d", "--device", dest="devicename", help="ssd device fiel", metavar="DEV")

    parser.add_option("-f", "--file", dest="filename", help="write data to FILE", metavar="FILE")

    (options, args) = parser.parse_args()

通过上面几行简单的代码,就可以获取到options.devicename = /dev/nvme1, options.filename = ./log_data/test.txt。

构造passthrugh命令

cdw10是passthrou命令中prp entry指向内存的长度(dword为单位,0base)。cdw11是从prp entry的offset。如果prp entry指向的内存的addr为None,说明还没有申请内存,在如下代码中申请一片内存,保存在self.addr中。

self.cdb = CmdStructure(**kwargs)

    def __init__(self, opcode=0, ......)

CmdStructure类的__init__主要就是在构造passthrou命令的参数,整个self就是一个passthrou命令(cdb)。构造好之后就可以通过文件接口_ioctl发给内核的NVMe驱动执行。

result = self._ioctl(self._file.fileno(), op, cdb)  #op为NVME_IOCTL_ADMIN_CMD

内核NVMe驱动ioctl接口

参考

python操作NVMe盘设备文件/dev/nvme0示例_胡泉波的博客-CSDN博客

NVMe协议近期的TP

NVMe TP4146

见:NVMe TP4146: Flexible-Data-Placement-Mode-FDP分析和思考_胡泉波的博客-CSDN博客

SSD相关内容

《深入浅出SSD》第二版

花了几天的时间看了一下,第5章讲NAND的部分比第一版详细、准确,第一版中怎么对NAND进行编程只有寥寥数语,没有讲清楚,第二版丰富了很多。

第一版:根本看不懂。

第二版:详细了很多。所以有些书看不懂,可能不是你的原因。

中国闪存峰会

主要是中国公司在参加,8.20几号线上开了2天,零星看了一下,没记住点啥。后面发现每年都有白皮书,看这个就够了。

2023闪存峰会

右上角“历届回顾”中可以找到白皮书。

闪存峰会

参加的都是三星、intel、micron这些巨头。

Flash Memory Summit Conference & Exhibition - August 8 - 10, 2023 - Santa Clara Convention Center

随便看了往年的内容,也没什么太多新东西。不过看到一个讲EDSFF标准的,说到2026年企业级E1.S形态的SSD盘占比会从2.4%增长到51.4%,增速有点夸张。

其它

准备看一下VFS的架构、核心算法,RAID的实现代码。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值