编译arm版本驱动模块

1.配置Linux源码 配置要生成的arm驱动版本内核(arm7 或 arm9……)

2。编写C 文件 和 makefile 

----------makefile---------------------------------------------

obj-m := modules.o                    //生成模块名
modules-objs:= hello.o     //生成模块依赖文件  

KDIR := /usr/src/kernels/linux-2.6.28.8   //指定内核路径
PWD := $(shell pwd)  //函数调用 当前路径

CROSS_COMPILE = /opt/EmbedSky/4.3.3/bin/arm-linux- //配置编译器
CC    = $(CROSS_COMPILE)gcc

default:
    make -C $(KDIR) M=$(PWD) modules

clean:
    rm -rf *.o .* .cmd *.ko *.mod.c .tmp_versions
3.make

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ARM9的160*160液晶屏驱动。 一、 驱动使用方法: 1、 编译内核:将hgo.c复制到linux内核下drivers/char 目录,修改drvers/char/Makefile 在 obj-$(CONFIG_AT91_LED) += at91_led.o 一句之后,添加: obj-y += hgo.o 重新编译内核,驱动即可编译进内核。 2、建立设备节点:重新烧写内核后,进入系统终端,执行 #mknod /dev/hgo c 227 0 3、使用应用程序访问内核: 可以用如下方式写应用程序: int fd; fd = open (“/dev/hgo”, O_RDWR); ioctl(fd, IOCTL_LCD_RESET, 0); //read(fd, *buf, count); //write(fd, *buf, count); 详细应用程序写法可参考主板上其他设备测试程序。 二、 驱动程序说明: 1、 初始化:系统加载驱动时,会执行hgo_init_module()函数,再此函数中可以执行一些初始化的操作,目前驱动中该函数执行的操作为: a) 映射内存。 b) 配置EBI总线 c) 设置屏的复位管脚为高电平(屏的复位管脚定义为: #define PIN_RESET AT91_PIN_PB20,可根据自己的设计修改)。 d) 注册设备 2、 对屏的硬件操作: 对屏的操作,为以下4个函数: /* write data */ static void write_data(unsigned char data) { writeb( data, lcdbase + 4); } /* write instuction */ static void write_ins(unsigned char ins) { writeb( ins, lcdbase); } /* read data */ static unsigned char read_data(void) { return readb(lcdbase + 4); } /* read instruction */ static unsigned char read_ins(void) { return readb(lcdbase); } 总线上有读写两个操作,通过屏的管脚A0的不同,又有数据和指令两种。 3、 应用程序接口:应用程序接口函数有3个 device_read(); device_write(); hgo_ioctl(); 当应用程序执行read() write() ioctl() 时会分别调用到这三个函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值