自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (4)
  • 问答 (8)
  • 收藏
  • 关注

原创 Linux驱动编程【中断】

一、获取设备树结点中断信息/* 1.intc 节点就是I.MX6ULL 的中断控制器节点 */intc: interrupt-controller@00a01000 { compatible = "arm,cortex-a7-gic"; #interrupt-cells = <3>; interrupt-controller; reg = <0x00a01000 0x1000>, <0x00a02000 0x100>;};//#

2022-05-04 18:18:54 992

原创 Linux驱动编程【竞争与并发】

一、什么是并发与竞争Linux系统是一个多任务操作系统,会存在多个任务同时访问一片内存区域,这些任务会互相覆盖这段内存中的数据,造成内存数据混乱,产生Linux系统并发产生的主要原因如下: ①、多线程并发访问 ②、中断程序并发访问 ③、多核(SMP)核间并发访问④、抢占式并发访问并发访问带来的问题就是竞争,所谓的临界区就是共享数据段,对于临界区必须保证一次只有一个线程访问,也就是要保证临界区是原...

2022-04-30 14:08:31 338

原创 Linux驱动编程【pinctrl和gpio子系统】

目录一、6ull的GPIO使用二、pinctrl子系统三、gpio子系统四、驱动编写五、完成代码Linux内核提供了pinctrl和gpio子系统用于GPIO驱动一、6ull的GPIO使用1、设置PIN的复用和电气属性2、配置GPIO二、pinctrl子系统借助pinctrl来设置一个PIN的复用和电气属性①、获取设备树中pin信息②、根据获取到的pin信息来设置pin复用功能③、根据获取到的pin信息来设置pin的电气...

2022-04-28 15:58:36 728

原创 Linux驱动编程【OF函数操作】

目录一、标准属性二、根节点下的compatible属性三、Linux内核的OF操作函数四、OF函数实验一、标准属性1、compatible属性(兼容的)值是字符串列表,用于将设备和驱动绑定起来。字符串列表用于选择设备所要使用的驱动程序2、model属性属性值也是一个字符串,一般model属性描述模块信息,比如名字之类3、status属性属性值也是一个字符串,用来描述一个设备的...

2022-04-26 14:45:05 923

原创 Linux驱动编程【设备树详解】

目录一、什么是设备树二、DTS、DTB、DTC的关系三、DTS基本语法四、设备树在系统中的体现五、设备树特殊节点一、什么是设备树1、uboot启动内核用到zImage、imx6ull-alientek-emmc.dtbbootz 80800000 - 830000002、描述设备树的文件叫做DTS,这个DTS文件采用树形结构描述板级设备,也就是开发板上的设备信息,例如CPU数量、内存基地址、I2C接口上接了哪...

2022-04-25 18:48:08 1923

原创 Linux驱动编程【新驱动框架】

一、新字符设备驱动原理1、以前的缺点使用register_chrdev函数注册字符设备,浪费了很多的次设备号,而且需要我们自 己手动指定主设备号2、int alloc_chrdev_region函数如果没有指定设备号的话就是用这个函数来申请设备号int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char ...

2022-04-23 11:18:53 1712

原创 Linux驱动编程【直接操作寄存器控制LED】

一、内存映射1、裸机LED灯实验就是操作6ULL的寄存器2、Linux驱动开发也可以操作寄存器。Linux下不能直接对寄存器的物理地址进行读写操作,比如寄存器A物理地址为0x01010101。裸机可以直接对0x01010101的物理地址进行操作,但是在Linux下不行。因为linux会使能MMU。在Linux里面操作的都是虚拟地址,所以需要先得到0x01010101这个物理地址所对应的虚拟地址MMU:...

2022-04-22 19:03:58 2272

原创 U-BOOT启动流程【03】

前言第一次学u-boot启动流程的时候我也是一头雾水,当然啦看一遍留个大概印象就好!要想都学透的话也要花费很大的时间精力本系列blog分三次写。本节讲最后一讲在虚拟机中我的Vcode比较卡,所以就在window环境下演示的,不过效果都是相同的,所以无需担心!!!如有错误的地方请及时联系我,我们一起学习!!!板子是正点原子提供的IMX6ULL系列,所以有些函数例如判断CPU、board类型的时候默认跳过run_main_loop 函数详解u-boot启动后会进入3秒倒计时(可以.

2022-04-15 12:24:20 1912 2

原创 U-BOOT启动流程【02】

前言第一次学u-boot启动流程的时候我也是一头雾水,当然啦看一遍留个大概印象就好!要想都学透的话也要花费很大的时间精力本系列blog分三次写。本节讲的是分析_main函数在虚拟机中我的Vcode比较卡,所以就在window环境下演示的,不过效果都是相同的,所以无需担心!!!如有错误的地方请及时联系我,我们一起学习!!!板子是正点原子提供的IMX6ULL系列,所以有些函数例如判断CPU、board类型的时候默认跳过目录前言_main函数详解board_init_f函数.

2022-04-14 21:07:16 838 7

原创 U-BOOT启动流程【01】

前言:第一次学u-boot启动流程的时候我也是一头雾水,当然啦看一遍留个大概印象就好,本系列blog分三次写。本节讲的是从u-boot.lds 到 reset 函数截至 在虚拟机中我的Vcode比较卡,所以就在window环境下演示的,不过效果都是相同的,所以无需担心!!!如有错误的地方请及时联系我,我们一起学习!!!链接脚本u-boot.lds想要分析uboot的启动流程,就要先找到 “入口” 。最终的脚本链接是在编译完成 uboot 之后在根目录下生成u-boot.ldsu-boot

2022-04-14 18:38:23 814 2

原创 Linux系统编程【05_进程】

目录进程程序:进程:并发:进程控制块PCBCPU和MMU进程程序就是一个指令序列;早期的计算机只支持单道程序。程序的代码放在程序段中,程序运行过程处理的数据放在数据段内(如变量)程序段存放在内存的低地址,数据段存放在内存的高地址位置。CPU执行指令时,到内存的低地址取得指令,按照指令执行,当寻找变量时,到内存的高地址取得数据引入多道程序技术之后:为了方便操作系统管理,完成各种程序并发执行,引入了进程...

2022-04-12 20:56:32 203 9

原创 Linux系统编程【04_文件函数】

目录文件描述符Fcntl函数lseek函数应用场景:常见参数:传入参数:传出参数:传入传出参数:文件存储stat函数link/unlink函数文件描述符PCB进程控制块:本质是结构体成员:文件描述符表文件描述符:0-1023 表中可用的最小的0-STDIN_FILENO1-STDOUT_FILENO2-STDERR_FILENO阻塞、非阻塞:是设备、网络文件的属性产生阻塞...

2022-04-09 22:23:19 1511 2

原创 Linux网络编程【高并发服务器03_多路IO转接_epoll】

epoll是Linux下多路复用IO接口的 select/poll 的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被监听的文件描述符集合,零一点原因就是获取事件的时候,无需遍历整个被监听的描述符集合,只要遍历那些被内核IO事件异步唤醒儿加入Ready队列中的描述符集合就行了epoll函数epoll_create、epoll_ctl、epoll_wa...

2022-04-05 22:28:48 793 4

原创 Linux网络编程【高并发服务器02_多路IO转接_select】

多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。可以理解为老板(服务器)聘一个小助手(select)帮助老板接听电话,有数据请求老板再做处理多路IO转接: 响应模式 ==> 有数据来我才服务select...

2022-04-04 09:46:38 321 4

原创 Linux系统编程【03_Makefile】

makefile:项目管理文件命名规则:makefile、Makefile一个规则:目标:依赖条件(一个tab缩进)命令1.目标的时间必须晚于依赖条件的时间,否则更新目标2.依赖条件如果不存在,寻找新的规则去产生依赖3.第一组目标作为终极目标可以利用ALL:a.out两个函数:src = $(wildcard *.c):匹配当前工作目录下的所有.c文件,将文件名组成列表赋值给变量srcobj = $(...

2022-04-03 11:14:18 992 2

原创 Linux网络编程【高并发服务器_tcp聊天室简单模型】

在做这个模型之前 最难的是两台主机之间建立连接互相ping通①、设置虚拟机网络适配器为桥接模式②、获取主机的IP地址、默认网关、子网掩码③、虚拟网络编辑器

2022-04-02 17:27:40 3068 2

原创 Linux系统编程【02】

系统调用C标准函数和系统调用关系。一个hello world 如何打印到屏幕上Open函数 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); 参数:pathname:欲打开的文件路径名...

2022-04-01 09:46:22 1460 2

原创 Linux网络编程【高并发服务器_01】

多线程/进程并发服务器使用多进程并发服务器时需要考虑以下几点①、父进程最大文件描述符个数②、系统内创建进程个数③、进程创建过多是否降低整体服务性能多进程并发服务器流程:①、socket() 创建监听套接字②、bind() 绑定地址结构③、listen() ④、while(1){ cfd = accept(); ...

2022-03-27 12:35:02 367

原创 Linux网络编程【socket编程】

网络套接字:socket 在通信过程中,套接字一定是成对出现(listen监听除外)Linux内核实现套接字通信: 一个文件描述符,两个缓冲区一个文件描述符指向一个套接字(该套接字内部由内核借助两个缓冲区实现)网络字节序:补充知识:数据在内存中存储方式:大端法(高位低地址、低位高地址)、小端法(高位高地址,低位低地址)网络数据流应采用大端法字节序网络字节序与主机字节序的转换:h:本地 n:网络 l:IP s:port(端口...

2022-03-26 16:38:56 1335

AES-CMAC c语言实现编程

亲测好用

2023-04-14

Linux系统编程配套源码

建议用Filezilla进行传输,要不然文件夹名称颜色有误

2022-03-05

Linux指令/系统编程

Linux指令/系统编程

2022-03-05

王道操作系统笔记(全)

B站同名笔记,建议保存收藏

2022-03-05

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

TA关注的人

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