飞腾D2000+X100的UART串口调试方法

文摘   科技   2023-12-13 18:10   天津  


欢迎点击蓝字关注我

回复“加群”,加入飞腾爱好者交流群



一、测试使用主板的串口说明

D2000自带的UART0直接引出9针全功能RS232串口,UART1为CPU调试串口,UART2和UART3接485接口芯片转为RS485,此外,主板还有X100 usb2.0转出8路RS232,详细硬件框图如下:

源芯片串口号串口电平连接器丝印
D2000UART0RS232COM0
D2000UART1TTL调试串口DEBUG PIN1 PIN3 PIN5
D2000UART2RS485COM485-1
D2000UART3RS485COM485-2
X100USB6RS232*8COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8


二、UART串口测试

2.1 D2000 UART0-3硬件接口与系统接口ttyAMA0-3的对应关系

开机进入系统后,使用的命令:

  1. ls /dev/tty*

通过查看/dev目录下tty相关的设备可以发现对应的串口,如下图所示:

由此可以看出,/dev/ttyAMA0-3串口有四个,/dev/CH9344USB0-7串口有八个,其余的ttyS0-59是uos系统默认创建的,从数量上看可以猜测/dev/ttyAMA0-3为D2000自带的四个UART,/dev/CH9344USB0-7为X100芯片usb接口外接usb转串口芯片实现的8个串口,为了验证我们的猜想,我们可以通过系统下dmesg命令确认相关串口对应关系,使用命令如下:

  1. dmesg |grep ttyAMA*

执行结果如下:

根据打印信息,可以看出:

ttyAMA0 的UART寄存器基地址为0x28001000

ttyAMA1 的UART寄存器基地址为0x28000000

ttyAMA2 的UART寄存器基地址为0x28002000

ttyAMA3 的UART寄存器基地址为0x28003000

查下《腾锐D2000软件编程手册V1.2.pdf》中5.5.2节UART寄存器基地址对应关系如下:

可以找到硬件D2000 UART0-3与UOS下ttyAMA0-3的对应关系如下:

ttyAMA0 —— UART1

ttyAMA1 —— UART0

ttyAMA2 —— UART2

ttyAMA3 —— UART3

2.2 X100 USB转RS232 硬件接口与系统接口对应关系

通过类似的方法可以从dmesg中获取ttyCH9344USB0-7的接口信息,命令如下:

  1. dmesg |grep ttyCH*

通过以下命令查看usb串口的系统下接口和驱动:

  1. lsusb -tv

  2. ll /dev/ttyCH9344USB*

执行结果如下:

通过以下命令可以查看usb转串口的驱动:

  1. root@phytium-PC:/proc# dmesg |grep 9344

  2. [ 32.682819] usb_ch9344 13-1.4:1.0: ttyCH9344USB from 0 - 7: ch9344 device attached.

  3. [ 32.682872] usbcore: registered new interface driver usb_ch9344

  4. [ 32.682873] ch9344: USB serial driver for ch9344/ch348.

  5. [ 32.682874] ch9344: V1.9Beta On 2022.04

  6. [ 93.367257] Modules linked in: bnep nfnetlink_queue nfnetlink_log nfnetlink fuse st bluetooth ecdh_generic rfkill cpufreq_powersave nls_iso8859_1 nls_cp437 aes_ce_blk crypto_simd cryptd aes_ce_cipher crct10dif_ce snd_usb_audio ghash_ce aes_arm64 sha2_ce snd_usbmidi_lib sha256_arm64 sha1_ce snd_rawmidi ch9344 vxd(+) img_mem scpi_hwmon at24 uos_resources(O) uos_bluetooth_connection_control(O) lightorange lightnut lightfig lightcherry filearmor(O) smc_dri(O) binder_linux(O) ashmem_linux(O) efivarfs ip_tables x_tables pvrsrvkm phytium_x100_i2s_lsd phytium_dc_drm phytium_x100_i2s_mmd i2c_hid button spidev rtc_ds1307 usbhid motorcomm

  7. root@phytium-PC:/proc# cd /boot/

  8. root@phytium-PC:/boot# ls

  9. config-4.19.0-arm64-desktop initrd.img-4.19.0-arm64-server

  10. efi lost+found

  11. fonts System.map-4.19.0-arm64-desktop

  12. grub vmlinuz-4.19.0-arm64-desktop

  13. initrd.img-4.19.0-arm64-desktop

  14. root@phytium-PC:/boot# grep 9344 ./config-4.19.0-arm64-desktop

  15. CONFIG_CH9344SER=m

  16. root@phytium-PC:/boot# cd /lib/modules

  17. root@phytium-PC:/lib/modules/4.19.0-arm64-desktop# find . -name *9344*

  18. ./kernel/drivers/tty/wch/ch9344ser

  19. ./kernel/drivers/tty/wch/ch9344ser/ch9344.ko

  20. root@phytium-PC:/lib/modules/4.19.0-arm64-desktop# modinfo ./kernel/drivers/tty/wch/ch9344ser/ch9344.ko

  21. filename: /lib/modules/4.19.0-arm64-desktop/./kernel/drivers/tty/wch/ch9344ser/ch9344.ko

  22. alias: char-major-168-*

  23. license: GPL

  24. description: USB serial driver for ch9344/ch348.

  25. author: WCH@TECH39

  26. alias: usb:v1A86p55D9d*dc*dsc*dp*ic*isc*ip*in*

  27. alias: usb:v1A86pE018d*dc*dsc*dp*ic*isc*ip*in*

  28. depends:

  29. intree: Y

  30. name: ch9344

  31. vermagic: 4.19.0-arm64-desktop SMP mod_unload modversions aarch64

  32. root@phytium-PC:/lib/modules/4.19.0-arm64-desktop# modinfo ch9344

  33. filename: /lib/modules/4.19.0-arm64-desktop/kernel/drivers/tty/wch/ch9344ser/ch9344.ko

  34. alias: char-major-168-*

  35. license: GPL

  36. description: USB serial driver for ch9344/ch348.

  37. author: WCH@TECH39

  38. alias: usb:v1A86p55D9d*dc*dsc*dp*ic*isc*ip*in*

  39. alias: usb:v1A86pE018d*dc*dsc*dp*ic*isc*ip*in*

  40. depends:

  41. intree: Y

  42. name: ch9344

  43. vermagic: 4.19.0-arm64-desktop SMP mod_unload modversions aarch64

  44. root@phytium-PC:/lib/modules/4.19.0-arm64-desktop#

查看串口收发统计情况:

  1. root@phytium-PC:/proc/tty/driver# cat ttyAMA

  2. serinfo:1.0 driver revision:

  3. 0: uart:SBSA mmio:0x28001000 irq:5 tx:239216 rx:706 RTS|DTR

  4. 1: uart:SBSA mmio:0x28000000 irq:6 tx:0 rx:0

  5. 2: uart:SBSA mmio:0x28002000 irq:7 tx:0 rx:0

  6. 3: uart:SBSA mmio:0x28003000 irq:8 tx:0 rx:0

  7. root@phytium-PC:/proc/tty/driver# cat usbserial

  8. usbserinfo:1.0 driver:2.0

  9. sbserinfo:1.0 driver:2.0

三、串口测试方法

3.1 用cutecom工具测试串口通信

cutecom是图形化工具。

类似windows的串口调试助手,使用和配置较为简单,详细请参考网络教程:

https://blog.csdn.net/hanxv_1987/article/details/106967108


3.2 用sh脚本测试串口通信

串口测试也可以通过linux最基础的sh脚本实现,用户可根据需求编译简单的sh测试脚本,以下是sh串口测试脚本的示例,使用时按照脚本提示输入对应参数,完成配置即可,使用示例如下:

  1. # sh ./uarttest.sh

  2. 可用串口列表:

  3. crw-rw---- 1 root root 204, 64 2023-07-11 21:23 /dev/ttyAMA0

  4. crw-rw---- 1 root root 204, 65 2023-07-11 21:23 /dev/ttyAMA1

  5. crwxrwxrwx 1 root root 204, 66 2023-07-11 21:23 /dev/ttyAMA2

  6. crw-rw---- 1 root root 204, 67 2023-07-11 21:23 /dev/ttyAMA3

  7. crw-rw---- 1 root root 204, 68 2023-07-11 23:04 /dev/ttyAMA4

  8. crw-rw---- 1 root root 204, 69 2023-07-11 21:23 /dev/ttyAMA5

  9. crw-rw---- 1 root root 204, 70 2023-07-11 21:23 /dev/ttyAMA6

  10. crw-rw---- 1 root root 204, 71 2023-07-11 21:23 /dev/ttyAMA7

  11. crw-rw---- 1 root root 204, 72 2023-07-11 21:23 /dev/ttyAMA8

  12. 请选择要测试的串口(例如: /dev/ttyAMA0): /dev/ttyAMA3

  13. 请输入波特率(例如: 9600): 9600

  14. 请选择奇偶校验位:

  15. 1. None

  16. 2. Odd

  17. 3. Even

  18. 1

  19. 请选择停止位数:

  20. 1. One

  21. 2. Two

  22. 1

  23. ./uarttest.sh[69]: stty: inaccess[ 7951.351109] uart-pl011 2800f000.uart: no DMA platform data

  24. ible or not found

  25. 开始串口测试,请按Ctrl-C结束测试。

  26. aaaaa


uarttest.sh脚本源码关注公众号,回复“uart测试脚本”获取

3.3 Minicom介绍及使用方法

Minicom是一个用于串行通信的开源程序,它可以用于与其他设备(如调制解调器、路由器、嵌入式设备等)进行通信。

①安装Minicom

在大多数Linux发行版中,您可以通过包管理器直接安装Minicom。例如,在Debian或Ubuntu上,您可以使用以下命令安装Minicom:

  1. sudo apt-get install minicom

②配置串口参数

在开始使用Minicom之前,您需要配置将要使用的串口参数,例如波特率、数据位、校验位、停止位等。您可以使用以下命令打开Minicom的配置界面:

  1. sudo minicom -s

在配置界面中,选择“Serial Port Setup”选项,然后配置您的串口参数。通常,默认的波特率是115200,其他参数根据您的需求进行配置。确保将正确的串口设备(如 /dev/ttyAMA0)输入到“Serial Device”字段中,详细如下图所示:

③连接到设备

配置完串口参数后,您可以使用以下命令启动Minicom并连接到设备:

  1. sudo minicom

如果一切设置正确,Minicom将会连接到您的设备并显示接收到的数据,如下图所示:

④使用Minicom

一旦连接成功,您可以使用Minicom与设备进行交互。以下是一些常用的Minicom命令和快捷键:

  • Ctrl+A, Z: 打开Minicom的命令菜单,可以在此菜单中执行各种操作。

  • Ctrl+A, X: 退出Minicom。

  • Ctrl+A, Q: 退出Minicom并断开与设备的连接。

您可以发送命令、接收设备返回的数据,并进行串口调试和配置。

⑤退出Minicom

要退出Minicom,您可以使用以下快捷键:

  • Ctrl+A, X: 选择退出Minicom。

  • Ctrl+A, Q: 选择退出Minicom并断开与设备的连接。

参考资料

  • Minicom官方文档:

  • https://wiki.mutt.org/Minicom

  • UOS Minicom视频教程:

    https://www.bilibili.com/video/BV1BS4y1Y71T/?sharesource=copyweb&vd_source=bc9e51f8071a87adf626e055fae42a76






欢迎关注,回复“加群”加入飞腾爱好者交流群


期文章

交流群:
PSPA:
硬件:
固件:
调试:

欢迎飞腾爱好者加入微信交流群。 群内大家可以在群内交流遇到的问题,分享自己的调试心得。 希望大家共建飞腾友谊!

乌拉大喵喵
建立了飞腾爱好者技术交流群,公众号文章扫码进群,或私信加vx进群。
 最新文章