VxWorks BSP学习笔记_串口驱动

VxWorks BSP学习笔记(基于SBC8349E) 1. 串口驱动 1.1 串行驱动程序的重要结构 以下结构指出了驱动程序函数的入口点 ../target/h/sioLib.h Typedef struct sio_drv_funcs /* driver functions */ { int (*ioctl) ( SIO_CHAN * pSioChan, int cmd, void * arg ); int (*txStartup) ( SIO_CHAN * pSioChan ); int

tiny4412 串口驱动分析四 --- 修改默认的串口输出

作者:彭东林 邮箱:[email protected] 开发板:tiny4412ADK+S700 4GB Flash 主机:Wind7 64位 虚拟机:Vmware+Ubuntu12_04 u-boot:U-Boot 2010.12 Linux内核版本:linux-3.0.31 Android版本:android-4.1.2 tiny4412默认是从uart0来输出和读取信息的,而tiny4412上留了两个串口,分别对应的是uart0和uart3,下面我们修改配置,使控制终端从uart

五 linux 串口驱动

一.串口结构体 1.串口驱动结构体 struct uart_driver { struct module *owner; //模块所有者 const char *driver_name; //驱动名 const char *dev_name; //设备名 int major; //主设备号 int minor; //次设备号 int nr; //支持串口个数 struct console *cons; //控制台设备 struct uart_state *state; //串口状态 struct

linux 串口驱动(二)初始化 【转】

转自:http://blog.chinaunix.net/uid-27717694-id-3493611.html 8250串口的初始化: (1)定义uart_driver.uart_ops.uart_port等结构体的实例并在适当的地方更具具体的硬件驱动情况初始化他们,当然具体设备xxx的驱动可以将这些结构体套在新定义的xxx_uart_driver.xxx_uart_ops.xxx_uart_port之内. (2)在模块初始化调用uart_register()和uart_add_one_po

linux移植记录(一) - 串口驱动

第一次移植Linux系统,新手上路,花了将近一个月的时间,夹杂着失望与喜悦,现在终于可以悠闲的喝点咖啡,写些博客了. 设备:交换机 开发板:BCM95836robo 由于开发环境比较特殊,u-boot无法使用,使用broadcom公司的CFE. 遇到的第一个问题是串口输出的问题,错误输出信息如下: Closing network. eth1: 9277 sent, 105052 received, 0 interrupts Starting program at 0x80005690 Linux

Windows CE串口驱动简析(4)-PDD层实现:CPdd2410Serial1和CPdd2410Serial2(基于WinCE5.0 SMDK2410 BSP的Serial驱动)

最后就需要实现针对特定串口的CPdd2410Uart的继承类CPdd2410Serial1和CPdd2410Serial2.分别对应于串口UART0和UART2. 1.CPdd2410Serial1 CPdd2410Serial1主要进行了端口初始化,针对UART0进行IO Port的设置,同时还实现了Modem的一些函数. (1)构造函数CPdd2410Serial1和析构函数~CPdd2410Serial1 CPdd2410Serial1初始化m_pIOPregs(IO控制寄存器虚拟地址)和

串口驱动分析(一)

1.发送和接收 发送:循环buffer à发送fifoà发送移位寄存器 接收:接收移位寄存器à接收fifo àFlip_buf 发送的过程是:把数据写到发送fifo中,fifo把收到的数据传给发送移位寄存器(自动的,非driver控制),然后每个时钟脉冲往串口线上写一bit数据. 接收的过程是:接收移位寄存器收到数据,发送给接收fifo,接收fifo事先设置好了触发门限,当里面的数据量超过门限时就会触发一个中断,调用驱动中的中断处理函数,把数据写到flip_buf中. 2.寄存器 UART Li

(转贴)Windows CE 5.0下串口驱动硬件FIFO控制Bug分析及修正方法

转贴自:驱动开发网 原贴地址:http://bbs.driverdevelop.com/read.php?tid=109193&fpage=0&toread=&page=1 作者:周群威 摘要:详细分析了Windows CE 5.0下串口驱动程序中硬件FIFO控制的一个Bug,并给出了修改方法,对修改前后的驱动程序的性能进行了测试,测试结果表明改进后的驱动性能得到了很大的提升. 关键词:Windows CE WinCE 串口驱动 串口丢包 仔细阅读Windows CE 5.0下串口

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

作者:ARM-WinCE 在WinCE中,串口驱动实际上就是一个流设备驱动,具体架构如图: 串口驱动本身分为MDD层和PDD层.MDD层对上层的Device Manager提供了标准的流设备驱动接口(COM_xxx),PDD层实现了HWOBJ结构及结构中若干针对于串口硬件操作的函数指针,这些函数指针将指向PDD层中的串口操作函数.DDSI是指MDD层与PDD层的接口,在串口驱动中实际上就是指HWOBJ,PDD层会传给MDD层一个HWOBJ结构的指针,这样MDD层就可以调用PDD层的函数来操作串口

WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(7)-Serial串口驱动

SMDK2410已经实现了串口驱动,因此不需要大的改动,其中PDD库位于/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/SERIAL下,生成dll的驱动位于/PLATFORM/GEC2410/SRC/DRIVERS/SERIAL. 为了更好的研究串口驱动,我们把/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/SERIAL目录复制到/PLATFORM/GEC2410/SRC/COMMON/S3C2410X/SERIAL

Raspberry操作系统respbian的串口驱动问题

Raspberry操作系统respbian的串口驱动问题 最近在研究树莓派的串口通信编程,我用的是rxtx这个开源包.当我把程序都写好,并且在windows系统下运行良好后(注:windows下的驱动标识是'COM某数',可是当我把程序移至到respbian下时(注:linux系统下的jar包,以及需要配置的环境我都已经配好,程序可以不用改,因为在不同系统下的rxtx配置和jar包不同,这个需要自己配置). 关键的问题来了,在驱动连接那里,我最开始写的是"/dev/ttyS某数",可是

WIN CE6.0加载虚拟串口驱动(usbser.dll)

最近用WIN CE6.0的虚拟串口,结果断断续续搞了两周才出来,虽然有很大一部分是选择错开发板的原因,但还是经验不足,特地与大家分享一下,少走弯路,高手莫看: 外接模块的USB口为虚拟串口,WIN CE开发板为主机,即USB口为HOST,在WIN CE上称为Clients端.我们需要在Clients加载上虚拟串口驱动,来识别外接模块. 其实很简单,用VS2005打开项目,在项目属性里面添加sysgen_usb_ser=1,然后重新编译一下,这样就会生成usbser.dll并且打包进去,可以打开N

S3C2440串口驱动程序设计

串口作用:数据传输.充当控制台 串口通讯,分为同步通讯和异步通讯,我们通常使用的都是异步串口.通讯时,双方先约定好数据帧的格式,即波特率,数据位,停止位,奇偶校验位等. 波特率:这是一个衡量通信速度的参数.它表示每秒钟传送的bit的个数.常用的波特率有38400,115200. 起始位:当线路空闲时候,电平为高.一旦检测到一个下降沿,则视为一个起始位.然后接收方按照约定好的格式,接收这一帧数据. 数据位:一帧中实际有效数据的位数. 停止位:表示这帧数据的结束. 校验位:用于检测数据传输是否正确的

mini 2440 编写串口驱动常用名词

mini 2440 编写串口驱动常用名词 UART 通用异步收发器 ULCONn (UART LINE CONTROL REGISTER) UART 线性控制寄存器 UCONn (UART CONTROL REGISTER) UART 控制寄存器 UFCONn (UART FIFO CONTROL REGISTER) UART FIFO 控制寄存器 UMCONn (UART MODEM CONTROL REGISTER) UART MODEM 控制寄存器 UTRSTATn (UART TX/RX

s3c2440 串口驱动和测试程序

arm平台上的应用程序 app.c源代码 * ===================================================================================== * * Filename: app.c * * Description: 可以在arm平台上运行的应用程序 * * Version: 1.0 * Created: 2011年01月11日 00时13分58秒 * Revision: none * Compiler: gcc * *

关于windows ce串口驱动的分层

分层驱动模型中,驱动程序分为mdd和pdd两层. 一般来讲,很多mdd微软已帮我们做好,比如串口的mdd. 毫无疑问,mdd肯定会调用pdd中的函数,即所谓ddsi. 对于串口,奇怪的是没有对ddsi的函数名作限制. 那么是怎样实现mdd调用pdd的呢, 原来,pdd层必须实现的一个函数是GetSerialObject(), 它返回一个HWOBJ指针,HWOBJ结构中包含一个HW_VTBL, HW_VTBL 其实是一个函数指针数组,包含了Pdd应有的函数. 一般在串口的mdd的COM_Init中

串口驱动测试程序

/********************************************************************** * 代码说明:使用串口二测试的,发送的数据是字符,但是没有发送字符串结束符号, * 所以接收到后,后面加上了结束符号.我测试使用的是单片机发送数据到第二个串口,测试通过. **********************************************************************/ #define FALSE -1 #de

linux设备驱动之8250串口驱动2

static void autoconfig_irq(struct uart_8250_port *up) { unsigned char save_mcr, save_ier; unsigned char save_ICP = 0; unsigned int ICP = 0; unsigned long irqs; int irq; if (up->port.flags & UPF_FOURPORT) { ICP = (up->port.iobase & 0xfe0) | 0

linux内核的串口驱动架构之我的形象理解

前面我们分析i2c的驱动框架的时候,我们把整个的linux系统比喻成一个超大型公司,其中i2c的一条总线类似一个测试部,另外一条总线是另外一个测试部,两个测试部门测试的类型是不同的,所以成了不同的部门. 这样,i2c_core我们必须成了公司的管理部门和管理制度,有了这个制度,我们就知道如何新建一个测试部门(i2c总线啊),如何理顺这个测试部门的工作流程(i2c所谓的算法),以及测试部门如何招聘增加人员(i2c的设备注册等). i2c_adpter可以必须中测试部门的主管或者对外接口,用于接收公