首页 > 其他分享 >如果串口驱动有问题,怎么调

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

时间:2023-07-03 11:03:12浏览次数:30  
标签:怎么 GPH cfg 串口 ourport S3C2410 驱动 serial


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

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

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

所以我认为对于串口,我们只要会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函数中加入:

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); 
 }

标签:怎么,GPH,cfg,串口,ourport,S3C2410,驱动,serial
From: https://blog.51cto.com/weidongshan/6609539

相关文章

  • 嵌入式Linux怎么搭建开发环境?
    交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载)交流群二:QQ群:536785813(单片机-嵌入式)公 众 号:百问科技版本日期作者说明V12020韦东山技术文档全文下载地址:嵌入式Linux系统开发完全手册第二版2.1安装Windows软件2.1.1这么多虚拟机,如何选择?搭建开发环境的主要工作......
  • Linux系统驱动之编程_配置LCD控制器_基于IMX6ULL
    资料下载coding无法使用浏览器打开,必须用git工具下载:gitclonehttps://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git视频观看百问网驱动大全编程_配置LCD控制器_基于IMX6ULL参考资料,GIT仓库里:芯片资料IMX6ULL\开发板配套资料\datasheet\Core_board\CPU\IMX6ULL......
  • Linux系统驱动之编程_配置引脚_基于IMX6ULL
    资料下载coding无法使用浏览器打开,必须用git工具下载:gitclonehttps://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git视频观看百问网驱动大全编程_配置引脚_基于IMX6ULL参考资料,GIT仓库里:芯片资料IMX6ULL\开发板配套资料\datasheet\Core_board\CPU\IMX6ULLRM.pd......
  • Linux系统驱动之分析内核自带的LCD驱动程序_基于IMX6ULL
    资料下载coding无法使用浏览器打开,必须用git工具下载:gitclonehttps://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git视频观看百问网驱动大全分析内核自带的LCD驱动程序_基于IMX6ULL参考资料,GIT仓库里:IMX6ULL\开发板配套资料\datasheet\Core_board\CPU\IMX6ULLR......
  • 车灯芯片 AP2915 一切二降压恒流驱动IC
    产品描述 AP2915是一款可以一路灯串切换两路灯串的降压恒流驱动器,高效率、外围简单、内置功率管,适用于5-80V输入的高精度降压LED恒流驱动芯片。内置功率管输出最大功率可达12W,最大电流1.2A。AP2915一路灯亮切换两路灯亮,其中一路灯亮可以全亮,可以半亮。AP2915工作频......
  • 获取系统时间在java中怎么操作,还可以指定格式
    ​ 要在Java中获取当前时间并将其格式化为指定形式,可以使用java.time包中的LocalDateTime和DateTimeFormatter类。下面是一个示例代码,演示如何获取系统时间并将其格式化为指定的字符串格式: importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;p......
  • 获取系统时间在java中怎么操作,还可以指定格式
    ​ 要在Java中获取当前时间并将其格式化为指定形式,可以使用java.time包中的LocalDateTime和DateTimeFormatter类。下面是一个示例代码,演示如何获取系统时间并将其格式化为指定的字符串格式: importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;p......
  • 随着年龄的增长,感觉时间越来越快了,怎么让自己感觉时间慢一点?
    注意细节。多观察周围的细节,用心体会当下。注意现在的感觉和细节,可以帮助你减慢时间的流逝。慢下来。放慢你的步伐、说话速度和做事速度。比如做喜爱的事,不要急于求成。熟悉新的事物。学习新的技能、逐渐获得新知识。在掌握新事物的过程中,时间感觉会更慢。多与人交流交谈......
  • STM32/GD32串口接收不定长数据
    RYMCU嵌入式开源https://rymcu.com编者注:单片机串口接收不定长数据时,必须面对的一个问题为:怎么判断这一包数据接收完成了呢?常见的方法主要有以下两种:1.在接收数据时启动一个定时器,在指定时间间隔内没有接收到新数据,认为数据接收完成;2.在数据中加入帧......
  • 领域驱动设计 15-17章(本书完结)
    15.精炼如何才能专注于核心问题而不被大量的次要问题淹没呢?分层架构可以把领域概念从技术逻辑中(技术逻辑确保了计算机系统能够运转)分离出来,但在大型系统中,即使领域被分离出来,它的复杂性也可能仍然难以管理。精炼是把一堆混杂在一起的组件分开的过程,以便从中提取出最重要的内容,使......