这里主要想讲下海思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 ? &a

本文详细介绍了如何在海思Hi3515平台上加载UART2和UART3的驱动。作者从源码分析开始,通过`bus_for_each_dev`函数追踪驱动加载过程,并在发现只加载了两个串口后,进一步在`arch/arm/mach-hi3515v100/core.c`中添加了剩余串口的信息。在解决串口收发数据的复用引脚配置问题后,成功实现了UART2和UART3的驱动加载并能正常工作。
最低0.47元/天 解锁文章
1971

被折叠的 条评论
为什么被折叠?



