前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Linux驱动炼成记] 09-串口调试

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

作者头像
程序手艺人
发布2019-02-20 17:11:23
1.5K0
发布2019-02-20 17:11:23
举报
文章被收录于专栏:程序手艺人
实现功能

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

串口DTS配置
代码语言:javascript
复制
	//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需要的是
代码语言:javascript
复制
file xxx.so 
xxx.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=2a8193fca2caa7fcb9f62120f8bd34152a38ee9b, not stripped
  1. 写了一个小的测试程序,验证的动态库,如下 :
代码语言:javascript
复制
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接反
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年10月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现功能
  • 串口DTS配置
  • MCU进行通信
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档