摘要:
驱动框架 通过使用platform设备驱动框架,实现led驱动与设备操作的分离。 我们关注led_drv里面的 struct platform_driver led_drv里面的.probe函数,当有同名的device注册到内核,将运行这个driver的probe函数(同名的:led_dev里面的struct platform_device led_dev里面的.name与 struct p... 阅读全文
摘要:
驱动程序 1 /* 2 * 参考: 3 * .\linux-2.6.22.6\drivers\mtd\devices\mtdram.c 4 * .\linux-2.6.22.6\drivers\mtd\maps\physmap.c 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include... 阅读全文
摘要:
修改rcS启动脚本,使开发板初始化完成,自动挂载共享文件夹 修改开发板ip,使之与虚拟机处于同一网段(二者可以互ping) 挂载虚拟机的共享文件夹 rcS 1 ifconfig eth0 192.168.0.172 3 mount -a4 mkdir /dev/pts5 mount -t devpts devpts /dev/pts6 mount -t nfs -o no... 阅读全文
摘要:
硬件原理及分析 管脚说明 Pin NamePin FunctionR/B(RnB)The R/B output indicates the status of the device operation. When low, it indicates that a program, erase or random read operation is in process and... 阅读全文
摘要:
实现 ①编写驱动框架 ②编写硬件实现代码 (在Linux系统下操作硬件,需要操作虚拟地址,因此需要先把物理地址转换为虚拟地址 ioremap()) 如何实现单个灯的操作: 实现方法之一——操作次设备号 主设备号:用于查找对应的文件操作结构体; 次设备号:用于区分同类型设备下的不同设备; 实例 driver.c 1 #include 2 #include 3 #in... 阅读全文
摘要:
参考文档:《液晶屏.pdf》《S3C2440用户手册》《JZ2440-V3原理图》 frame buffer: 显存,用于存放LCD显示数据;frame buffer通过LCD控制器和LCD Panel建立一一映射关系; LCD控制器: 参考LCD用户手册,配置LCD控制器,用于发出LCD控制信号,驱动LCD显示; 扫描方向: ... 阅读全文
摘要:
前言 使用标准SPI指令格式; 3字节地址模式或4字节地址模式; 支持SPI 总线 模式0 和 模式3; 存储容量32MB; 时钟频率范围:80Mhz – 104Mhz; 主机:STM32F103ZET6;主机的SPI总线模式应该与从机的SPI总线模式保持一致; 电路原理 内存组织 状态寄存器和扩展地址寄存器 ... 阅读全文
摘要:
(一)基本概念 对并发的管理是操作系统编程领域中的核心问题之一。 设备驱动程序开发者必须在开始设计时就考虑到并发因素,并对内核提供的并发管理机制有深刻的认识。 竞态:竞争状态; 引发竞态的原因是:并发式访问同一共享资源: ①多线程并发访问; ②抢占式并发访问; ③中断程序并发访问; ④SMP(Symmetric Multi-Processing)核间并发访问; 竞态造成的影响:处于竞态... 阅读全文
摘要:
重要概念: dev_t:内核中用来表示设备编号的数据类型 通过设备编号获得主、次设备号 1 //dev_t dev;2 #define MAJOR(dev)((unsigned int) ((dev) >> MINORBITS))3 #define MINOR(dev)((unsigned int) ((dev) & MIN... 阅读全文
摘要:
编写驱动程序的第一步:定义驱动程序为用户程序提供的能力(机制)! a、模块运行于内核空间 应用程序运行于用户空间 b、模块运行时,分配的栈很小,注意栈溢出; c、具有两个下划线前缀(__)的函数,通常是底层组件的接口,需要谨慎使用; d、内核符号表 公共内核符号表用于解释模块内未定义的符号,它包含了所有的全局内核项(函数和变量) 的地址;导出... 阅读全文