自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 ESP-CSI

【代码】ESP-CSI。

2024-05-01 15:37:49 33

原创 查询GPU信息

Maximum amount of shared memory per block: 每个线程块最大共享内存数量;Maximum number of registers per block: 每个线程块最大寄存器内存数量;Maximum number of registers per SM: 每个流多处理器最大寄存器内存数量;Maximum number of threads per block: 每个线程块最大的线程数量;Amount of global memory: 显卡显存大小,我的是4G的显存;

2024-04-24 22:42:27 319

原创 cuda中的计时

代码解析:第1行cudaEvent_t start, stop:定义两个CUDA事件类型(cudaEvent_t)的变量;第2、3行cudaEventCreate函数初始化定义的cudaEvent_t变量;第4行通过cudaEventRecord函数,在需要记时的代码块之前记录代表时间开始的事件;第5行cudaEventQuery函数在TCC驱动模式的GPU下可省略,但在处于WDDM驱动模式的GPU必须保留,因此,我们就一直保留这句函数即可。

2024-04-24 22:33:54 180

原创 linux的input子系统

我们编写驱动程序的时候只需要关注中间的驱动层、核心层和事件层,这三个层的分工如下:驱动层:输入设备的具体驱动程序,比如按键驱动程序,向内核层报告输入内容。核心层:承上启下,为驱动层提供输入设备注册和操作接口。通知事件层对输入事件进行处理。事件层:主要和用户空间进行交互。,我们在使用 input 子系统处理输入设备的时候就不需要去注册字符设备了,我们只需要向系统注册一个 input_device 即可。

2024-03-10 16:20:59 779

原创 linux的MISC驱动

所有的 MISC 设备驱动的主设备号都为 10,不同的设备使用不同的从设备号。MISC 设备会自动创建 cdev,不需要像我们以前那样手动创建,因此采用 MISC 设备驱动可以简化字符设备驱动的编写。当设置好 miscdevice 以后就需要使用 misc_register 函数向系统中注册一个 MISC 设备,一般在probe函数中对其进行调用。我们在使用的时候可以从这些预定义的子设备号中挑选一个,当然也可以自己定义,只要这个子设备号没有被其他设备使用接口。

2024-03-08 15:29:08 347

原创 设备树下的平台(platform)驱动

前面我们通过平台设备来匹配平台驱动,获取设备的硬件信息。目前的设备驱动几乎都是采用设备树+设备驱动来实现,通过在设备树文件中添加设备节点,并且compatible属性与要匹配的驱动的of_device_id数组中某个元素的compatible属性一致。在使用设备树的时候 platform 驱动会通过 of_match_table 来保存兼容性值,也就是表明此驱动兼容哪些设备。其中driver属性内的name用于与平台设备(platform device)去匹配,有了设备树之后不再有用。

2024-03-08 13:31:59 318

原创 Linux驱动异步通知

参数int类型为导致信号处理函数执行的信号的信号值(类似于中断号),即上方的枚举值。

2024-03-07 18:49:42 329

原创 linux阻塞IO和非阻塞IO

当访问设备时,设备不可用,阻塞式IO则会将应用程序对应的线程挂起,直到设备资源可用为止。对于非阻塞 IO,应用程序对应的线程不会挂起,它要么一直轮询等待,直到设备资源可以使用,要么就直接放弃。在上面的示意图中,应用程序使用非阻塞访问方式从设备读取数据,当设备不可用或数据未准备好的时候会立即向内核返回一个错误码,表示数据读取失败。应用程序会再次重新读取数据,这样一直往复循环,直到数据读取成功。使用 open 函数打开“/dev/xxx_dev”设备文件的时候添加了参数“O_NONBLOCK”,

2024-03-07 13:20:31 885

原创 linux驱动中断

在 Linux 内核中要想使用某个中断是需要申请的,request_irq 函数用于申请中断,request_irq函数可能会导致睡眠,因此不能在中断上下文或者其他禁止睡眠的代码段中使用 request_irq 函数。request_irq 函数会激活(使能)中断,所以不需要我们手动去使能中断。irq:要申请中断的中断号。handler:中断处理函数,当中断发生以后就会执行此中断处理函数。

2024-01-16 18:38:58 869

原创 Linux内核定时器

在编译 Linux 内核的时候可以通过图形化界面,设置系统节拍率,按照如下路径打开配置界面:-> Kernel Features -> Timer frequency ( [=y])设置好以后打开 Linux 内核源码根目录下的.config 文件,在此文件中有如图所示定义:图中的 CONFIG_HZ 为 100,Linux 内核会使用 CONFIG_HZ 来设置自己的系统时钟。

2024-01-10 12:34:00 810

原创 linux并发与竞争

对于32位的SOC,在 include/linux/types.h 文件中有一个atomic_t 的结构体相关函数:相应的也提供了 64 位原子变量的操作 API 函数,与32位的 API 函数有用法一样,只是将“atomic_”前缀换为“atomic64_”,将 int 换为 long long。

2024-01-05 19:21:47 857

原创 linux中devm相关函数

dev:device设备id:时钟源名字,可以为NULL返回值:正确返回struct clk指针,错误返回NULLdev:device设备id:时钟源名字。

2023-12-11 20:05:33 1178

原创 linux的GPIO相关函数

用于获取设备树某个属性里面定义了几个 GPIO 信息。propname:包含要获取 GPIO 信息的属性名。返回值:正确返回获取到的GPIO编号,错误返回负数。返回值:正确返回统计的gpio数量,错误返回负数。返回值:正确返回统计的gpio数量,错误返回负数。统计gpios 这个属性的 GPIO 数量。propname:要统计的gpio属性。返回值:成功返回0,失败返回错误码。返回值:成功返回0,失败返回错误码。value:控制值,0或1。index:GPIO 索引。用于获取 GPIO 编号。

2023-12-11 19:32:04 370

原创 linux中of系列函数

开始查找的节点,如果为 NULL 表示从根节点开始查找整个设备树。type: 要查找的节点对应的 type 字符串,也就是。: 开始查找的节点,如果为 NULL 表示从根节点开始查找整个设备树。path: 带有全路径的节点名,可以使用节点的别名,比如“/backlight”就是 backlight 这个节点的全路径。-EINVAL 表示属性不存在, -ENODATA 表示没有要读取的数据, -EOVERFLOW 表示属性值列表太小。: 开始查找的节点,如果为 NULL 表示从根节点开始查找整个设备树。

2023-12-11 18:21:17 930

原创 linux字符设备驱动开发(设备号的注册和设备结点的创建)

自动创建设备节点的工作是在驱动程序的入口函数中完成的,一般在 cdev_add 函数后面添加自动创建设备节点相关代码。本节就来讲解一下如何实现自动创建设备节点,在驱动中实现自动创建设备节点的功能以后,使用 modprobe 加载驱动模块成功的话就会自动在/dev 目录下创建对应的设备文件。卸载驱动的时候一定要使用 cdev_del 函数从 Linux 内核中删除相应的字符设备,cdev_del。参数 class 是要删除的设备所处的类,参数 devt 是要删除的设备号。返回值就是创建好的设备。

2023-12-11 16:57:29 869

原创 无设备树的platform平台驱动

平台设备与平台驱动

2023-10-03 21:17:41 65

原创 Linux常用命令

linux压缩包格式包含:tar.gz, .tgz, .tar.bz2, .zip, .rar, .tar.xz。which命令可以查看要执行的命令所在的实际路径, 命令解析器工作的时候也会搜索这个目录。注:.rar和.tar.xz格式的文件的压缩因为不常用就不说明了,需要时可以百度一下。$ sudo apt install zip # 压缩。$ sudo apt install unzip # 解压缩。:分别对应文件所有者权限、文件所属组权限、其他用户权限,cd 或者 cd ~

2023-08-18 15:59:41 56

原创 完全二叉树通过先序、中序、后序序列来构造二叉树(即得到层次遍历序列)

根据完全二叉树的先、中、后序构造完全二叉树的序列化数组(层次遍历数组)

2022-06-06 15:54:55 790

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除