S3C2440串口二在linux下发不出数据,串口0,1均能正常收发。驱动是一样的! 后来发现串口二是不支持AFC自动流量控制的。其他硬件完全和串口0,1一致。 所以认为是这里的原因,arm-linux内核版本2.6.12.请高手指点一下我的具体原因出在哪里????
求教:公司自己做的板子,处理器MPC5200,扩展16550 uart(不做console),Kernel 2.6.16,之前未加载该驱动时启动正常,加载后在"Freeing unused kernel memory: 100k"挂住了。因板子与Freescale公司的lite5200b基本类似,我在arch/ppc/platform/lite5200b.c定义了以下结构(感觉在哪定义都行): [code] static struct plat_serial8250_port serial8250_ports[] = { [0] = { .uartclk = 9600*16, .iotype = UPIO_MEM, .mapbase = ...
求教:公司自己做的板子,处理器MPC5200,扩展16550 uart(不做console),Kernel 2.6.16,之前未加载该驱动时启动正常,加载后在"Freeing unused kernel memory: 100k"挂住了。因板子与Freescale公司的lite5200b基本类似,我在arch/ppc/platform/lite5200b.c定义了以下结构(感觉在哪定义都行): static struct plat_serial8250_port serial8250_ports[] = { [0] = { .uartclk = 9600*16, .iotype = UPIO_MEM, .mapbase = 0xfc000...
最近要做一个SPI转uart设备的驱动 之前只做过小型的字符驱动,比如矩阵键盘什么的 uart驱动看了一周了,一直感觉理解的不透彻 想自己下手开始写,但却不知道从哪开始 还请过来的前辈们指导下路该怎么走,谢谢啦。。。
本帖最后由 amarant 于 2011-03-18 08:48 编辑 我现在在做一个设备驱动,读取方式用的是uart,我看了下代码,仿佛内核的uart已经很完善了,是不是只要给设备做好上电,就可以直接在用户空间读取了? 那么我这个驱动read函数就空着吗?
对于串口驱动的移植准备自己分析一下源代码的,但是发现自己好多地方都只知道一 些皮毛,不明白其中的道理,所以我上网搜的时候发现有好多人写了很多很好的文章了,下面我转载的这篇就非常不错,一个困恼我好久的问题是驱动代码中只是注 册了platform驱动,而platform设备注册在哪里?这个问题困恼我好久,源代码中一直没找到,下面文章就解决了这个问题。当然文章中详细了讲 述了很多细节的知...
第一次分析内核源代码,整个内核代码绕来绕去,人比较容易晕,而且深入追踪几次后不知道自己要干什么呢?自己看内核代码,看驱动,上网搜资料也有好一段时间了,大概总结一下自己的一些心得,很简单的,不是写驱动的心得,而是怎么去查看,最近看uart终端设备驱动,就以这个为例吧。
第一,弄清楚主要结构框架
这人是大概弄清楚主要框架,流程,一般linux内核驱动都是封装,分层,抽象,继承的,所以要弄个大概,知道...
/driver/serial/serial-core.c 中实现了uart设备的通用tty驱动层,称为串口核心层。
uart驱动的主要任务是 实现serial-core.c中定义的一组uart_xxx接口。
serial-core.c串口核心层完全可以当做一个tty设备驱动的实例,它实现了uart设备的tty驱动。
一、串口核心层为串口设备驱动提供了3个结构体。
1.uart_driver
包含了串口设备的驱动名,设...
struct class *tty_class; struct device *tty_register_device(struct tty_driver *driver, unsigned index, struct device *device) { char name[64]; dev_t dev = MKDEV(driver->major, driver->minor_start) + index; if (index >= driver->num) { printk(KERN_ERR "Attempt to register invalid tty line number " " (%d).\n", index); return ERR_PTR(-EINVAL); } if (driver->type == TTY_DRI...