这里主要想讲下海思Hi3515的UART2和UART3是如何被加载到内核中的,因为正在做一个项目需要使用四个串口,但海思提供的linux源码中只加载了两个串口的驱动,找了一圈,发现源码中没有现成的UART2和UART3的代码可以使用,只能自己动手改啦啊。。。
首先关于linux硬件模块的加载可以参考下面这篇博文:
http://hi.baidu.com/jackyu/blog/item/a89ba634e31418bcd1a2d3e5.html
好吧,我们进入正题,说说我做的过程:
Hi3515的UART驱动位于drivers/serial/amba-pl011.c
我们沿着pl011_init——amba_driver_register——driver_register——bus_add_driver——driver_attach——bus_for_each_dev往下走,找到bus_for_each_dev函数:
int bus_for_each_dev(struct bus_type * bus, struct device * start,
void * data, int (*fn)(struct device *, void *))
{
struct klist_iter i;
struct device * dev;
int error = 0;
if (!bus)
return -EINVAL;
klist_iter_init_node(&bus->klist_devices, &i,
(start ? &start->k