hisi35xx串口驱动的完善
鉴于hisi的uart3还没有打通,ls /dev/ | grep ttyA* ,看到的只有ttyAMA0 和ttyAMA1,且使用应用程序打开ttyAMA1设备后,使用write函数,发送,示波器观察没有波形输出。
猜想是GPIO复用管脚没打开于是编写了GPIO复用管脚驱动,加载驱动,ttyAMA1可以正常使用 。每次启动程序都要加载此驱动,比较麻烦,所以想要在内核添加,搜索UART,定位UART的位置,位于:arch/arm/mach-353xx/core.c。如下所示,添加了UART3,把从CPU的屏蔽掉。改为主CPU用。
HIL_AMBA_DEVICE(uart0, "uart:0", UART0, NULL);
HIL_AMBA_DEVICE(uart1, "uart:1", UART1, NULL);
HIL_AMBA_DEVICE(uart3, "uart:3", UART3, NULL); // static struct amba_device *amba_devs[] __initdata = {
&HIL_AMBADEV_NAME(uart0),
&HIL_AMBADEV_NAME(uart1),
&HIL_AMBADEV_NAME(uart3), // };
static struct clk_lookup lookups[] = {
{
/* UART0 */
.dev_id = "uart:0",
.clk = &uart_clk,
},
{
/* UART1 */
.dev_id = "uart:1",
.clk = &uart_clk,
},
//modify by lqh at
{
/* UART3 */
.dev_id = "uart:3",
.clk = &uart_clk,
}, { /* SP804 timers */
.dev_id = "sp804",
.clk = &sp804_clk,
},
#ifdef CONFIG_HI3536_SYSCNT
{ /* syscnt timers */
.dev_id = "syscnt",
.clk = &syscnt_clk,
},
#endif
};
这里仅仅是配置UART外设,管脚却是没有配置,配置UART1和UART3管脚使之能用。
/* init UART1 and UART3 IO*/
reg = readl((volatile void *)IO_ADDRESS(REG_UART1_RX_MUXCTRL));
reg |= 0x01;
writel(reg, (volatile void *)IO_ADDRESS(REG_UART1_RX_MUXCTRL)); reg = readl((volatile void *)IO_ADDRESS(REG_UART1_TX_MUXCTRL));
reg |= 0x01;
writel(reg, (volatile void *)IO_ADDRESS(REG_UART1_TX_MUXCTRL)); reg = readl((volatile void *)IO_ADDRESS(REG_UART3_RX_MUXCTRL));
reg |= 0x01;
writel(reg, (volatile void *)IO_ADDRESS(REG_UART3_RX_MUXCTRL)); reg = readl((volatile void *)IO_ADDRESS(REG_UART3_TX_MUXCTRL));
reg |= 0x01;
writel(reg, (volatile void *)IO_ADDRESS(REG_UART3_TX_MUXCTRL));
REG_UART1_RX_MUXCTRL具体平台的复用寄存器地址,看文档。
经过此配置uart1和uart3能工作了。
发现:
1、串口输入什么进去,该窗口就能输出什么!该功能是liunx的串口的会显功能。可以通过应用程序屏蔽掉。options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG | NOFLSH|ECHOK|ECHONL); /*屏蔽会显功能*/
2、设置超时功能
options.c_cc[VTIME] = ; /* 0s*/经过此设置串口即可工作。
3、设置接收几个字符返回
options.c_cc[VMIN] = ; /* define the minimum bytes data to be readed,*///只要串口收到一个字符都会读取得到
hisi35xx串口驱动的完善的更多相关文章
- linux 串口驱动(二)初始化 【转】
转自:http://blog.chinaunix.net/uid-27717694-id-3493611.html 8250串口的初始化: (1)定义uart_driver.uart_ops.uart ...
- linux2.6.30.4内核移植(4)——完善串口驱动
在内核里支持两个串口,也就是芯片的UART0和UART1,而UART2的驱动是针对红外接口的,而不是串口驱动,这里将其修改为串口驱动. 一.修改内核源码arch/arm/mach-s3c2440/ma ...
- linux UART串口驱动开发文档
转:http://www.360doc.com/content/10/0417/18/829197_23519037.shtml linux UART串口驱动开发文档时间:2010-01-09 14: ...
- Yocto开发笔记之《串口驱动调试》(QQ交流群:519230208)
QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 ======================================================== 串口驱动各 ...
- Smart210学习记录------linux串口驱动
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=27025492&id=327609 一.核心数据结构 串口驱动有 ...
- linux的串口驱动分析
1.串口驱动中的数据结构 • UART驱动程序结构:struct uart_driver 驱动 • UART端口结构: struct uart_port 串口 • UART相关操作函数结构: st ...
- linux串口驱动分析——发送数据
一.应用程序中write函数到底层驱动历程 和前文提到的一样,首先先注册串口,使用uart_register_driver函数,依次分别为tty_register_driver,cdev_init函数 ...
- linux串口驱动分析——打开设备
串口驱动是由tty_driver架构实现的.一个应用程序中的函数要操作硬件,首先会经过tty,级级调用之后才会到达驱动之中.本文先介绍应用程序中打开设备的open函数的整个历程. 首先在串口初始化中会 ...
- linux串口驱动分析
linux串口驱动分析 硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作 ...
随机推荐
- jupyter notebooks 中键盘快捷键
键盘快捷键——节省时间且更有生产力! 快捷方式是 Jupyter Notebooks 最大的优势之一.当你想运行任意代码块时,只需要按 Ctrl+Enter 就行了.Jupyter Notebooks ...
- mysql触发器Before和After的区别
Before与After区别:before:(insert.update)可以对new进行修改. after不能对new进行修改. ...
- matplotlib figure图像-【老鱼学matplotlib】
如果我们想要显示多个图像,有点类似多窗口显示图像这个概念,则就会用到plt.figure() 直接上例子: import numpy as np import pandas as pd import ...
- vuejs2.0如何获取dom元素自定义属性值
1.设置定义属性值 :data-value=".." <ul class="header-ul"> <li class="flex ...
- 此处为当前页,设置此处的href点后没有效果
<%--此处当前页不能点,设置href为没有动作Javascript:void(0); --%> 如果javaScript:void(0);写错了,那就很尴尬(某些浏览器忽略该错误如:谷歌 ...
- jQuery中height()不能精确计算的问题
jQuery中关于高度的计算有三个方法:outerHeight().innerHeight().height() outerHeight():获取元素集合中第一个元素的当前计算高度值,包括paddin ...
- luogu P3952 时间复杂度 模拟
题目链接 luogu P3952 时间复杂度 题解 直接模拟即可 注意不要直接return 我真是naive ...... 代码 #include<map> #include<sta ...
- git 中文文档 及测试命令
git 使用官方中文文档 https://git-scm.com/book/zh/v2/ 或者你在github上只填写一个仓库名称点击创建后会跳转一个页面给出参考命令如下 echo "# w ...
- 2017-2018 ACM-ICPC, NEERC, Northern Subregional Contest
A. Auxiliary Project 完全背包. #include<stdio.h> #include<iostream> #include<string.h> ...
- c#常用数值范围汇总
short.MaxValue 32767 short.MinValue -32768 int.MaxValue 2147483647 int.MinValue -2147483648 long.Max ...