Hi3516EV200使用UART1笔记

业务中需要用到UART1,使用命令ls /dev/ttyAMA*能看到对应的串口。可是用cat /dev/ttyAMA1报错,如下:

~ # ls /dev/ttyAMA* -l
crw-------    1 root     root      204,  64 Jan  1 00:00 /dev/ttyAMA0
crw-r--r--    1 root     root      204,  65 Jan  1 00:00 /dev/ttyAMA1
~ # cat /dev/ttyAMA1
cat: can't open '/dev/ttyAMA1': No such device or address
~ #

很像是没那个设备点节,可上面明明看到了。先查一下IO复用引脚的配。

原理图中用的是10,9两个引脚,如图:

再看配置寄存器,对应的文档为:

xxxV200R001C01SPC010_ReleaseDoc\zh\00.hardware\chip\Hi3516EV200\Hi3516EV200_PINOUT_CN.xlsx


用devmem可以直接操作寄存器,指令为:

devmem 0x112C0070 32 0x00001002 #选为UART1_RXD
devmem 0x112C0074 32 0x00001002 #选为UART1_TXD

再试cat /dev/ttyAMA1还是报错。接下来,重启设备,看一下启动时,有没有打印与串口相关的信息。也没看到有用的信息。

下面只能查一下驱动,可驱动在哪里呢?网上百试一下,看到了这篇文章:

《海思HI35XX串口调试》,有以下内容:

我测试使用的是海思HI3520DV400设备,它总共有三个串口,官方提供的SDK只使能了UART0,也就是调试串口。如果要使用UART1或是UART2,用户需要自己手动设置。最直接的方式就是将设备树中对应uart的status修改为 status = "okay"。海思实际加载的串口驱动是PL011,menuconfig查看配置Device Drivers > Character devices > Serial drivers中的ARM AMBA PL011 serial port support 和 Support for console on AMBA serial port是否有选择上。重新编译内核烧入,在/dev 下可以查看是否有串口设备ttyAMA0~2。

这里的描述与我的现象很接近,去配置内核的地方看看。

打开看了,这两个选项前面为*,表示已经编译进内核了,也就是说不是这个问题。

接下来试一下stty命令,内容如下:

~ # stty -F /dev/ttyAMA0 -a
speed 115200 baud;stty: /dev/ttyAMA0line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol =
; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
~ # stty -F /dev/ttyAMA1 -a
stty: can't open '/dev/ttyAMA1': No such device or address
~ #

再看一下proc

~ # cat /proc/tty/driver/ttyAMA
serinfo:1.0 driver revision:
0: uart:PL011 rev2 mmio:0x12040000 irq:20 tx:16796 rx:513 RTS|CTS|DTR|DSR|CD|RI
~ #

上面这些信息,都只有串口0,没有串口1。现在想找,有几个串口是在哪里指定的呢。

有博客说:vi arch/arm/boot/dts/hi3516cv300.dtsi 找到uart1, 将state改为‘okay’

根据原理,内核中的那个文件夹里找到hi3516ev200.dtsi,看到里面是这样的:

怎么都是disabled呢,明明uart0是能用的。回想,刚才找hi3516ev200.dtsi时,它旁边还有个hi3516ev200-demb.dts的,打开看一下,如图:

看来,就是这里,将uart1的status改为okay,重新编译内核。

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- uImage

这里编译很快(约1分钟),因为之前编译过,这次修改的很少。

然后重新烧入flash,然后重启系统。试一下,用cat /dev/ttyAMA1不报错了。

但应该还是不通的,还按上面的配置串口引脚的复用,将配置引脚复用的指令添加开机启动,然后就可以了。

Hi3516EV200使用UART1笔记相关推荐

  1. STM8学习笔记---串口uart1

    使用uart1串口,需要用到stm8s_uart1.c和stm8s_uart1.h两个文件 1.建立工程目录结构如下: 2.编写uart.h文件如下: #ifndef __UART_H #define ...

  2. io vivado 怎么查看ps_ZYNQ 7020学习笔记之PL侧普通信号中断PS的实验

    1.参考 UG585 网络笔记 2.理论知识 见中断部分 3.实验目的 练习使用PL侧的普通信号来中断PS处理器. 4.实验过程 建立工程,设置并初始化串口中断,在运行程序之后,如果串口接收到N(1- ...

  3. 乐鑫esp8266学习rtos3.0笔记第11篇:详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  4. Linux学习笔记 驱动开发篇

    ARM Linux 驱动开发篇 本篇我们将会详细讲解 Linux 中的三大类驱动:字符设备驱动.块设备驱动和网络设备驱动. 字符设备最多,从最简单的点灯到 I2C.SPI.音频等都属于字符设备驱动的类 ...

  5. 学习笔记-CCS-MSP430F5529[快速入门篇二]

    由于2021的全国电赛延期了,从今天开始打算好好整理一下使用CCS编程的经验,本篇笔记会好好整理一下我备赛期间用CCS写的程序,包括外部中断,定时器部分的定时中断,定时器输入捕获,PWM波输出,UAR ...

  6. K210学习笔记(三) K210与STM32进行串口通信,K210发STM收

    文章目录 前言 一.以/r/n为结尾 二.K210端代码 三.STM32端 3.1 main函数 四.测试结果 4.1当收到1时 4.2当收到2时 4.3 测试视频 总结 前言 前面我们讲了STM32 ...

  7. 涂鸦LZ201-CN开发板学习笔记(一)

    涂鸦LZ201-CN开发板学习笔记(一) 前言 一.引出 二.准备流程 1.购买开发板 2.创建产品 (1)创建产品 (2)功能定义 (3)设备交互 (4)硬件开发 3.检查开发板 第一步: 第二步: ...

  8. 网上下的--ARM入门笔记

    简单的介绍 打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方. 为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所以叫笔记而不是文章,是因为它们完全是本人个人学习经验的总结,而这 ...

  9. 笔记——STM32串口USART收发数据。

    关于上次的串口内容只是知道怎么用,不晓得什么意思,这次就做个笔记详细的来描述一下.关于STM32有许多通信的协议,其中串口也是常用的通信协议,并且串口用来调试和查看信息非常重要的.包括用到阿里云的云智 ...

最新文章

  1. 别再折腾开发环境了,一劳永逸的搭建方法
  2. a href=javascritp:void(0)的用法
  3. 使用IST重新加入节点(5.7.20)
  4. UVALive 4225 Prime Bases 贪心
  5. 【Linux系统编程】可重入和不可重入函数
  6. 【Ubuntu-Tensorflow】TF1.0到TF1.2出现“Key LSTM/basic_lstm_cell/bias not found in checkpoin”问题
  7. Struts2中文件上传下载实例
  8. python字符串数组_python将字符串转换成数组的方法
  9. 作者:钱卫宁,华东师范大学数据科学与工程研究院教授、博士生导师。
  10. Javascript节点的访问
  11. pythonos模块怎么设置_Python OS模块如何使用?
  12. 多糖水凝胶的交联方式及分析方法
  13. openpyxl给excel设置条件格式
  14. SecureCRT远程操作linux系统
  15. (仿古工艺品)床榻与苏29飞机装配图
  16. 网易云催生云计算更多可能性
  17. 中考计算机必背知识点,语文中考必背知识考点(完整版)
  18. JDK9-G1 -XX:ParallelGCThreads 默认选择源码解析
  19. 机器人genghis_家用机器人的未来
  20. 戴尔m520的服务器型号,Dell服务器PowerEdge M520

热门文章

  1. java70-GUL图形用户界面初识
  2. Oracle免登录下载JDK(实测有效)
  3. Column 'id' in where clause is ambiguous
  4. win7 改装linux系统教程,linux系统改装win7
  5. 什么是Java序列化?
  6. Flink任务链Operator Chains
  7. linux的常用备份方法,Linux系统下常用的数据备份方法
  8. Lua——迭代器的使用、pairs 和 ipairs区别
  9. qemu图形界面linux,QEMU 简单几步搭建一个虚拟的ARM开发板
  10. Tita:OKR教练专家的6个OKR实施技巧