厂商已提供芯片的LINUX下的驱动代码,如何将其集成到内核中?

winloss 2011-11-22 08:11:20
一套开发板(有ANDROID全套源码),想在此板集成一“USB转串口”的芯片,厂商提供驱动源码,想要将该源码集成到系统源码中去,使上层能够访问此虚拟串口。
请教高手,大致需要哪些步骤,不胜感激!
...全文
191 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
northcan 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhpy_0825 的回复:]
要看下源码部分是那些方面的, 一般驱动移植的步骤是:

1. 把驱动源码放到内核源码的相应目录下(USB设备一般放在 kernel/drivers/usb目录下);
2. 修改Kconfig和Makefile文件, 添加配置项,并在meke menuconfig中选中设备使参与编译;
3. 修改驱动源码中系统函数调用和平台系统函数定义不同的部分,如GPIO操作函数, 中断申请及处理模式……
[/Quote]

+1
zhpy_0825 2011-11-23
  • 打赏
  • 举报
回复
要看下源码部分是那些方面的, 一般驱动移植的步骤是:

1. 把驱动源码放到内核源码的相应目录下(USB设备一般放在 kernel/drivers/usb目录下);
2. 修改Kconfig和Makefile文件, 添加配置项,并在meke menuconfig中选中设备使参与编译;
3. 修改驱动源码中系统函数调用和平台系统函数定义不同的部分,如GPIO操作函数, 中断申请及处理模式等等(因为厂商提供的驱动源码不一定是在你用的开发板上调试的, 不同的主芯片上这些系统函数是不完全相同的);
4. 编译内核, 如果出错根据提示信息对驱动代码做相应修改.
5. 升级测试,设备仍不能使用的话就按照相应的log信息对源码做进一步的修改处理.
leuzz 2011-11-23
  • 打赏
  • 举报
回复
有驱动源码就好办了
首先你得写个makefile 把这个makefile和驱动源码放在同一个目录

ifeq ($(KERNELRELEASE),)

KERNELDIR ?= /kerne/linux-2.6.14 #内核源码的路径

PWD := $(shell pwd)

modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

.PHONY: modules modules_install clean

else
obj-m := hello.o #你的驱动程序

endif



然后make一下,,会生成.ko文件,把它下到你板上,insmod这个ko文件,看一下/dev下有没有生成相应的设备文件,如果没有,要手动添加mknod /dev/usbtty1 c x x

好久没碰驱动了,大概步骤就这样,还有些细节遇到了再问,有问题一起探讨,哈哈

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧