- 博客(28)
- 收藏
- 关注
原创 自学python笔记09——闭包与装饰器
在"2"处定义了"test_fun"并且装饰器开始装饰"test_fun",相当于调用了"outer_fun",把"inner_fun"函数赋给了"test_fun",注意,此时"test_fun"已经不再是原来的函数了。接着执行到"3",执行"test_fun",此时"test_fun"已经装饰器装饰,相当于执行了内部函数"inner_fun",按照内部"inner_fun"函数的执行顺序,依次打印"b",执行传进来的的func即"test_fun",打印"test fun",再打印"c"。
2024-03-04 09:41:20
1097
原创 自学python笔记08——正则表达式
正则表达式模块导入正则表达式简称为 " regex ", 是文本模式的描述方法。正则表达式模块导入Python 中所有正则 达式的函数都在 re 模块中,输入以下代码, 导入该模块:import re创建正则表达式(Regex)对象向传入一个字符串值,表示正表达式,它将返回一个Regex 模式对象(或者就简称为 “Regex 对象”)。例:(创建一个正则表达式对象来匹配电话号码)phoneNumber包含了一个正则表达式对象,来匹配电话号码0469-54xxxxx。
2024-02-08 11:15:57
740
原创 自学python笔记07——测试函数和类
测试函数编写函数或类时,还可为其编写测试。通过测试,可确定代码面对各种输入都能够按要求的那样工作。测试让你深信,即便有更多人使用你的程序,它也能正确地工作。在程序中添加新代码时,也可以对其进行测试,确认不会破坏程序既有的行为。学习如何使用Python模块unittest中的工具来测试代码,还将学习编写测试用例,核实一系列输入都将得到预期的输出。你将看到测试通过了是什么样子,测试未通过又是什么样子,还将知道测试未通过如何有助于改进代码。你将学习如何测试函数和类,并将知道该为项目编写多少个测试。
2024-01-30 16:05:42
805
原创 自学python笔记06——模块和包
综上所述,文件在 Python 包中具有初始化包、控制包的导入行为和提供包级别功能的作用。我们可以根据需要在文件中编写代码来满足这些需求,并更好地组织和管理你的包。
2024-01-22 15:22:38
969
原创 自学python笔记05——异常
print('我是else,是没有异常的时候执行的代码')print('ZeroDivision错误...')print('name变量名称未定义错误')print('没有异常,真开心')可以针对突发事件做集中的处理,从而保证程序的。都处理的面面俱到,通过。Python 解释器。
2024-01-18 16:02:10
881
原创 自学python笔记04——面向对象
面向对象是更大的封装,在一个类中 封装 多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了!在Python中要定义一个只包含方法的类,语法格式如下:class 类名:def 方法1(self, 参数列表):passdef 方法2(self, 参数列表):pass方法的定义格式和之前学习过的函数几乎一样区别在于第一个参数必须是self,大家暂时先记住,稍后介绍self类名的 命名规则 要符合大驼峰命名法在__init__方法内部使用self.属性名 = 属性的初始值就可以。
2024-01-17 14:29:21
743
原创 自学python笔记——函数
lambda 传入参数:函数体(一行代码)例:test_func(lambda x,y: x+y) # 结果 3注意:使用def和使用lambda,定义的函数功能完全一致,只是lambda关键字定义的函数是匿名的,无法二次使用。
2023-08-29 15:36:01
48
原创 自学python笔记——数据容器
字面量[元素1,元素2,元素3,元素4,...]# 定义变量变量名称 = [元素1,元素2,元素3,元素4,...]# 定义空列表变量名称 = []变量名称 = list()定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型注意事项:注意:元组只有一个数据,这个数据后面要添加逗号编号操作说明1集合.add(元素集合内添加一个元素2集合.remove(元素移除集合内指定的元素3集合.pop()从集合中随机取出一个元素4集合。
2023-08-29 10:28:31
93
原创 自学linux驱动从入门到放弃(十六)内核定时器的使用
内核定时器是基于未来时间点的一个定时器,以当前系统节拍数“jiffies”,向后延时多长时间(转换为系统节拍数)。1.头文件#include <linux/timer.h>2.timer数据结构struct timer_list { /* * All fields that change during normal runtime grouped to the * same cacheline */ struct hlist_node entry; unsi
2022-02-16 16:29:32
3550
原创 自学linux驱动从入门到放弃(十五)poll的使用
在(十四)的等待队列中,如果没有按键中断,应用程序就始终处于休眠状态,如果应用程序中,既不想占用太多的CPU资源,又要去处理其他的事情,那么就需要用到 "poll"。1.linux驱动中 ‘poll’ 需要做哪些事情?头文件:#include <linux/poll.h>1.1 调用poll_wait,把线程挂入队列 上文中,创建了一个等待队列,在Driver的read中休眠,在中断函数中唤醒,那么使用poll_wait就是将线程挂入这个队列...
2022-01-20 17:15:08
1678
原创 自学linux驱动从入门到放弃(十四)阻塞与非阻塞--等待队列
1. 什么是阻塞与非阻塞当应用程序去调用read或者write函数去对底层的设备进行操作时,如果不能及时的获取资源,那么可以有两种处理方式,阻塞,和非阻塞。 阻塞方式调用时,在调用到对应的函数时,获得结果之前,不会立即返回,在驱动中会将进程挂起,此时该进程不占用CPU资源,等待条件满足时,在合适的位置唤醒进程。 非阻塞方式调用时,在函数不能获得结果之前,该函数不会阻塞当前进程,依然会占用CPU资源去执行其他的逻辑。2. 等待队列 ...
2021-12-28 11:09:16
725
原创 自学linux驱动从入门到放弃(十三)中断上下文
在中断中,分为中断上文和下文(tasklet),在request_irq中注册的函数为中断函数,一般是中断上文,中断下文一般用于处理一些复杂耗时间的程序。1.中断上下文1.1 tasklet结构体struct tasklet_struct{ struct tasklet_struct *next; unsigned long state; atomic_t count; void (*func)(unsigned long); unsigned long data;...
2021-12-16 16:23:55
194
原创 自学linux驱动从入门到放弃(十二)中断
目录1.设备树中指定中断1.1添加节点属性1.2中断触发方式1.3指定interrupt的DTS1.4代码中获取中断号2.通过GPIO获取中断2.1不指定interrupt的DTS2.2代码3.常用函数3.1 gpiod_to_irq3.2irq_of_parse_and_map3.3 of_irq_get3.4request_irq3.4.1中断函数 typedef irqreturn_t (*irq_handler_t)(int, void *..
2021-12-16 11:18:32
2207
2
原创 自学linux驱动从入门到放弃(十一)Pinctrl与GPIO子系统
1.pinctrl & gpio 子系统 如果我们当前有个系统,里面有很多的gpio操作,每一个GPIO都需要定义多个寄存器,那么就需要看手册写很多很多的寄存器,所以厂家在设备树的pinctrl子系统里面已经把gpio都给定义好了,并且节点的属性为gpio controller,同时又是interrupt controller,以rk3288为例,因为我只有这个..。。。。(/linux-4.4.154/arch/arm/boot/dts/rk3288.dtsi)pinc...
2021-12-08 13:14:43
1737
1
原创 自学linux驱动从入门到放弃(十)设备树
目录1.什么是设备树?2.设备树的结构3.节点结构4.节点标准属性4.1 compatible4.2 status4.3#address-cells #size-cells4.4 reg4.5 name4.6 device_type4.7 phandle4.8 virtul-reg4.9 range4.10 dma-range5.特殊节点5.1/aliases node5.2/chosen node6."of_"相关函数6.1...
2021-12-03 13:08:13
1403
原创 自学linux驱动从入门到放弃(番外3)rk3288 GPIO点灯
网上看迅为的视频,是用的iTop的开发板,我手里面是rk3288的开发板,所以硬件操作上会有些出入,点个灯不容易,记录一下。说明一下,这里不适用于GPIO0,因为GPIO0的操作寄存器和GPIO1-8不太一样。 1.首先看电路板的原理图,找到预留的LED的线路连接,看一下POWER_LED连到了哪里连到了GPIO8_A2上面。2.看一下芯片手册CRU部分,GPIO有时钟使能,保险起见,需要使能一下GPIO8的时钟,这里G14_8指的是GATE14,下面寄...
2021-11-23 16:11:11
1223
原创 自学linux驱动从入门到放弃(九)linux字符设备platform总线改造
上一个笔记里面,简单的记录了一下字符设备的注册。后面自己通过配置rk3288的gpio,可以实现app控制灯的亮灭,这里一次性的记录一下字符设备点灯,基于platform总线的代码改造。一.platform总线1.什么是platform总线?有什么用?直接写字符设备驱动不一样吗?有什么分别吗?这也是我刚刚听到platform总线的疑惑,也想了半天1)platform是虚拟出来的总线,实际并不是像I2C SPI一样真实存在的物理总线。2)主要用于分离设备资源和驱动,更便于驱...
2021-11-23 15:25:44
728
原创 自学linux驱动从入门到放弃(八)linux字符设备驱动框架
我也是在学习过程中,后面会过度到platform总线模型框架,以及DTS框架,最终目的是通过rk3288的I2C,GPIO,interrupt,串口资源,把6轴的驱动搞起来,并且将采集的数据通过终端显示,通过无线网卡远程登录查看。终极目标是通过一段简单的驱动读取IMU的ID,通过脚本对ID进行识别,并自动加载对应的驱动程序。一.驱动模块基本框架 如果只是想加载一个驱动模块,那么很简单。只需要下面一段代码。#include <linux/module.h>...
2021-11-19 10:15:51
1075
原创 自学linux驱动从入门到放弃(七)编译驱动模块
1.先来一段测试代码。#include<linux/init.h> //linux 头文件#include<linux/module.h> //linux编译模块需要的头文件static int hello_init(void) //入口函数,int类型有返回值{ printk(KERN_ERR "helloworld!"); return 0;}static void hello_exit(voi
2021-11-17 11:02:52
899
原创 自学linux驱动从入门到放弃(番外2)学着写个mount脚本
也不知道写啥,折腾了好几天,总算能用了,碰到各种问题,也不知道怎么总结,先这样吧,想起来再写。#!/bin/bashLOCAL_IP=`ifconfig -a|grep inet|grep -v 127.*|grep -v inet6|awk '{print $2}'|tr -d "addr:"`#LOCAL_IP=$(ifconfig -a|grep inet|grep -v 127.*|grep -v inet6|awk '{print $2}'|tr -d "addr:") # par
2021-11-15 16:25:36
781
原创 自学linux驱动从入门到放弃(六)Makefile
gcc编译单个文件makefile可编译单个,或多个文件。makefile基本语法:1.语法格式: 目标:依赖 (tab)命令例1:例2:(clean:删除编译产生的.o文件以及test1可执行文件)2.如果make目标与路径下文件名重复,编译会出错,如下:这时候需要声明伪目标格式:.PHONY:目标赋值:'=':最后被指定的值(延迟赋值)实际输出'cccbbb''?=':前面有赋值,赋前面...
2021-11-09 11:12:59
846
原创 自学linux驱动从入门到放弃(番外1)解决Wmvare ubuntu磁盘占用越来越大的问题
电脑老旧,需要在新电脑上重新弄个虚拟机,不想重新装Wmvare ubuntu,又不想重新安装配置NFS TFTP SAMBA服务,也不想重新下载内核编译内核,也不想下载配置交叉编译环境等,所以想把Wmvare下的ubuntu拷贝到新电脑上,但是一看磁盘占用,硬盘80G,占用56G....ubuntu不是占用很小的吗?所以在网上找解决办法,记录一下几个命令。1.查看磁盘占用'df -T'开始红框里面used占了49G2.查看文件所占空间大小'du -ah --max-d...
2021-11-04 16:18:40
386
原创 自学linux驱动从入门到放弃(五)编译&环境变量
工作需要,偶尔会涉及到linux驱动代码,所以对linux系统编程以及编译过程和环境变量并不会去了解太深,当做工具会用就行,所以记录一下,主要还是怕忘。一.编译:gcc命令-c:只编译,不生成执行文件,通常用于编译不包含主程序的子程序文件。-o filename:生成名为filename的可执行文件,如不加改选项,会生成名为a.out的文件。-g:生成调试信息,如果需要用gdb去debug,需要该选项。例:"gcc test.c -o test"。执行"./test"...
2021-11-03 15:20:35
221
原创 自学linux驱动从入门到放弃(四)配置rk3288开发板与ubuntu18.04的IP地址
1.临时配置IP地址(重启后会被还原)使用命令: ifconfig 网卡名称 IP地址 netmask 子网掩码ifconfig命令查看使用的网卡,以开发板为例:开发板使用的网卡名称为eth0使用命令 ifconfig eth0 192.168.8.102 netmask 255.255.255.02.修改配置文件配置静态IP地址uname -a 查看一下开发板和ubuntu使用的内核版本。ubuntu使用的linux内核为4.15.0,开发板的linux内核为4.4.15.
2021-11-02 13:53:05
1069
原创 自学linux驱动从入门到放弃(三)配置PC双网卡实现内外网区分
前提:公司网络很差,有被限速,更新下载一些linux驱动与应用很慢,所以想是否可以实现使用PC的无线网作为公司的外网用来查资料,用网线接华为移动路由器插SIM卡作为内网,连接我的虚拟机以及开发板(更新一些linux插件和应用),网络知识很差,折腾了一下午,一步一个坎,尝试以下方法可用。需求:ubuntu与RK3288开发板在内网同一网段,通过华为路由器联网,PC的其他应用通过无线连公司外网,mobaXterm可以远程登录ubuntu(vmware的命令行真的很难用)。环境:PC,vmware虚拟机跑
2021-11-02 09:56:46
871
1
原创 自学linux驱动从入门到放弃(二)Linux常用命令
1.mkdir命令功能:创建文件夹mkdir:在当前目录下创建一个文件夹,'mkdir linuxstudy' 创建一个名为linuxstudy的文件夹mkdir -p:创建多级目录,'mkdir -p alon/test' 创建名为alon文件夹,并在其中创建一个test文件夹2.rmdir命令:功能:删除空目录rmdir:删除空目录,rmdir test/ 删除一个名为test的空目录3.rm命令:功能:删除文件或目录-f:强制删除-r:递归删除-i:删除前询
2021-11-01 15:55:24
155
原创 自学linux驱动从入门到放弃(一)Vim编辑器使用
由于本人比较懒,所以只记录我会用到的,嗯...应该会吧...1.命令行模式&编辑模式&一般模式‘I’ 进入编辑模式'ESC' 退出编辑模式回到一般模式':' 进入命令行模式2.插入模式'I' 插入光标当前位置'a' 插入光标当前位置的下一个位置(反正我也不会用)'o' 插入新行进入光标移到行首,进入编辑模式3.移动光标一般模式下,'HJKL'控制光标移动方向←↓↑→'0' 移动到当前行首'^'移动到当前...行...首?'$' 移动到当
2021-11-01 09:03:19
243
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人