基于华邦W90P710处理器的Linux内核应用及串口驱动的实现
通过以上几个函数的处理,实现了串口的驱动。
4 驱动程序编译进Linux内核
以下以UART1为例,介绍驱动程序编译进Linux内核的过程,步骤如下:
(1)添加主次设备号。
主次设备号用来标识一个具体设备。主设备号用于标识设备类型,每种类型的设备需要一个对应的设备驱动程序。一个主设备可以有多个具体的设备与之对应。次设备号用于区分使用同种驱动程序的同类设备中多个不同的设备实例[7]。
在W90P710-?滋Clinux/?滋Clinux-dist\linux-2.4.x/include/
linux目录下的major.h中定义主设备号,添加如下代码:
#define SERIAL1_MAJOR 230
在W90P710-?滋Clinux/?滋Clinux-dist/vendors/Winbond/W90P710目录下的makefile中建立设备主次设备号(主设备号为230,次设备号为1),添加如下代码:
serial1,c,230,1 \
(2)在W90P710-?滋Clinux/?滋Clinux-dist/linux-2.4.x/drivers/char目录下的makefile中添加如下代码:
obj-$(CONFIG_TOPBAND_SERIAL1)+=w90p710_serial_1.o
(3)在W90P710-?滋Clinux/?滋Clinux-dist/linux-2.4.x/drivers/char目录下的config.in字符设备段中添加如下代码:
#if [ "$CONFIG_TOPBAND_SERIAL1" = "y" ]; then
bool 'Topband serial1 support' CONFIG_TOPBAND_
SERIAL1
#fi
(4)在W90P710-?滋Clinux/?滋Clinux-dist目录下运行make menuconfig,在menuconfig的字符设备选项中可以看见刚刚添加的"CONFIG_TOPBAND_SERIAL1"选项,选上该项。使用make dep、 make clean、make三个命令编译Linux内核,生成内核文件linux.bin[8]。
(5)在W90P710-?滋Clinux/romdisk/dev目录下创建设备文件, 输入命令:
mknod serial1 c 230 1
生成设备文件"serial1",应用程序通过使用"/dev/ serial1"这个设备文件名就可对串口进行操作。
最后编写简单的串口测试程序,编译生成镜像文件;再把镜像文件romfs.img和内核文件linux.bin下载到开发板,把开发板的串口和PC机相连,PC机端使用串口调试工具发送测试数据,开发板能正确收发数据。
本文按驱动程序的功能详细介绍了W90P710微处理器实现串口驱动的方法,串口驱动程序是很典型的字符设备驱动程序,其他字符设备驱动和串口的实现方法是相同的,这对开发其他字符设备驱动程序有一定的借鉴作用。
- Linux内核编译过程详解(kernel2.6.7) (04-16)
- 基于APIC时钟的嵌入式Linux内核实时化研究(09-14)
- Linux内核函数鲁棒性关联测试(11-08)
- 嵌入式Linux下的LCD驱动程序设计与实现(04-18)
- 嵌入式系统应用中实现RS485的方向切换(09-20)
- Linux内核的Nand驱动流程分析(11-28)