linux驱动开发入门(学习记录)

2023.7.6及7.7

概述了解

cpp 复制代码
                                      一
1.驱动框架
2. 字符设备
块设备,存储相关
网络设备驱动
不一定属于某一种类型
                                      二
1.获取外设或传感器数据,控制外设,数据会提交给应用程序
2.编写一个驱动,及测试应用程序 app。驱动和应用完全分开
3.驱动程序(内核空间)应用程序(用户空间)
4.应用程序-->内核资源(系统调用,异常,陷入)、
5.应用程序通过API函数进行系统调用,POSIX,API,C库
6.陷入-->内核 系统调用号---系统调用
7.驱动设备表现就是一个/dev/下的文件,应用程序调用open,write,close
8.编写驱动时也要编写驱动对应的open,write等,字符设备驱动file_operations结构体
                                      三
1.字符驱动编写---file_operations
2.2种运行方式
(1):将驱动编译进Linux内核中,则当Linux内核启动的时候就会自动运行驱动程序
(2):将驱动编译成模块(.ko)在Linux内核启动以后使用"insmod"加载驱动模块,,,,,<调试驱动>
3.module_init(xxxxx_init)  //注册模块加载函数
 module_exit()   //注册模块卸载函数
                                      四


cpp 复制代码
1.不能使用c库开发驱动程序
2.没有内存保护
3.内核栈小
4.考虑可移植性:   字节序,
给用户提供统一的编程接口,
使用宏代替设备端口的物理地址
不同处理器,使用处理器相关函数

                                       五
1.处理器:intel的PXA系列,ARM的strongARM,MIPS technologies的MIPS,摩托罗拉龙珠,日立SH3,德州仪器OMAP系列
2.ARM处理器系列:ARM7系列,ARM9系列,ARM9E系列。。。。。。。。。。。。
3.ARM处理器选型:
处理器核
系统时钟控制器:::::系统时钟决定了芯片的处理速度
存储器
GPIO数量 
中断控制器
IIS总线接口::::开发音频应用产品
nWAIT信号::外部总线速度控制信号。。利用nWAIT信号与GAL芯片可以实现符合				
PCMCIA标准的WLAN卡和蓝牙卡的接口
实时时钟
LCD控制器
PWM输出。。。。。。。。。。。
4.S3C2400开发板:::。。。。。。。。。。

linux内核子系统
1.进程管理:::进程是操作系统分配资源的基本单位,CPU调度的基本单位
就绪,执行,阻塞态
2.内存管理:::内核为每个进程创建一个虚拟地址空间,虚拟地址空间进行管理
3.文件系统:::
4.设备管理:::完成数据从设备到内存的传输。。数据首先从设备传入内存----CPU处理-----数据传入内存或设备
5.网络:::

linux源代码结构分析
1.arch目录::包含与体系结构相关的代码
2.drivers目录::linux内核支持的大部分驱动程序


相关推荐
听风34720 分钟前
Arch Linux 软件安装完全指南
linux·运维·archlinux·pacman
网络安全零基础教程1 小时前
网络安全春招面试避坑与复盘指南
linux·网络·安全·web安全·面试·职场和发展
寒月小酒1 小时前
第五章 生成集成 和第六章 RAG评估(all-in-rag学习)
数据库·学习
扛枪的书生2 小时前
TigerVNC 安装流程
linux
魔城烟雨2 小时前
从零开始学习betaflight《5-坐标系》
学习
Mortalbreeze2 小时前
深入 Linux Socket 编程:端口号、网络字节序与 struct sockaddr 详解
linux·服务器·网络·c++
笔夏2 小时前
【移芯平台CAT1模组】烧写固件
stm32·单片机·学习
憧憬成为java架构高手的小白2 小时前
黑马八股--spring框架学习
java·学习·spring
躺柒2 小时前
读半导体简史08大型机
linux·服务器·c语言·数据库·unix·ibm
井川廊咏2 小时前
【总集篇】Linux | 如何创建一个 home 目录在 /data 磁盘的 sudo 用户(补档)
linux·运维·服务器