如果串口驱动有问题,怎么调
有很多人问我,为什么不录串口驱动?
实际上串口裸板很简单,但是串口驱动还是挺复杂的;
另外基本上所有芯片的内核源码中基本上都会有串口驱动。
所以我认为对于串口,我们只要会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);
}
如果串口驱动有问题,怎么调相关推荐
- ft232 mac usb串口驱动_记Macbook Pro配合FT232使用PN532模块
0x00实话. 被自己傻到 在linux下使用 libusb + libnfc 这两个库就可以配合串口直接使用pn532模块 当时配置文件是写在 /etc/nfc 目录下的 而我在OS X 下居然也想 ...
- 从串口驱动的移植看linux2.6内核中的驱动模型 platform device platform driver【转】...
转自:http://blog.csdn.net/bonnshore/article/details/7979705 写在前面的话: 博主新开了个人站点:你也可以在这里看到这篇文章,点击打开链接 本文是 ...
- Esp8266 进阶之路25【高级篇】深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS 系统的串口驱动文件。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
- ch340串口驱动_如何使用串口来给STM32下载程序
前言 第一次学习STM32的时候,不知道有调试器这个东西,所以一直是通过串口来给STM32下载程序,下载速度也还算可以,一般是几秒钟完成.后来用了调试器,可以直接在Keil环境下进行下载,而且还可以进 ...
- WinCE中串口驱动及接口函数介绍(转载)
作者:ARM-WinCE 在WinCE中,串口驱动实际上就是一个流设备驱动,具体架构如图: 串口驱动本身分为MDD层和PDD层.MDD层对上层的Device Manager提供了标准的流设备驱动接口( ...
- linux串口驱动分析
linux串口驱动分析 硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作 ...
- linux串口驱动分析【转】
转自:http://blog.csdn.net/hanmengaidudu/article/details/11946591 硬件资源及描述 s3c2440A 通用异步接收器和发送器(UART)提供了 ...
- WINCE6.0+S3C6410串口驱动
********************************LoongEmbedded************************作者:LoongEmbedded(kandi)时间:2011. ...
- RTEMS 的 AT91SAM9260 移植(5): 调试串口驱动
其实到这里,只要能保证编译通过,再修改一下链接脚本,其实已经可以跑在at9260的系统上了.因为我没有仿真器,不知道程序的状态,所以必须撰写调试串口的驱动. RTEMS 的调试串口并没有采用中断输出的 ...
最新文章
- HDU3970(Dijstra算法)
- windows 下rabbitmq 安装---转载
- 如何设置使eclipse修改代码不重启tomcat
- python账号密码一一对应_python模拟用户登录系统,如何两个用户输入各自的密码才能登入?...
- Apache Hadoop 答疑:解决 Apache Hadoop 启动时 DataNode 启动异常的问题
- 《C#初学者指南》一第1章 初识C#
- OpenVINO(Version: 2021.3)系统需求
- redhat5.4上安装oracle9i
- 【UKIEPC2017:F题】Flipping Coins(抛硬币求正面朝上个数的期望----概率dp)
- fmd单片机c语言教程,ft62f08x_c语言 FMD单片机C语言列子程序 - 下载 - 搜珍网
- qca956x flash usb
- 《计算机入门》模拟卷 b卷,《计算机入门》模拟试卷B.doc
- IEEE 802.2 LLC协议
- 北京药监局考试计算机操作,考科一电脑操作
- UPC Haywire(模拟退火 || 随机数法)
- 基因组+转录组助力油菜种子油含量自然变异的遗传研究
- 短信验证码后端-接口设计
- 人人商城报错:服务器暂时无法处理您的请求,请稍后再试,解决方案
- 亚马逊asin关键词排名追踪_亚马逊listing关键词的挖掘和布局!让产品关键词排名上首页...
- GJM : 各大开发游戏引擎
热门文章
- 【编译原理】学习笔记以及课程设计
- UVA - 1225 Digit Counting(刘汝佳紫书题单(算法竞赛入门经典 第二版 2014)
- LeetCode-6:ZigZag Conversion(Z字形变换)
- php封装多段mp4,解决ffmpeg将多段视频裁剪拼接后卡顿现象
- 书店存货c语言程序,C语言课程设计品库存管理系统.doc
- 【过一下5】深度学习与计算机视觉课件 (完)
- 一个TCP连接可以发多少个HTTP请求?
- SAP 国际财务报告准则第 17 号 (IFRS17)出台详解
- 单片机原理及应用(c51语言版)(二)
- 荷兰国旗问题和快速排序