专栏首页程序手艺人[Linux驱动炼成记] 09-串口调试

[Linux驱动炼成记] 09-串口调试

实现功能

主控(Amlogic A113X)串口和MCU(STM32) 进行串口通信,实现数据的传输,由STM32控制灯效.看似简单的一个双方对接功能,还是走了不少弯路的.

串口DTS配置
	//Amlogic A113X引脚编号
   GPIOZ_8  -> I2C_SCK_B/UART_TX_AO_B
   GPIOZ_9  -> I2C_SDA_B/UART_RX_AO_B
   根据引脚功能中UART_RX_AO_B和dts中的serial2 = &uart_AO_B对应
   
	aliases {
		serial0 = &uart_AO;
		serial1 = &uart_A;
		serial2 = &uart_AO_B;
		serial3 = &uart_B;
	};

	uart_AO_B: serial@4000 {
		compatible = "amlogic, meson-uart";
		reg = <0x0 0x4000 0x0 0x18>;
		interrupts = <0 197 1>;
		status = "okay";
		clocks = <&xtal>;
		clock-names = "clk_uart";
		fifosize = < 64 >;
		pinctrl-names = "default";
		pinctrl-0 = <&ao_b_uart_pins>;
	};
  //串口正常加载之后,会显示 
 ls /dev/ttyS0
ttyS0  ttyS1  ttyS2  ttyS3
MCU进行通信
  1. 首先调用A方提供的动态库, 通过 file *so 发现是MIPS格式,而A113X需要的是
file xxx.so 
xxx.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=2a8193fca2caa7fcb9f62120f8bd34152a38ee9b, not stripped
  1. 写了一个小的测试程序,验证的动态库,如下 :
arm-linux-xxx/g++ -W -Wall -O2 -g -std=c++11 -Wl,-rpat=.-o xxx xxx.cpp -L . -lxxxx -lpthread 

A方提供的MCU程序使用C++ 11实现,这点还是值得学习的
  1. 调试 发现LED没有反应,这个时候只能单独测试, 通过PC的串口验证,也不行,只能排查硬件.

意外发现MCU和主控的 RX / TX接反了, 修改后正常.

经验说明项目的手板什么低级的硬件错误都可以犯, 还是要静下心来分析问题,解决问题 这次的坑:

  1. 功放IIC通讯不成功, 功放IIC SDA SCL 短路导致
  2. 串口和外设通讯不成功, RX/TX接反

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [ 物联网篇 ] 33 - 嵌入式中音频框架Pulseaudio的移植

    参考 嵌入式linux开发板使用pulseaudio连接蓝牙耳机播放音频文件 其中的Failed to find user ‘pulse’. 定位到是系统的/e...

    程序手艺人
  • 团队效率工具: 代码格式化之Clang-format

    平时团队进行合作的时候需要注意代码的格式,虽然很难统一每个人的编码风格,但是通过工具能够很好的管理代码格式。这里介绍下clang-format,它是基于clan...

    程序手艺人
  • C++之对象的销毁

    程序手艺人
  • 开奖啦!Serverless 最佳玩家名单公布

    Serverless,按中文翻译,称为「无服务器」。简单来讲,就是无需理解、管理服务器,并且可以按需使用,按使用付费。 自己拥有一台服务器可以做哪些很酷的事儿...

    腾讯云serverless团队
  • 「HTML+CSS」--自定义加载动画【016】

    文章仅作为学习笔记,记录从0到1的一个过程。希望对您有所帮助,如有错误欢迎小伙伴指正~

    海轰Pro
  • Serverless(无服务)基础知识

    链接 | juejin.im/post/5d42945ff265da03a715b2f0

    五月君
  • MWC 2018总结丨智能机“黑科技”耀眼,VR体验精彩依旧

    VRPinea
  • 详解: 25 最难点: border-collapse: separate;

    table代表这是一个表格 tr标签代表整个表格中的一行数据,只要一行都是属于他的,无论多长多一样 td代表单元格 border-collapse: se...

    贵哥的编程之路
  • 张高兴的 .NET Core IoT 入门指南:(五)串口通信入门

    在开始之前,首先要说明的是串口通信所用到的 SerialPort 类并不包含在 System.Device.Gpio NuGet 包中,而是在 System.I...

    张高兴
  • 正则表达式——表单验证

    王凡汎

扫码关注云+社区

领取腾讯云代金券