基于armlinux的嵌入式图像采集内容摘要:

Refresh Cycles/64ms 或 8192 Refresh Cycles/64ms 这样 的标识 ,这里的 4096 和 8192 是 SDRAM 每个 bank 的行数,刷新命令只对一行有效,因此发送刷新命令的间隔也是随 SDRAM 的每个 bank 行数来订的。 SDRAM 是多 bank 结构,这样在一个 bank 进行预充电时,可以读取另一个 bank 的数据,这样无等待的读取大大提高了存储器的访问速度。 当系统启动时, ARM 首先从复位地址 0x0 处读取启动代码,在完成系统初始化后,程序代码一般应调入 SDRAM 中运行,以提高系统的运行速度;同时系统以及用户堆栈以及运行数据也都放在 SDRAM 中。 SDRAM的控制时序比较复杂, SDRAM 控制器需要完成上电、预充电、自山东轻工业学院本科生毕业设计(论文) 9 动刷 新、初始化、模式寄存器设置、读写等功能。 对 SDRAM 控制器的初始化是非常重要的,这个过程一般在启动之后进行,然后就可以使用 SDRAM了。 ARM 内部有一个可编程的 16 位或者 32 位宽的 SDRAM 接口,允许连接两组 SDRAM。 有了 SDRAM 控制器,只要选择标准的 SDRAM 芯片,就可以按照接口电路连线了。 本系统选用两片 Hynix 公司的 HY57V561620 芯片来扩展系统的 SDRAM,其管脚描述如表 31: 表 31 HY57V561620管脚描述 此芯片数据总线宽度是 16 位宽的字长,选用两片扩展为 32位字长的,选用 S3C2410 的 nGCS6 作为片选信号,将 S3C2410 的 ADDR2 ADDR25 作为内部 bank 选择线,与 BA0、 BA1 相连接。 其电路原理图如图 33: 山东轻工业学院本科生毕业设计(论文) 10 图 33 SDRAM 电路原理图 FLASH 电路设计 在嵌入式系统中,有两种程序运行方式:一种是将程序加载到 SDRAM中运行;另一种是将直接在 ROM/FLASH 中运行。 因为在处理器对 FLASH 的读写速度小于对 SDRAM 的读写速度,因此一般选择第一种方式。 将程序代码放在 FLASH 中,运行的时候将程序加载到 SDRAM 中运行。 一般 Flash 作为一个非易失存储器件用于存放程序代码、常量表以及用户掉电后需要保存的数据。 FLASH闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。 Flash 有 NORFlash 和 NANDFlash 两类。 两类存储器的比较: 性能比较。 任何 flash 器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行 写入操作之前必须先执行擦除。 NANDFlash 用擦出速度远比 NorFlash 擦出速度快,因此 NANDFlash 的写入速度远比 NORFlash 快。 NORFlash 的读取速度比 NANDFlash 要快,NANDFlash 的擦出块单元比 NORFlash 擦出块单元要小,因此 NANDFlash擦出电路更加简单。 另外 NANDFlash 的擦写次数要远远多于 NORFlash的擦写次数。 接口差别。 NORFlash 采用 SRAM 接口,有足够的地址引脚来寻址,可以很容易的采取其内容的每一字。 而 NANDFlash 器件的存取操作相当的复杂, NANDFlash 只有 8 个引脚来传输控制、地址和数据信息。 NANDFlash 的读写操作采用 512字节的块。 比较像硬盘的管理操作。 因此在使用的难易程度上, NORFlash 更占优势。 因为使用 NANDFlash 一般要山东轻工业学院本科生毕业设计(论文) 11 写其读写驱动程序。 在体积和价格方面。 NANDFlash 单元尺寸几乎只是 NORFlash 的一半,价格也比后者便宜。 NOR主要应用在代码存储介质中, NAND 适合于数据存储。 本系统使用 Samsung 的 K9F1208U0B 芯片 来做为 系统的 NANDFlash 存储器,该器件的容量为 64MB。 其管脚描述如 表 32 所示 : 表 32 K9F1208U0B 管脚描述 引脚 功能 I/O0~I/O7 数据输入输出端,芯片未选中为高阻态 CLE 命令锁存使能 ALE 地址锁存使能 CE 芯片选择控制 RE 数据输出控制,有效时数据送到 I/O 总线上 WE 写 I/O 口控制,命令、地址、数据在上升沿锁存 WP 写保护 R/B 指示器件状态, 0 为忙, 1 为闲。 Vcc 电源端 Vss 电源地 由于 S3C2410 有 NANDFlash 控制器,因此我们只需要将对应 的管脚连接起来即可,连线原理图如图 34 所示 : 图 34 Flash 电路原理图 山东轻工业学院本科生毕业设计(论文) 12 USB 电路设计 S3C2410 有两路 接口,其中一路固定为 HOST 接口,另一路可配置为 HOST 或者 DEVICE 接口。 这两个下行口对于芯片的引脚为 DN0、 DP0和 DN DP1,其中 DN DP1 引脚与 USB 设备端( DEVICE)的引脚复用。 其与 S3C2410 的接口电路如图 35: 图 35 USB 电路原理图 JTAG 电路设计 JTAG( Joint Test Action Group)是 IEEE的标准规范, ARM内部 集成了 JTAG型的扫描链,可以进行调试和配置嵌入式 ICERT 逻辑。 JTAG仿真器是通过 ARM 芯片上的 JTAG 边界扫描与 ARM 核进行通信,属于完全插入式调试,这种调试方法不占用偏上资源。 不需要目标存储器,不占用目标系统的任何端口, JTAG 调试的目标程序是在目标板上执行的,仿真更接近于目标硬件仿真结果更接近真实的运行环境。 JTAG 电路用于仿真和调试,本系统用于下载系统引导程序 BootLoader。 本系统采用 20脚 JTAG 仿真调试接口, JTAG 信号的定义及与 S3C2410 的连接如图 36: 山东轻工业学院本科生毕业设计(论文) 13 图 36 JTAG 电路原理图 串口电路设计 S3C2410 有 3个 UART 口,在本系统中只使用了 UART0 口,用于程序的调试,系统使用 MAX232 串口芯片, MAX232 芯片可以驱动两路 RS232 串口,但是本系统只需要使用一个 RS232 来辅助程序的调试,只使用了其中的一路。 其与S3C2410 的连接原理 图如图 37: 图 37 串口电路原理图 第四 章 监控系统服务器端的软件 设计 监控系统服务器端软件的总体设计 [9] 一个嵌入式 Linux 系统从软件角度看可以分成四个由下到上的层次:系 统引导加载程序、 Linux 内核、文件系统、用户应用程序。 山东轻工业学院本科生毕业设计(论文) 14 系统引导加载程序包括固化在固件中的 boot 代码(可选)和 BootLoader两大部分。 Bootloader 是嵌入式系统的引导程序,相当于 PC 机中的 BIOS,它是严格依赖硬件的,即没有一个通用 Bootloader 程序,不但不同的嵌入式处理器 Bootloader 不同,相同处理器不同的系统板也不一样。 它一般完成系统板上的主要部件的初始化,将操作系统内核映像加载到内存中去,然后跳转到操作系统所在的空间,启动操作系统。 Linux 内核。 操作系统部分,根据板子的 硬件资源和系统功能需要定制的内核以及内核启动参数。 文件系统。 包括 Linux 根文件系统和其他建立在 Flash 设备之上的文件系统。 用户应用程序。 完成特定功能的应用程序。 本系统主要完成这一部分。 本系统采用面向过程升级式模块化程序设计思想。 面向过程的模块化程序设计是一种严格自顶向下,逐步细分的设计模式。 主要有三个模块:数据采集与图像压缩模块、网络传输模块、网络控制模块。 每个模块建立一个线程,数据采集线程与网 络传输线程之间使用 互斥锁进行同步。 各个模块之间的关系框图如图 41: 软 件 模 块 关 系 图客 户 端网 络 控 制线 程数 据 采 集和 压 缩 线程网 络 传 输线 程服 务 器 与 客 户 端 信 息 交 换 , 包括 客 户 端 连 接 服 务 器 处 理 、 用户 登 录 验 证 、 监 控 质 量 设 置 等设 置 图 像 压 缩 质 量读 取 图 像 文 件向 登 录 成 功 的 用 户 发送 监 控 数 据控 制 发 送41 软件模块关系图 山东轻工业学院本科生毕业设计(论文) 15 Linux 简介以及交叉编译环境的建立 嵌入式 Linux 简介 Linux 操作系统是一款优秀的开源的操作系统,支持多用户、多线程、多进程,实时性好,功能强大且稳定。 同时,它又具有良好的兼容性和可移植性,被广泛应用计算机以及各种嵌入式平台上。 Linux 内核开始是由芬兰人 Linus处于个人爱好编写的。 Linux 的第一个发行版本是在 1991 年 9 月 发布在Inter 上的。 Linux 的版本分为两类:内核版本和发行版本。 内核版本是在 Linux 的领 导之下,开发小组开发出来的版本号,现在最新的版本是 版本。 发行版本是一些组织或者公司将内核与一些应用软件或者文档打包在一起,并提供一些安装界面、系统设置和管理工具,形成一些发行版本。 常见的发行版本有 Fedora Linux、 Ubuntu Linux、 Mandriva Linux 和国产的红旗 Linux。 嵌入式 Linux 是以 Linux 为基础的嵌入式系统,它将日益流行的 Linux 进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。 嵌入式 linux既继承了 Inter 上无限的开放源代码资源,又具有 嵌入式操作系统的特性。 嵌入式 Linux 的特点是版权费免费。 购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能 RT_Linux Hardhat Linux 等嵌入式 Linux支持,实时性能稳定性好安全性好。 嵌入式 Linux 与其他嵌入式操作系统有许多优越性: 首先, Linux 是开放源代码的,不存在黑箱技术,遍布全球的众多 Linux 爱好者又是 Linux 开发者 的强大技术支持;其次, Linux 的内核小、效率高,内核的更新速度很快 ,linux 是可以定制的,其系统内核最小只有约 134KB。 第三,Linux 是免费的 OS,在价格上极具竞争力。 Linux 还有着嵌入式操作系统所需要的很多特色,突出的就是 Linux 适应于多种 CPU 和多种硬件平台,是一个跨平台的系统。 到目前为止,它可以支持二三十种 CPU。 而且性能稳定,裁剪性很好,开发和使用都很容易。 很多 CPU 包括家电业芯片,都开始做 Linux 的平台移植工作。 移植的速度远远超过 Java 的开发环境。 也就是说,如果今天用Linux 环 境开发产品,那么将来换 CPU 就不会遇到困扰。 同时, Linux 内核的结构在网络方面是非常完整的, Linux 对网络中最常用的 TCP/IP 协议有最完备的支持。 提供了包括十兆、百兆、千兆的以太网络,以及无线网络, Toker ring(令牌环网 )、光纤甚至卫星的支持。 所以 Linux 很适于做信息家电的开发 [10]。 嵌入式 Linux 以其这些 优势,被广泛应用在移动电话、个人数字助理( PDA)、山东轻工业学院本科生毕业设计(论文) 16 媒体播放器、消费性电子以及航空航天领域等,并随着技术的进步嵌入式 Linux应用将会更加广泛。 构建交叉编译环境 交叉编 译是编译技术发展过程中的一个重要分支,就是在另一个平台上生成另一个平台的可执行程序。 两个不同平台可以是处理器体系结构的不同,也可以是所运行的操作系统的不同。 交叉编译过程中的两个平台分别叫宿主机和目标机。 宿主机是编辑和编译程序的平台,一般是 PC机,而目标机是开发的系统,就是这里的嵌入式系统。 对于本系统,宿主机就是装有 Fedora9 操作系统的 PC 机,而目标机就是硬件平台是 S3C24操作系统是 Linux 的开发板 [11]。 交叉编译环境构建的第一步 —— 安装交叉编译器 在 PC 机的 /usr/local 目录下新建一个文件夹 arm 命令行: mkdir /usr/local/arm 将下载的 拷贝到 /usr/local/arm 目录下并解压缩。 命令行: cp – r /tmp/ /usr/local/arm tar jxvf 此 arm 文件夹下 就是交叉编译器的安装目录 导出交叉编译器的路径。 命令行: export PATH=$PATH:/usr/local/arm/ 第二步 —— 安装 linux 内核,编译内核。 第三步 —— 安装根文件系统 图像采集模块的设计与程序实现 Video4Linux 简介 Video4。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。