at91sam9XXX的Linux驱动开发记录——暂定更新
来源:互联网 发布:中国移动手机oa软件 编辑:程序博客网 时间:2024/06/10 19:38
开贴记录一些驱动开发过程中的东西
开发前准备:驱动的开发离不开源码包,在linux源码包中对system type进行设置后,选择了什么芯片基于源码包编译的就是什么芯片的驱动。
头文件说明:驱动的开发肯定会涉及到芯片寄存器的操作。源码包中对哪种芯片进行了配置、编译,那么利用该源码包编译时头文件的目录就只想该芯片的相关头文件目录。
<linux/xxxx> 源码包根目录/include/linux
<asm/xxxx> 源码包根目录/arch/arm/include/asm 这里ARM跟配置有关,也可能是其他的
<mach/xxx> 源码包根目录/arch/arm/mach-xxxx/include/mach
一、相关函数
找相关外设的头文件时,对于at91sam9xxx这类芯片,直接看他的datasheet,再用里面的外设简写去源码包里相应的文件夹内找就可以了。例如要找操作timer的头文件,at91sam9g20的datasheet中timer counter的简写是TC,那么在arch/arm/mach-at91/include/mach对应at91_tc.h
在mach/gpio.h包含了at91sam9xxx IO的相关操作函数,对应的.c文件位于arch/arm/mach-at91中。
at91_set_gpio_input(unsigned pin, int use_pullup) 将对应IO初始化为输入,pullup为1使能上拉,为0不使能
int at91_get_gpio_value(unsigned pin) 设为输入后读取IO的值
int at91_set_gpio_value(unsigned pin, int value) 设为输出后设定IO的值
int __init_or_module at91_set_deglitch(unsigned pin, int is_on) 配置IO的“干扰滤波器”,【mostly used with IRQ handling】
在mach/gpio.h包含了at91sam9xxx Timer/定时器的相关操作函数,对应的.c文件位于arch/arm/mach-at91中。
二、驱动调用
调用open函数打开设备的时候,后面的属性参数会影响对相关函数的调用。例如O_WRONLY(只写)情况下,对read函数的调用是不起作用的。即使调用了,也不会执行。
O_RDONLY——只读 O_WRONLY——只写 O_RDWR——读写
这个可以参考这里 http://dev.yesky.com/468/7601968.shtml
三、中断
【在 linux 3.0 以后 ,原/kernel/irq/chip.c 中 set_irq_type 函数名称 变更为: irq_set_irq_type, 其他函数也类似】
set_irq_type这个函数位于<linux/irq.h>
- at91sam9XXX的Linux驱动开发记录——暂定更新
- Linux 驱动开发记录
- WEB开发的套路——记录的更新
- Easy Net Mate (暂定名) 的开发工作即将开始
- Linux 设备驱动开发 —— 基于自己的设备驱动开发环境设计驱动(一)
- Linux学习记录——持续更新
- 暂定的关卡数据格式
- linux驱动开发—beep
- Linux驱动开发(一)——驱动开发基础
- 嵌入式开发板linux驱动与pc——linux驱动的makefile
- Linux驱动开发——EXPORT_SYMBOL的使用
- [记录]暂定为第十天吧
- Linux驱动的开发与移值——分析Tiny210的声卡驱动模块
- 转—WinCE下驱动开发入门记录
- Linux下的硬件驱动——USB设备(下)(驱动开发部分)
- Linux下的硬件驱动——USB设备(下)(驱动开发部分)
- Linux下的硬件驱动——USB设备(下)(驱动开发部分)
- Linux下的硬件驱动——USB设备(下)(驱动开发部分)
- Android源码分析
- XMPP学习记录三:关于连接服务器
- Android绘画基础实例
- 面向接口编程的好处
- 字符串统计 a
- at91sam9XXX的Linux驱动开发记录——暂定更新
- 构架师的职责
- [Android实例] 收藏的Android非常好用的组件或者框架
- 单例
- Oracle10g DBCONSOLE 服务无法启动的解决方法
- 红黑树 实现 研究
- Install Android Composite ADB Interface driver for Windows 7 and Ubuntu Linux
- 用VB模拟带有修饰键的组合键
- AE+C#通过多线程向GlobeControl中增加图层