
1.请选择一个放置驱动代码的位置,比如:drivers/char/xxx.c
2.在drivers/char/Kconfig文件添加以下内容:
menu " xxx support"
config xxx
tristate "xxx support"
---help---
xxx use gpio as ir input .
If you want xxx support, you should say Y here and also to the
specific driver for your bus adapter(s) below.
This xxx support can be built as a module.
endmenu
3.编写Makefile,位置与上相同(drivers/char/),内容如下:
obj-$(CONFIG_xxx)+= xxx.o
4.修改上一级Makefile和Kconfig
//根据自己驱动的位置做相应的修改,参考上级的Makefile和Kconfig的内容
至此,修改完毕,此时可以使用make menuconfig,发现已有 xxx support ---> 选项,进入后选择M,再make modules,到char目录下,已生成xxx.ko。
最后,再进入make menuconfig ,选择 xxx support,编译进内核.
二. 驱动作成模块加载
一般在开发时采用这种方式比较方便,无需每次都要通过tftp下载内核,nfs去挂载根文件系统,只需要把驱动作为模块在本地虚拟机中完成 *** 作。
1>.模块制作
a.驱动编译
把 xxx.c文件放入drivers/char子目录下,修改drivers/char/Makefile
obj-m += xxx.o
然后,
make modules,生成模块都 drivers/char/xxx.ko
再把 xxx.ko 放到单板根文件系统的/lib/modules/2.6.14.1(自己的内核版本)/目录下
b.驱动测试
编写测试代码及Makefile文件make后,把生成文件放在单板跟文件系统/usr/bin/目录下
2>.调试
在根文件系统中建立设备文件:
# mknod /dev/buttons c 232 0
加载模块
# insmod s3c24xx_buttons
卸载模块
# rmmod s3c24xx_buttons
以下答案是我从我爱买电脑配件批发网上摘过来的,希望能帮到你。由于公司产品要做行业市场,而产品与行业用户间PC的通讯为RS232串口方式。而行业用户那里的PC都没有串行口,而且行业用户PC *** 作系统为Turbo Linux。怎么办?
办公室内有台机器是RedHat Linux 9.0 一个是 Fedora Core 5 。就先在这两个系统上试验吧。这两台电脑上各自本身就有2个RS232串口。
一、PCI转串口卡安装 型号NetMos Nm9835CV
1、插入PCI卡到主机
2、启动 Linux,打开终端
3、输入命令:#setserial /dev/ttyS0 -a (COM-1)
显示内容:/dev/ttyS0, Line 0, UART: 16550A, Port: 0x3f8, irq: 4
Baud_base: 115200, clos_delay: 50, divisor: 0
closing_wait: 3000, closing_wait2: infinite
Flags: spd_normal skip_test
4、输入命令:#setserial /dev/ttyS2 -a (COM-3)
显示内容:/dev/ttyS2, Line 2, UART: unknown, Port: 0x3e8, irq: 4
Baud_base: 115200, clos_delay: 50, divisor: 0
closing_wait: 3000, closing_wait2: infinite
Flags: spd_normal skip_test
第3、4步 *** 作的目的主要是对主机自带串口及PCI扩展串口的区别。区别在于4显示的内容中UART:未unknow。不过若您检测这一步的时候 UART为16550A而不是unknow,证明你的系统已经认识了扩展的串口,不需要进一步设置,直接跳入第8步测试就可以了。
5、需要输入命令查看一下您当前PCI检测的状态,以便对扩展串口进行设置
#more /proc/pci
会显示出一堆的信息,不要因为看不懂而吓坏了。只要看到类似于这个PCI的信息,比如:PCI communication。。。或者Board with Nm9835CV part。。。 可能就是这个卡了,主要看看它的终端是多少,即irq多少及分配的地址是多少。例如:(不一定完全一样)
Board with Nm9835CV part irq:11
I/O at 0xc000 [0xc001] serial port 1
I/O at 0xc400 [0xc401] serial port 2
I/O at 0xc800 [0xc801] not used
I/O at 0xd000 [0xd001] not used
I/O at 0xd400 [0xd401] not used
I/O at 0xd800 [0xd801] not used
6、知道PCI扩展卡的终端为11 串口1地址为0xc000 串口2地址为0xc400..
就可以设置扩展的串口了。输入命令:
setserial /dev/ttyS2 port 0xc000 UART 16550A
irq 11 Baud_base 115200
另一个串口也类似的这么 *** 作
7、设置完毕后,就可以看看设置的情况了,输入第2步的命令看看,UART是否就是16500A 而不是 unknow了,如果是16500A恭喜,可能设置好咯,如果不是那就再检查一下吧。
8、设置好了后是不是需要测试一下是否能够通讯呢?最好的办法是两台pc相连。如果pc为windows *** 作系统就用超级终端,是linux呢就用minicom吧
9、装有linux的机器,首先需要设置一下监听的串口参数,输入命令
#minicom -s
进入界面后有个框d出来,如果你还认识点英文单词的话,就回知道选择哪个的。应该是第三个吧,串口设置。
将第一行更改为 /dev/ttyS2
波特率也更改您所需要的。
更改完后保存,保存的那个菜单应该是 save ... df1
最后 exit
10、在另外一台机器发送数据,这台机器minicom界面就能够收到信息了,成功后觉得挺有意思。另外不要把两个COM顺序弄翻了,如果弄错了哪个是COM3 COM4测试可就不灵便咯。
1、在控制台输入lsmod,先看看能否检测到这个设备,就看有没有pl2303字眼可以了。如果有,则不需要再装驱动。2、另外如果有的话最好再用dmesg|grepusb查找如果看到:drivers/usb/serial/usb-serial.c:USBSerialsupportregisteredforGeneric。就说明设备已被识别,然后往下看rivers/usb/serial/usb-serial.c:USBSerialsupportregisteredforPL-2303,usb2-2:PL-2303converternowattachedtottyUSB0(orusb/tts/0fordevfs)如果没有则需要驱动程序,一般硬件厂商都会提供,如果真的没有的话就只有到网上下载了,一般2.6内核以上的都支持。
3、安装完毕后再输入这个命令瞧瞧,是否安装成功。lsmod|grepusbserial。如果有usbserial,说明系统支持USB转串口。
4、驱动安装完毕后,就需要安装串口软件,这里推荐cutecom和puttycutecom安装sudoapt-getinstallcutecom。putty安装sudoaptinstallputty或sudopacman-Sputty
5、然后启动cutecom命令sudocutecom,之后你就可以看到哪些串口正在连接状态。
6、当开发板启动后,我们需要传入elf或bin文件,此时需要用到tftp,在控制台输入:sudoapt-getinstallxinetd,sudoapt-getinstalltftptftpd并等待安装完成后,输入:sudovi/etc/xinetd.d/tftp输入i,进入插入模式,随后按esc输入wq。保存。
7、第一次启动时和每次更换目录时都要执行sudo/etc/init.d/xinetdrestart,不然会找不到文件。
8、喜欢用putty的可以在控制台输入sudoputty运行程序。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)