自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于IMX6ULL的电子产品量产工具

2.3Framfbuffer中结构体。2.2DispOpr 结构体。2.1显示管理器框架。

2024-11-02 10:06:01 231

原创 linux-UART

UART的全称是Universal Asynchronous Receiver and Transmitter,即异步发送和接收。图中的电平分为TTL/CMOS以及RS-232电平。1.1接线:把串口的Tx和Rx连接起来。1.app发送接受数据。

2024-11-01 20:44:24 340

原创 Linux中SPI

基于平台总线设备驱动模型实现。在probe函数中除了生成spi_master,还会创建spi_device结构体。根据SCK的电平以及数据在第一个跳变沿还是第二个跳变沿传输,SPI传输总共有四种模式。spi设备也有自己的驱动程序,提供spi设备的访问能力。spi控制器有驱动程序,提供spi的传输能力。3.SPI总线设备驱动模型。4.1SPI控制器驱动程序。4.spi设备驱动框架图。4.2SPI设备驱动程序。

2024-10-30 19:59:46 333

原创 VIM的使用

修改键盘映射的方式:交换Linux中大写锁定键和Esc按键的位置。安装命令 yum-install xmodmap。7.文本对象 范围文本对象。9.设置标记,快速回跳。4.VIM学习初体验。

2024-10-30 19:35:28 320

原创 GCC及GDB的使用

(假如程序出错的时候,没有产生core文件,就要通过ulimit来设置;ulimit -c unlimited)这里还是没出来core文件,后续再排查为什么。r: 没有设置断点的时候,r会将程序运行完。5.当程序出现错误的时候,比如指针越界。6.调试一个正在运行的进程。su root之后重新查看。4.3观察某个变量的值。会产生一个core文件。1.GDB的主要功能。

2024-10-29 21:44:15 233

原创 Makefile使用

Makefile的使用及基本语法

2024-10-29 20:39:40 266

原创 linxu-i2c驱动-adapter

结合下边的文件来访问0x2e设备。在虚拟总线上实现0x2e的设备。

2024-10-27 21:51:33 111

原创 linxu-i2c驱动-eeprom

经过排查是由于,读写之后,没有加延时,可能会导致数据的覆盖。这个程序中还存在一些小问题,不过实现了数据的传输。后续可以把这个延时时间取短点,这里直接取值2s。eeprom的地址为0x50。对driver程序进行更改。

2024-10-27 21:24:25 185

原创 linux-i2c驱动-ap3216c

2.i2c-driver程序。3.i2c-client程序。

2024-10-27 18:35:12 210

原创 linxu - I2C

I2C 协议采用双线结构传输数据,包括一个数据线和一个时钟线(即 SDA 和 SCL 线),其中 SDA(Serial Data)线用于双向数据传输,而 SCL(Serial Clock)线则用于同步数据传输的时钟信号。IIC 协议(Inter-Integrated Circuit,可简写为 I2C),是一种用于各种电子设备之间进行通信和数据交换的串行通信协议。I2C 设备的地址为 8 位,但是时序操作时最后一位不属于地址,而是 R/W 状态位。所以有用的是前 7 位,使用时地址整体右移一位处理即可。

2024-10-27 15:59:32 273

原创 10.Linux按键驱动-中断的线程化处理threadirq

1.1在probe函数中申请thread_irq。

2024-10-27 10:09:33 118

原创 9.Linux按键驱动-工作队列

1.2 在probe函数中初始化工作队列。1.1在gpio结构体中定义工作队列。1.3.在中断服务程序中调度工作队列。

2024-10-27 09:52:48 202

原创 8.Linux按键驱动-中断下半部

由运行结果可知,在驱动中检测到两次按键按压事件(tasklet函数被调用两次),由于上节中的定时器消抖,导致key_timer_expire函数只被调用了一次,故read函数只执行了一次,应用程序只能获取后一个按键值。1.1在gpio结构体中添加tasklet_struct结构体。1.2在probe函数中初始化tasklet结构体。1.3在中断服务程序中调度tasklet。应用程序和Makefile和上节一致。1.4在这个函数中执行其它任务。

2024-10-27 09:34:54 302

原创 7.Linux按键驱动-定时器

3.2在probe函数中,设置定时器,修改定时器超时时间,添加定时器。3.4在超时函数中,唤醒等待队列,执行原来中断服务程序执行的那些任务。3.1 在按键结构体中,添加timer_list成员。3.3在按键中断函数中,修改定时器超时时间。

2024-10-27 09:04:49 304

原创 6.Linux按键驱动-阻塞与非阻塞

核心在于驱动程序中的.read函数的支持。立即返回,无法读出,返回-1。默认打开文件时候是阻塞的。1.设置打开方式为非阻塞。

2024-10-26 23:37:08 298

原创 5.Linux按键驱动-fasync异步通知

当应用程序收到SIGIO信号的时候, sig_func函数就会被调用,调用read函数读取按键的值。2.2APP把自己的pid告诉驱动程序。2.1绑定信号和信号处理函数。

2024-10-26 23:02:44 240

原创 4.Linux按键驱动-poll监听文件描述符

在while循环中读取数据之前,首先调用poll函数(对应于驱动中的gpio_poll),如果产生了按键按压事件,那么 ret为1,且fds的revens为POLLIN。当产生中断时,中断服务程序中回唤醒等待队列,.poll函数会返回POLLIN | POLRDNORM。根据上述分析可知,只有当产生了按压之后,才会进入到if的第一个分支,调用read函数。那么,在这种情况下,可以去掉gpio_read函数中第87行的代码。3.在驱动程序中,添加对poll函数的支持。2.1定义文件监听描述符及超时时间。

2024-10-26 22:14:22 265

原创 3.Linux按键驱动-添加循环队列

3.在open函数中,等待条件变量。当获得条件变量时,判断条件是否为真,为真时,将数据从内核空间拷贝到用户空间。2.在中断服务程序中,记录按键值,并且唤醒等待队列。1.添加环形缓冲区的代码。

2024-10-26 21:25:43 296

原创 2.Linux按键驱动-创建字符设备,通过应用程序读取按键值

3.在中断处理函数中唤醒等待队列,然后在read函数中返回按键值。4.4在中断服务程序中,给全局变量赋值,并且唤醒等待队列。4.2 gpio_remove函数中添加对应的删除代码。4.5此时,.read函数会将数据拷贝回用户空间。4.1 gpio_probe中添加字符设备代码。1.在上一个博客的基础上,添加一个字符设备。2.在probe函数中注册字符设备。4.3 定义全局变量,等待队列。3.3Makefile文件。

2024-10-26 18:14:37 395

原创 1.Linux按键驱动

使用设备树来实现按键驱动

2024-10-26 16:06:48 276

原创 Linux复习-C++

7.define和inline的区别。8.前置++和后置++区别。4.静态链接和动态链接。3.C与C++的区别。5.指针和引用的区别。6.类和结构体的区别。

2024-10-26 13:53:26 521

原创 Linux基础知识 - C(自学使用)

C语言基础知识,自己复习使用

2024-10-26 13:34:11 218

原创 Linux进程间通信

linxu进程间通信参考资料

2024-10-26 10:04:51 216

原创 socket通信

【代码】socket通信。

2024-10-21 19:25:39 209

原创 Linux驱动入门实验班day03-GPIO子系统概述

对于按键GPIO4_14:对应第四组第14个引脚。gpiochip3 ,从96开始,gpio4对应的下列。

2024-08-04 14:21:20 215

原创 Linux驱动入门实验班day03-另一种注册cdev的方式

会将主设备号major对应的所有次设备号,对应的设备节点,总是访问到驱动程序hello_drv。将上边字符设备范围变化为2,可以手动创建节点。解决方式:分配某个区域给主设备号。这个问题,会导致主设备号不够用。如何自动获得主设备号。

2024-08-04 11:11:19 202

原创 Linux驱动入门实验班day02-自动创建设备节点

的基础上,通过class_create 及device_create实现自动创建节点。

2024-08-01 20:02:11 114

原创 bear make产生的compile_commands.json文件为空

问题:解决办法。

2024-07-31 22:58:16 500

原创 Linux驱动入门实验班day02

Makefile文件。

2024-07-31 21:17:46 302

原创 Linux驱动入门实验班day01

NAT:net address translate

2024-07-31 19:04:09 143

原创 Linux中动态库的制作

程序启动之后,动态库会被动态加载到内存中,通过ldd(list dynamic dependencies)命令检查动态库的依赖关系。动态库:GCC进行链接的时候,动态库的代码不会被打包到可执行程序中。静态库:GCC进行链接时,会把静态库中代码打包到可执行程序中。如何定位共享库文件?3.运行main函数。

2023-04-18 12:00:40 198

原创 Linux中静态库的制作

静态库和动态库的区别是:静态库在程序的链接阶段被复制到了程序中;动态库在链接阶段没有被复制到程序中,而是在程序运行时由系统动态加载到内存中供程序调用。库是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用者一些可以直接拿里用的变量、函数或类。库是一种特殊的程序,编写库的程序和编写一般的程序区别不大,只是库不能单独运行。将.o文件打包,使用ar工具(archive)使用gcc命令制作.o文件。r-将文件插入备存文件中。lib:前缀(固定)

2023-04-17 12:53:48 112

原创 通讯录管理系统

通讯录管理系统

2023-02-19 16:20:59 79

原创 正弦信号的频谱分析

代码】正弦信号的频谱分析。

2022-08-12 18:36:16 5386

原创 基2fft实现、二次最佳平方逼近多项式、牛顿迭代法

根据信号与系统的相关理论[4],根据本学期的数字信号处理作业实验得出的相关结论,对正弦信号进行采样,采样频率在满足采样定理的前提下,还需要满足信号频率不能是信号频率的2倍,这样会导致采样点信息一致,不能恢复出原始的信息。正弦信号2倍采样结果如图2.3所示,当 的时候,会在信号的每一个周期采两个点,采到的所有点值一致,故不能得到正确的频谱。当 固定, 减小信号频谱特性会变好。由FFT基本原理可以知道,当N为2的幂次方时,FFT运算包含 级运算,并将每一级编号 ,每一级包含 组,每组包含 个鲽形单元,...

2022-08-12 18:25:25 1685

原创 正弦信号滤波、交通流信号滤波

信号滤波,周期计算

2022-08-12 18:16:13 657

原创 K均值据类C语言和matlab实现

C语言或matlab实现K均值聚类

2022-08-12 18:03:49 388

原创 以zigzag方式对矩阵数据遍历

遍历顺序:代码:clear,clc;%实现zigzag方式提取矩阵的的元素len1=4;len2=4;m1=cell(len1,len2);m2=cell(1,len1*len2);m3=ones(len1,len2);for m4=1:len1 for lp2=1:len2 m1{m4,lp2}=[char('A'+(m4-1)*len2+lp2-1)]; endendm5=1;m6=1;m3(1,1)=0;m2(1,1)=m1(1,1);c

2022-01-05 13:13:30 329

原创 将N个学生分为G组

代码:% %%考试分组%%考试分组%随机性N=69;%69个人G=4;%分组数目data=1:N;%每个人的初始索引%%给每个人随机分配索引data_index=zeros(1,N);for loop=1:N index=randi(N-loop+1); data_index(loop)=data(index); data=data(find(data~=data(index)));enddata_indexlast_num=fix(N/G);%最后一组的人

2021-12-02 15:57:22 104

原创 求解二次最佳平方逼近多项式

求解二次最佳平方逼近多项式%以后没事不要编程解决数学练习册上边的题目了%49-7 38-5都可以用clear,clc%求解二次逼近问题N=2;low=0;high=1;%积分的区间syms x;syms y;y=1/(1*x^2+1);p_x=x;%积分的权值a=zeros(1,N);b=zeros(1,N-1);g0=1;%要用元胞数组来定义吗?% g=1;% g=[cell(g0),cell(g0),cell(g0)];%暂时只能先用这个办法了for loop=1:N+1

2021-11-27 11:38:28 60

C语言软考程序员资料源C语言软考程序员资料

C语言软考程序员资料

2019-08-11

空空如也

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

TA关注的人

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