前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如果串口驱动有问题,怎么调

如果串口驱动有问题,怎么调

作者头像
韦东山
发布2020-09-30 11:21:08
1.4K0
发布2020-09-30 11:21:08
举报
文章被收录于专栏:韦东山嵌入式韦东山嵌入式

有很多人问我,为什么不录串口驱动?

实际上串口裸板很简单,但是串口驱动还是挺复杂的;

另外基本上所有芯片的内核源码中基本上都会有串口驱动。

所以我认为对于串口,我们只要会APP编程即可,不需要去写它的驱动程序。

现在有2个问题:

1.怎么写串口APP? 2.如果串口驱动有问题,怎么调?

第1个问题挺简单,百度搜搜就可以找到源码。

但是向我提问的人还是非常非常多,

我干脆写一个示例代码好了:serial_test.c

这个程序会一边往串口中写入数据0x5A,一边从串口中读出数据并打印出来。

用法为:

a. 编译: arm-linux-gcc -o serial_test serail_test.c -static b. 在开发板上运行: ./serial_test </dev/XXX> // /dev/XXX为串口的设备节点

比如在jz2440的3.4.2内核上:

./serial_test /dev/ttySAC1

比如在jz2440的2.6.22.6内核上:

./serial_test /dev/s3c2410_serial1

c. 然后用镊子短接串口的TXD、RXD引脚,即可看到这个程序不断打印0x5a:这表明测试成功

第2个问题:总有一些不太完善的驱动程序需要我们稍微调整。

比如jz2440用的linux 3.4.2内核,它的/dev/ttySAC2无法使用。

需要修改2个文件,mach-smdk2440.c和samsung.c,这些文件的源码我一起打包上传,需要代码联系我即可。

下面讲解。

解决方法为:

a. 修改内核 arch/arm/mach-s3c24xx/mach-smdk2440.c

找到”ulcon = 0x43;” 改为 “ulcon = 0x03;”

2440的串口2可以用作红外接收或发送, 我们要把它改为一般的串口。

b. 修改内核 drivers/tty/serial/samsung.c

对于串口2,该文件中没有配置对应的GPIO用于串口。

修改方法如下:

b.1 在前面添加头文件:

#include <mach/regs-gpio.h> #include <plat/gpio-cfg.h>

b.2 在s3c24xx_serial_startup函数中加入:

代码语言:javascript
复制
if (ourport->cfg->hwport == 0) 
 { 
 printk(“config pin for uart %d\n”, ourport->cfg->hwport); 
 s3c_gpio_cfgpin(S3C2410_GPH(2), S3C2410_GPH2_TXD0); 
 s3c_gpio_cfgpin(S3C2410_GPH(3), S3C2410_GPH3_RXD0); 
 } 
 else if (ourport->cfg->hwport == 1) 
 { 
 printk(“config pin for uart %d\n”, ourport->cfg->hwport); 
 s3c_gpio_cfgpin(S3C2410_GPH(4), S3C2410_GPH4_TXD1); 
 s3c_gpio_cfgpin(S3C2410_GPH(5), S3C2410_GPH5_RXD1); 
 } 
 else if (ourport->cfg->hwport == 2) 
 { 
 printk(“config pin for uart %d\n”, ourport->cfg->hwport); 
 s3c_gpio_cfgpin(S3C2410_GPH(6), S3C2410_GPH6_TXD2); 
 s3c_gpio_cfgpin(S3C2410_GPH(7), S3C2410_GPH7_RXD2); 
 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • b.2 在s3c24xx_serial_startup函数中加入:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档