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

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

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

所以我认为对于串口,我们只要会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);
}

如果串口驱动有问题,怎么调相关推荐

  1. ft232 mac usb串口驱动_记Macbook Pro配合FT232使用PN532模块

    0x00实话. 被自己傻到 在linux下使用 libusb + libnfc 这两个库就可以配合串口直接使用pn532模块 当时配置文件是写在 /etc/nfc 目录下的 而我在OS X 下居然也想 ...

  2. 从串口驱动的移植看linux2.6内核中的驱动模型 platform device platform driver【转】...

    转自:http://blog.csdn.net/bonnshore/article/details/7979705 写在前面的话: 博主新开了个人站点:你也可以在这里看到这篇文章,点击打开链接 本文是 ...

  3. Esp8266 进阶之路25【高级篇】深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS 系统的串口驱动文件。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  4. ch340串口驱动_如何使用串口来给STM32下载程序

    前言 第一次学习STM32的时候,不知道有调试器这个东西,所以一直是通过串口来给STM32下载程序,下载速度也还算可以,一般是几秒钟完成.后来用了调试器,可以直接在Keil环境下进行下载,而且还可以进 ...

  5. WinCE中串口驱动及接口函数介绍(转载)

    作者:ARM-WinCE 在WinCE中,串口驱动实际上就是一个流设备驱动,具体架构如图: 串口驱动本身分为MDD层和PDD层.MDD层对上层的Device Manager提供了标准的流设备驱动接口( ...

  6. linux串口驱动分析

    linux串口驱动分析 硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作 ...

  7. linux串口驱动分析【转】

    转自:http://blog.csdn.net/hanmengaidudu/article/details/11946591 硬件资源及描述 s3c2440A 通用异步接收器和发送器(UART)提供了 ...

  8. WINCE6.0+S3C6410串口驱动

    ********************************LoongEmbedded************************作者:LoongEmbedded(kandi)时间:2011. ...

  9. RTEMS 的 AT91SAM9260 移植(5): 调试串口驱动

    其实到这里,只要能保证编译通过,再修改一下链接脚本,其实已经可以跑在at9260的系统上了.因为我没有仿真器,不知道程序的状态,所以必须撰写调试串口的驱动. RTEMS 的调试串口并没有采用中断输出的 ...

最新文章

  1. HDU3970(Dijstra算法)
  2. windows 下rabbitmq 安装---转载
  3. 如何设置使eclipse修改代码不重启tomcat
  4. python账号密码一一对应_python模拟用户登录系统,如何两个用户输入各自的密码才能登入?...
  5. Apache Hadoop 答疑:解决 Apache Hadoop 启动时 DataNode 启动异常的问题
  6. 《C#初学者指南》一第1章 初识C#
  7. OpenVINO(Version: 2021.3)系统需求
  8. redhat5.4上安装oracle9i
  9. 【UKIEPC2017:F题】Flipping Coins(抛硬币求正面朝上个数的期望----概率dp)
  10. fmd单片机c语言教程,ft62f08x_c语言 FMD单片机C语言列子程序 - 下载 - 搜珍网
  11. qca956x flash usb
  12. 《计算机入门》模拟卷 b卷,《计算机入门》模拟试卷B.doc
  13. IEEE 802.2 LLC协议
  14. 北京药监局考试计算机操作,考科一电脑操作
  15. UPC Haywire(模拟退火 || 随机数法)
  16. 基因组+转录组助力油菜种子油含量自然变异的遗传研究
  17. 短信验证码后端-接口设计
  18. 人人商城报错:服务器暂时无法处理您的请求,请稍后再试,解决方案
  19. 亚马逊asin关键词排名追踪_亚马逊listing关键词的挖掘和布局!让产品关键词排名上首页...
  20. GJM : 各大开发游戏引擎

热门文章

  1. 【编译原理】学习笔记以及课程设计
  2. UVA - 1225 Digit Counting(刘汝佳紫书题单(算法竞赛入门经典 第二版 2014)
  3. LeetCode-6:ZigZag Conversion(Z字形变换)
  4. php封装多段mp4,解决ffmpeg将多段视频裁剪拼接后卡顿现象
  5. 书店存货c语言程序,C语言课程设计品库存管理系统.doc
  6. 【过一下5】深度学习与计算机视觉课件 (完)
  7. 一个TCP连接可以发多少个HTTP请求?
  8. SAP 国际财务报告准则第 17 号 (IFRS17)出台详解
  9. 单片机原理及应用(c51语言版)(二)
  10. 荷兰国旗问题和快速排序