Linux系统编程与驱动开发课程总结.pdfVIP

  • 0
  • 0
  • 约2.6千字
  • 约 3页
  • 2026-01-28 发布于北京
  • 举报

Linux课程总结

前两周:系统编程

1,安装linux开发环境以及基本使用讲解

2.im,gcc,的使用,动态库,静态库的制作

3.文件IO操作(缓冲区基于非缓冲区)

缓冲区:单个字符读写字符串读写块读块写格式化读写文件指针定位(rewindfseek)

系统调用:readwritelseekioctlfasyncpoll等

ioctl第二个参数:32位的数(分好几个部分,其中有一个部分真正传递到内核空间)

fasync:赋值文件描述符获取文件属性设置文件相关属性

poll轮询:

4.多进程初步

进程的创建,,僵尸进程.孤儿进程,进程资源

5.进程间通信信号和管道

信号:捕捉忽略默认处理软中断

管道:有名管道无名管道单向性

6.共享内存和消息队列

共享内存:创建共享内存→将共享内存映射到内存空间→内存操作函数(memcpy)→分离→删

消息队列:创建消息队列→添加→获取→删除

7.信号量集

进程间同步以及互斥时使用.

创建→设置信号值→操作默认使用→删除

生产者消费者问题:练习创建信号量集以及使用

模拟取款操作:进程间通信,进程创建

8.多线程操作

线程的创建→取消→(,等待等)

9.线程的同步与互斥

信号灯,条件变量锁→多线程操作一定要写保护机制

10.网络编程

套接字编程(TCP以及UDP):

TCP:创建套接字→绑定端口→设置→等待连接

UDP:创建套接字→绑定端口→等待连接

系统编程:

更好的了解linux操作系统:应用在应用层shell以及makefile网络编程(httpIPftp)

第三周:驱动环境

1.裸机介绍

2.Uboot内核文件系统

3.模块化编程

Uboot→内核→文件系统

Uboot:启动内核,由汇编+c编写,:用汇编包括初始化串口设置时钟启动内核:用

c语言

内核:linux操作系统

文件系统:制作的共享目录包括命令,库等

模块化编程:动态加载模块以及传递参数等等

第四周:驱动理论

1.驱动框架

2.字符设备(早起经典方式linux2.6杂项设备)

手动创建mknod/dev/ledc2500

自动创建节点:先创建设备类,再创建设备节点

staticstructclass*dev_class;

staticstructdevice*device_p;

3.ledkeybeep驱动

查询电路图→查询→映射地址→填充相应file_operations里边的函数

具体填充那些函数根据驱动硬件决定

多节点创建:完整设备号自加,对应的主设备号不变,次设备号依次加一

4.完善接口函数

read:让上层可以到相应信息:copy_to_user

write:让上层可以写入相关信息:copy_from_user

ioctl:控制.将第二个参数以及第三个参数传递到驱动空间里边

llseek:文件定位

poll:上层一定时间内去轮询指定的操作,如果发生返回真否则返回假

fasync:异步机制

5.linux下的中断编程,以及等待队列定时器

将IO配置为中断→中断服务函数(确定中断源)→修改定时器→定时器函数→等待队

6.内核同步机制

信号量,原子操作.自旋锁.异步

保护临界区代码,保护操作不被打断保护资源不被多个应用

7.linux下的串口编程

1.裸机的串口配置配置IO→配置串口寄存器(协议,波特率)→判断串口的状态寄存器

→数据寄存器

2.Linux下的串口驱动:映射IO地址,串口地址→配置IO→配置串口寄存器(协议,波特

率)→书写发送接收函数→完善readwrite接口

read:串口驱动read函数串口等待接收

wite:应用层写入到驱动层再通过串口发送

串口:cpu引出来的IO,引来全是TTL电平,可以直接使用(GSM,串口蓝牙

z

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档