基于S3C2440的串口传输及界面设计
- 格式:doc
- 大小:433.50 KB
- 文档页数:16
USB设备及其驱动程序在LINUX中是很重要的一部分。
本文给出基于S3C2440的USB电路及驱动程序设计一种以ARM9微处理器S3C2440为核心的USB HID类通信接口的设计方案。
首先介绍了USB、设备驱动程序的相关原理及知识;然后结合主机在枚举期间的请求,论述了USB HID固件程序的实现过程;最后介绍了如何编写应用程序对HID类设备进行访问。
关键词:LINUX USB 设备驱动程序1.概述 (2)2. 原理介绍 (2)2.1USB简介 (2)2.1.1 主要特点 (2)2.1.2 组成 (3)2.2S3C2440的USB主机控制器 (3)2.3设备驱动程序 (4)2.3.1特点 (4)2.3.2 层次结构 (4)2.3.3 功能 (4)3. 设计过程 (5)3.1接口设计 (5)3.2固件程序设计 (5)3.3应用程序设计 (7)3.3.1 应用流程 (7)3.3.2 程序编写 (8)4. 总结 (17)参考文献 (18)基于S3C2440的USB电路及驱动程序设计1.概述USB接口作为一种高速的新型总线接口,支持即插即用设备,并能为外设提供电源且易于扩展,已成为了计算机和嵌入式系统应用的主流接口。
人机接口设备(HID)一直是Windows系统支持较完善的设备类,不仅提供了完整的USB系统软件,而且直接提供HID的设备驱动程序,只要按照HID类的规范编写设备固件程序,就能够让Windows系统自动识别设备,省去了复杂的驱动程序编写过程,这样大大降低了开发的难度。
本文给出了一种基于S3C2440的USB电路及驱动程序的设计。
2. 原理介绍2.1 USB简介USB主要用于中速和低速的外设。
USB通过PCI总线和PC机的内部系统数据线连接,实现数据的传送。
USB的网络协议中规定每个USB的系统有且仅有一个HOST。
USB2.0协议的理论速度是480Mb/s ,现在的USB3.0协议理论速度能达到4Gb/s。
南昌航空大学东软班
毕业设计任务书
I、毕业设计题目:
基于s3c2440平台的UDP网络编程的设计与实现
II、毕业设计使用的原始资料(数据)及设计技术要求:
本论文的主要研究内容是基于s3c2440平台的UDP网络编程的设计与实现,实现PC机和s3 c2440平台之间的通讯。
主要技术:
原始资料:CentOS S3C2440 QT
I I I、毕业设计工作内容及完成时间:
1. 第一阶段:论文开题阶段2013.11.1-2013.11.13 完成开题报告,确定研究题目和方向。
2. 第二阶段:需求分析阶段201
3.11.14-2013.11.22 完成项目需求分析。
3. 第三阶段:概要设计阶段2013.11.23-2013.12.04 完成项目概要设计。
4. 第四阶段:详细设计阶段2013.12.04-2013.12.20 完成项目详细设计。
5.第五阶段:中期检查2013.12.20-2013.12.30完成中期检查报告。
6. 第六阶段:代码实现及测试阶段2014.1.1-2014.2.30 完成项目编码及测试阶段。
7. 第七阶段:总结阶段2014.3.1-2014.3.7 完成科技论文和答辩PPT。
Ⅳ、主要参考资料:
1.《计算机网络》作者:雷震甲出版社:西安电子科技大学出版社
2.《mini2440开发手册》广州友善之臂计算机科技有限公司
3.《Linux环境高级编程》作者:出版社:人民邮电出版社
学院专业类班学生(签名):
日期:自年月日至年月日
指导教师(签名):。
基于ARM处理器S3C2440的无线监控系统设计无线网络技术在近一两年开始全面普及,无论是在家庭用户还是企业用户中,我们都能看到无线技术的影子。
认识无线监控,相信大家对有线监控系统比较了解,有线监控系统主要由网络摄像机、云台、视频服务器、监控终端等设备组成。
而无线监控系统所需要的设备则比较简单,它只需要无线网络摄像机、无线AP、监控终端等设备组成,如果需要远距离无线监控,还要增加户外无线网桥等设备。
在此提出一种基于嵌入式Windows CE5.O的无线视频监控系统。
解决了传统视频监控系统成本高、体积大、传输距离有限、功耗大、安装不方便等问题。
该系统的设计将为无线视频监控提供一种新的思路、方法和技术路线;在安防、远程教育、远程视频会议、医疗系统等无线视频领域具有广阔的应用前景。
Windows CE作业系统是Windows家族中最新的成员,专门设计给掌上型电脑(HPCs)所使用的电脑环境。
这样的作业系统可使完整的可携式技术与现有的Windows桌面技术整合工作。
Windows CE 被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)的通用操作系统, Windows CE 可以通过设计一层位于内核和硬件之间代码来用设定硬件平台,这即是众所周知的硬件抽象层(HAL)(在以前解释时,这被称为 OEMC (原始设备制造)适应层,即OAL; 内核压缩层,即 KAL. 以免与微软的 Windows NT 操作系统 HAL 混淆)。
1 系统的整体硬件框图介绍基于嵌入式WinCE5.0的无线监控系统的硬件系统主要由嵌入式终端和服务器端的PC机组成。
嵌入式终端平台的微处理器选择的是基于ARM9T20内核的S3C2440,S3C2440有丰富的接口,其中摄像头接口与CMOS的摄像头相连,串口与GPRS发射模块相连;服务器端主要是1台PC机和GPRS接收模块。
整个框图如1所示。
系统首先通过S3C2440微处理器控制CMOS摄像头采集图像数据,经过压缩编码后,再通过GPRS无线发射模块将压缩后的数据发射出去,在服务器端的PC机通过GPRS接收模块接收数据,并通过相应的应用程序,对视频数据进行解码,并通过屏幕显示出来。
基于S3C2440A的SD卡文件系统的设计与实现
随着嵌入式式技术的不断发展,ARM处理器凭借其高性能、廉价、耗能低的优质特性而得到广泛应用。
文中主要针对货车动态称重系统中大量实时载重数据存取的需求,在ARM9嵌入式处理器和μC/OS-II操作系统基础上,设计实现了一种SD卡文件系统。
该系统具有实时性强、存取速率高、易维护,易移植等特点。
1 硬件接口电路设计
本系统硬件开发平台处理器为S3C2440A,是三星公司推出的16/32位RISC微处理器,ARM920T内核,主频400 MHz,最高可达533 MHz,内部具有丰富的系统外围控制器和多种通信接口。
SD卡支持SPI和SD两种通信模式,S3C2440A具有SD卡接口,支持SD总线模式,所以不再像低端的ARM处理器那样采用SPI模式,而是采用SD总线模式,这样可以大大提高SD卡的读写速度。
S3C2440A与SD卡读写器的接口电路如图1所示。
SD卡的DAT0~DAT3、CLK(时钟线)和CMD(命令线)分别连接到
S3C2440A的SDDATA0~SDDATA3、SDCLK和SDCMD引脚。
SD卡支持单线和宽总线的数据传输,宽总线数据一次传4位,数度更快,因此,此设计采用宽总线方式。
ARM-Linux s3c2440 之UART 分析(一)在分析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 的设置。
一、设计课题: 基于S3C2410的设备驱动及其界面设计
二、设计目的: 1、进一步巩固嵌入式系统的基本知识; 2、掌握嵌入式应用系统的基本结构; 3、掌握嵌入式系统开发环境建立和使用; 4、掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法; 5、学会查阅有关专业资料及设计手册; 6、 MiniGUI界面编程。
三、设计任务及要求: 1、掌握嵌入式系统开发环境建立和使用; 2、掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法; 3、MiniGUI在PC上的安装、移植 4、Linux基本输入输出驱动程序设计编译与移植 5、基于MiniGUI的基本输入输出应用编程编译与移植 6、编写设计说明书(方案的确定、设计环节的考虑及必要说明等)及设备的使用说明; 7、绘制有关图纸.
四、设计内容: 1、MiniGUI在X86上安装和运行 1.1、准备工作 ①建立工作目录:mkdir /minigui-free cd /minigui-free mkdir /src ②复制源文件到工作目录:cp /media/disk/src/* ./ cp /mnt/hgfs/linux/src/* /minigui-free ③解压文件:tar zxvf libminigui-1.6.10.tar.gz tar zxvf minigui-res-1.6.10.tar.gz tar zxvf mg-samples-1.6.10.tar.gz 1.2、 MiniGUI库安装 ① 进入目录:cd libminigui-1.6.10/ ② 配置:./configure 在x86上运行只需默认配置即可,配置完成后即可生成Makefile ③ 编译:make 成功后即可生成必要的库文件等。 ④ 安装:make install 在x86上安装库文件。 5. 把libminigui加入库搜索路径: 进入/etc/ld.so.conf.d建一个minigui.conf,写上/usr/local/lib 可以使用命令完成: [root@fedora7]#echo /usr/local/lib > /etc/ld.so.conf.d/minigui.conf (如果你使用的不是fedora7可能没有/etc/ld.so.conf.d这个目录,只有一个/etc/ld.so.conf,不过作用是一样的,在这个文件末尾加上/usr/local/lib) (4)最后要把系统共享库缓存刷新,将libminigui加载上,可以使用命令 [root@fedora7]#ldconfig 这个命令执行时要花十多秒,耐心等待。当然不使用刷新命令重启系统也可以。 1.3、MiniGUI资源安装 ①进入目录:cd minigui-res-1.6.10/ ②安装:make install 必要资源文件的复制安装等操作。 1.4、MiniGUI例子编译 ① 进入目录:cd mg-samples-1.6.10/ ② ./configure ③ 编译:make 编译src目录下的例子程序,用于验证MiniGUI是否安装成功。 即可在src目录下生成可执行文件 1.5、安装qvfb 使用qt的qvfb cd qvfb 1.1 ./configure make make install
apt-get install qt3-dev-tools-embedded 1.6、配置MiniGUI.cfg vi /usr/local/etc/MiniGUI.cfg 修改如下部分为 [system] # GAL engine and default options gal_engine=qvfb defaultmode=800x480-16bpp # IAL engine ial_engine=qvfb mdev=/dev/input/mice mtype=IMPS2 [fbcon] defaultmode=800x480-16bpp [qvfb] defaultmode=800x480-16bpp display=0 1.6、 运行MiniGUI例子程序 ① 打开qvfb:qvfb -width 800 -height 480 & ② 运行helloword: src/helloworld 出现此窗口说明运行成功。 1.7、问题 ①错误1: InitGUI: Can not initialize colors of window element! InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file. 解决方法:正确配置MiniGUI.cfg文件 ②错误2: Permission denied 解决方法:权限不够,使用root用户登录。 ③ 错误3: 编译出错未找到jpeg,png等 解决方法:安装zlib,png,jpeg库。 ④ 错误4: ⑤ 错误5: 出现符号未找到等编译错误 解决方法:make clean 后在make 2、控制面板界面编程 1.建立新的zc.c文件,在makefile.am文档里添加zc.source=zc.c 2.重新命名helloworld.c文件,将程序写进去,并在/minigui-free/mg-samples-1.6.10目录下执行./configure;再执行make命令。 ①选用对话框方式编程,结构DLGTEMPLATE用来定义对话框本身,结构CTRLDATA用来定义控件。 static DLGTEMPLATE DlgYourTaste = { WS_BORDER | WS_CAPTION, WS_EX_NONE, 0, 0, 720, 480, "Contrl", 0, 0, 8, NULL, 0 }; 分别对对话框属性进行定义。 static CTRLDATA CtrlYourTaste[] = { { "button", WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, B1_X, B_Y, B_W, B_H, IDC_LED1, "LED1", 0 }, …………………………等等 }; 在此结构中定义控件,其中包括4个按钮用来控制LED,3个静态文本框用来显示提示消息,不允许用户更改,1个编辑框用来输入频率。部分代码省略。 ② 主函数操作:打开设备获得文件描述符,函数连接等。 led_fd=open("/dev/led",O_RDONLY); if(led_fd<0) { perror("open led error!"); exit(1); } DlgYourTaste.controls = CtrlYourTaste; DialogBoxIndirectParam (&DlgYourTaste, HWND_DESKTOP, DialogBoxProc, 0L); ③ 回调函数:包括对话框回调函数、文本框回调函数。 static void my_notif_proc (HWND hwnd, int id, int nc, DWORD add_data) { if (id == IDC_EDIT && nc == EN_CHANGE) { } } static int DialogBoxProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam) { switch (message) { case MSG_INITDIALOG: { } return 1; case MSG_PAINT: { } return 1; case MSG_TIMER: { } case MSG_COMMAND: switch (wParam) { } break; case MSG_CLOSE: break; } return DefaultDialogProc (hDlg, message, wParam, lParam); } 使用的几个消息: MSG_INITDIALOG: 建立对话框和控件之后,发送到回调函数的 MSG_PAINT: 窗口重绘时发送到窗口过程。 MSG_TIMER:timer专用。 MSG_COMMAND:传递wParam参数。 MSG_CLOSE:关闭时发送。 文本框回调函数用于频率的获取。
④自定义函数:实现绘图功能。 static void draw_circle_s(HWND hDlg,int x,int which) { HDC hdc; int color; color = ( (which==0) ? PIXEL_blue : PIXEL_red ); hdc=BeginPaint(hDlg); SetBrushColor(hdc,color); FillCircle(hdc,x,100,25); EndPaint(hDlg,hdc); }根据传递的参数绘制不同颜色的圆。 ⑤必须深刻理解消息回调机制,每一个消息产生各自的动作。 3、驱动程序设计 3.1 LED驱动 通过不同的参数实现不同LED的亮灭情况即可。 static int eduk4_led_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) {