在分析ARM-Linux s3c2440中UART的时有必要先了解 s3c2440A中串口的硬件知识。也就是本文----

硬件篇:

S3c2440A串口提供三个独立的异步串行通信I/O端口(asynchronousserial I/O ports)。每一个串口均可以以普通中断方式或者DMA方式进行数据收发,采用系统时钟时,最大速率为115.2kbps.如果采用外部时钟(UEXTCLK),UART速度可以更快。每个串口包含有2个64-byte的FIFO缓存区用来发送或传输数据。

S3c2440A 串口具有可编程波特率,红外(IR)收发数据,1或者2 位的停止位(stop),5/6/7/8 位数据宽度和奇偶校验功能(parity checking)。

每个串口由波特率产生单元,发送单元,接收单元和控制单元组成。如下图所示,波特产生单元的时钟可以是PCLK,FCLK/n,或者UEXTCLK(外部输入的时钟)。发送和接收单元包含有一个64-byte的FIFOs(先入先出队列)和数据移位器。发送数据时,数据被写进FIFO然后拷贝到数据移位器后发送数据,最后数据被一位一位由数据发送脚(TxDn)送出。类似的,数据在接收时,数据一位一位的由数据接收脚(RxDn)接收,然后拷贝到FIFO缓存区。

寄存器:

串口的控制寄存器有三个:UCON0 ~ UCON1分别对应于每一个串口,用于设置UART的工作模式,波特率,中断类型等。

状态寄存器:UTRSTAT0 ~UTRSTAT2, 用于串口工作时,接收/发送的状态指示

FIFO控制寄存器: UFCON0 ~ UFCON2, 用于对FIFO的设置。

FIFO状态寄存器: UFSTAT0 ~ UFSTAT2, 用于表示FIFO缓存中的状态

对于Arm-linux s3c2440串口的使用,主要是对以上寄存器的操作。

下一篇将结合源码分析arm-linux s3c2440串口驱动的实现(软件篇)

linux arm uart应用程序,ARM Linux S3C2440 之UART分析相关推荐

  1. Linux从头开始学--学习笔记9知识点补充-ubuntu,centos;在linux上创建c程序;linux基础命令,shell命令,vi命令,man帮助手册

    这是我从头开始学习Linux的学习笔记,后续还会更新. 记录自己的技术成长,也希望和大家分享交流,欢迎关注~ 本笔记为coursera网站课程<Linux for Developers>的 ...

  2. linux下串口通信程序,关于Linux下串口通信的一点心得

    1. 打开串口 与其他的关于设备编程的方法一样,在 Linux 下,操作.控制串口也是通过操作起设备文件进行的.在 Linux 下,串口的设备文件是 /dev/ttyS0 或 /dev/ttyS1 等 ...

  3. linux内核参数的程序,技巧-Linux内核参数调整办法

    ulimit设置 ulimit -n 要调整为100000甚至更大. 命令行下执行 ulimit -n 100000即可修改.如果不能修改,需要设置 /etc/security/limits.conf ...

  4. linux无后缀名程序运行,linux – 如何在Ubuntu上运行无扩展(也许是ELF)文件?

    我的猜测是这是64位系统上的32位编译.我使用gcc上的-m32选项将一个小的c文件交叉编译成二进制文件.这还需要一些额外的包.结果a.out看起来像这样. % file a.out a.out: E ...

  5. Linux系统运行Windows程序(Linux执行windows程序)

    dpkg --add-architecture i386 && apt-get update && apt-get install wine32 需要安装32位wine ...

  6. linux命令和应用程序,在Linux中开发C应用程序时的重要且方便的工具和命令

    您将需要熟悉linux命令行工具.特别是: >学习一个好的编辑器,如vim或emacs >使用make编写构建脚本 >使用gcc编译 >使用gdb进行调试 >源代码控制: ...

  7. linux下怎么查看程序异常,linux程序莫名异常怎么查

    内存异常经常导致程序出现莫名其妙的错误,往往很难查证,本文介绍在linux下的各种常见内存异常的查证工具和方法. 1 访问空指针/未初始化指针/重复释放内存 对于像访问空指针.未初始化指针(非法地址) ...

  8. linux下启动应用程序,RedHat Linux 9下启动应用程序

    RedHat Linux 9下启动应用程序 发布时间:2005-09-02 14:07:29来源:红联作者:zz123 我安装了一个从互联网上下载的应用程序,一切似乎都正常,但在我键入它的名称后,却总 ...

  9. linux怎么卸载桌面程序吗,Linux下怎么卸载软件

    Linux软件的安装和卸载一直是困扰许多新用户的难题.在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的"添加/删除程序"来实现.与其相类似,在Linux下有一 ...

最新文章

  1. Ajax全局加载框(Loading效果)的配置
  2. selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary
  3. 域名反向解析在自建邮件群发服务器中的应用
  4. b+tree数据结构可视化_数据结构: B+Tree及其应用
  5. linux中oracle数据乱码,Linux系统Oracle数据库乱码问题的解决方法
  6. 批量恢复文件的Py脚本
  7. oracle连接工具_扯一扯Tableau软件配置数据源系列之Oracle
  8. 2. jQuery 语法
  9. 聚类算法(K-Means和DBSCAN)
  10. Arm中国合资公司具体布局浮出水面
  11. u盘装华为服务器系统教程,华为服务器u盘重装系统
  12. python 微信分享链接_python如何爬取搜狗微信公众号文章永久链接的思路解析
  13. 东方时尚网上约车的用户名密码是什么_路由器的登录名与密码忘了怎么解决【解决方法】...
  14. vs修改项目属性无效的原因
  15. Unity3D动画帧事件
  16. 为什么今天不写技术文章
  17. 计算机系统动态库修复,一键修复!动态库文件 mfc100u.dll 修复使用说明
  18. wince博客名人堂
  19. 史上最全的ubuntu服务器搭建环境教程~~~
  20. Solaris10如何确认DirectIO是否已经启用

热门文章

  1. ubuntu下安装psycopg2报错
  2. markdown 入门1--标题目录代码图片
  3. python队列及其实现
  4. Limit与skip
  5. Python的闭包的后期绑定问题
  6. 选择适合自己的 OLAP 引擎,干货
  7. Linux01-学习记录
  8. 通俗理解“Schmidt正交化”和“正交矩阵” 此博文包含图片 (2015-05-19 09:50:47) 施密特正交化在空间上是不断建立垂直于原次维空间的新向量的过程。 如图β2垂直于β1(1维)
  9. JS实现鼠标点击展开/隐藏表格行
  10. [机器学习-Sklearn]决策树学习与总结 (ID3, C4.5, C5.0, CART)