海思3515添加串口

原文出处:http://wuquan-1230.blog.163.com/blog/static/298111532013990483191/

开始系统dev下面只有ttyAMA0和ttyAMA1两个串口设备,其中ttyAMA0是调试串口,hi3515芯片共有4个串口,其他的两个需要修改内核代码,重新编译内核才可以使用,具体修改如下:

1、  配置内核

进入到内核根目录执行makemenuconfig命令跳出如图所示:

依次选择Device Drivers ->选择 Character devices ->选择Serial drives进入串口驱动目录如图所示

进入后查看需要将ARM AMBAPL011 加载进内核编译.

 

2、  代码修改

Hi3515 的串口挂载在AMBA 总线上,所以我们必须将串口设备注册到AMBA 总线,首先初始化AMBA 总线设备链表,然后判断是否有设备要添加,如果有则调用__driver_attach 函数将新设备添加至AMBA 总线设备链表。

代码修改

A:我们知道了驱动代码在drivers/serial/amba-pl011.c文件中;根据Hi3515H.264编解码处理器用户指南.pdf文档11.2UART篇章介绍Hi3515 提供了以下4 个UART 单元:

UART0主要用于调试。

UART1

主要用于接RS-485 总线和控制云台。

UART2、UART3

主要用于扩展接口,如外部MCU(MicroController Unit)。

目前只能看到UART0 和UART1 那么就在arch/arm/mach-hi3515v100/core.c中所有出现uart0和uart1的地方都添上uart2和uart3

Line 169附近 增加

#defineUART3_IRQ { INTNR_UART3, NO_IRQ }//oleitao 2012-03-21 add

Line 173 附近增加

HIL_AMBA_DEVICE(uart3,"uart:3",  UART3,    NULL);//oleitao 2012-03-21 add

Line 189行附近 增加

&HIL_AMBADEV_NAME(uart3),//oleitao 2012-03-22

B:根据海思文档知道UART2和UART3接口信号收发与VI和GPIO的部分信号线复用,UART2和UART3的接受和发送分别对应管脚为VI0HSVI0VS 和VI2HS VI2VS;对应的寄存器分别为reg0(偏移地址0x0000)、reg1(偏移地址0x0004)和reg10(偏移地址0x0028)、reg11(偏移地址0x002C)(由于-v设备没有对IO寄存器使用)所以在串口初始化的地方直接对该地址设置1即可;

VI0HSVI0VS 和VI2HS VI2VS 管脚的具体复用情况。

00:VI0HS;

01:URXD2;

10:GPIO1_3;

最后在hisilicon_init_machine函数后面增加对这4个管脚复用设置为串口使用;

 writew(1, IO_ADDRESS(REG_BASE_IO));

 writew(1, IO_ADDRESS(REG_BASE_IO+0x0004));

 writew(1, IO_ADDRESS(REG_BASE_IO+0x0028));

 writew(1, IO_ADDRESS(REG_BASE_IO+0x002C));

然后编译内核重新下载内核 查看dev目录下有了ttyAMA2 和ttyAMA3

然后用串口测试工具测试OK!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值