基于嵌入式的网络视频监控系统研究(编辑修改稿)内容摘要:

电或从 新启动时可以将 bootloader 从Flash 内部拷贝到该 4K 空间内,从而可以执行中断服务历程程序段,当控制权转到嵌入式操作系统,系统就可以很容易的改变中断服务历程函数,原因在于SRAM 为内部内存,其读写速度较外部内存有极大的优势,并且不会改变 Flash内部存储的中断服务历程设置代码。 11 核心板使用的存储器有以下几种: AMD 公司的 AM29LV8000B(Nor Flash,1MB),还有 SumSung 公司的 K9F1208U0B(Nand Flash, 64MB),以及不是太经常使用的现代 公司的 HY57V561620CTP(SDRAM, 32*2MB)。 Nor Flash 是挂载在 bank0上的,其连线方式与 S3C2410A手册的 16bit线宽连线方式一致。 S3C2410内部集成了 Nand Flash 控制器,所以其不挂载在任何一个区,其读写功能均由控制器完成。 按照 Bank6 和 Bank7 两个区必须挂载相同内存大小的 RAM 的规定,分别将两个 32M 的 SDRAM 挂载在两个区 , 其硬件连接方式可以参考 S3C2410手册 [16],其寻址空间为 0x300000000x37ffffff。 图 S3C2410X 内存映射图 2 . Nand Flash 控制器 Flash 存储器技术可以说是 EPROM 和 EEPROM 非易失性存储器技术的综合,但是它们又有区别,比如: Flash 存储器可以按块进行擦除操作,而 EEPROM只能按位擦除,显然 flash 存储器在擦除速度方面有优势。 Flash 存储器是一个成熟的技术,其相对其它非易失性存储器如 EPROM 和 EEPROM 有很多优势,因此在嵌入式系统用常常使用 Flash 存储器代替 EPROM 和 EEPROM,市场上大部分嵌入式产品都是使用 Flash 存储器作为固化存储器。 Flash存储器通常有 Nor Flash和 Nand Flash两种,在核心板上两者均有使用,由于价格因素 Nor Flash 容量采用 1M,而 Nand Flash 使用了 64M,鉴于 Nand Flash容量较大,此次采用的嵌入式系统启动方案为 Nand Flash启动。 为支持 Nand Flash 启动,在 S3C2410 内部集成了 4k 内部 SRAM 缓冲区(称为 Steppingstone) , 12 当目标板上电或被复位重新启动时, Nand Flash 最前 4KB 内容将会被拷贝至SRAM 中执行。 此部分程序运行后,将会把 Nand Flash 中其它编译过的程序,如 Linux 内核和根文件系统拷贝到 SDRAM(bank6 和 bank7 扩展的外部内存 )运行。 由于 Nand Flash 本身的缺陷,这些拷贝的数据均要经过数据有效检查( ECC)。 图 展示 Nand Flash 控制器的主要功能模块及其模块之间的联系。 图 Nand Flash 控制器 图 Nand Flash 操作模式 从图 我们可以看出,对于 Nand Flash控制器,当嵌入式系统从 Nand Flash, 启动时有两种操作模式:一种是自动启动模式 (Auto Boot Mode) ,另外一种是Nand Flash 模式 (Nand Flash Mode)。 自动启动模式是在嵌入式系统对 Nand Flash进行读写前自动由其相关寄存器( SFR)将 nand Flash 前面 4KB 代码自动拷贝至内部 SRAM( Steppingstone)然后自动运行,在启动启动模式中,是按照以下四个步骤进行的 [16]. 1)重新启动完成。 2)当自动启动模式被使能, Nand Flash 最前 4KB 数据被拷贝到内部 SRAM缓冲区中。 3)内部 SRAM 缓冲区被映射到 Bank0 区,地址为 0x00000000000000020。 13 4) CPU执行内部 SRAM 中的代码。 值得注意的是:在自动启动模式中, ECC 功能被禁止,为此 NAND Flash存储器的最开始的 4KByte 空间必须是连续没有坏块的。 SBC2410 硬件资源 SBC2410 开发板是基于三星公司的 ARM 处理器 S3C2410X,采用 6 层板设计。 开发板集成了 64M SDRAM、 64M Nand Flash、 1M Boot Flash、 RJ45 网卡、音频输入与输出、 USB Host、 USB slave、标准串口、 SD 卡插座、用户按键和一些用户灯等设备接口,并且引出 CPU的 大部分信号引脚。 核心板上同时具有 Nor Flash 和 Nand Flash,可以通过调线 BOOT SEL 选择启动方式 (Nor Fl ash 启动或Nand Fl ash 启动 ),对应的硬件资源 [8]如表 所示。 表 SBC2410 硬件资源表 14 主机开发环境的搭建 进行嵌入式开发,首先要搭建一套完善的开发环境,这套开发环境包括操作系统以及连接器、编译器和调试器在内的软件开发工具。 由于在嵌入式开发板上资源有限,不能在开发板上运行开发工具和调试工具,因而采用一种交叉编译调试环境,即在宿主 机(通常是 PC主机)上建立交叉编译调试环境,生成可执行文件,然后下载到目标板上运行。 系统开发环境的搭建方法如图 : 图 系统开发环境搭建图 图中宿主机是指 X86结构的计算机,在宿主机上安装的操作系统有 RedHat Enterprise Linux AS4和 Windows XP。 嵌入式目标板就是友善之臂 SBC2410开发板,宿主机与目标板的通信方式有 JTAG并口通信、串口通信、 USB接口通信和通过网线通信的方式。 JTAG口主要下载 vivi可执行代码到目标板,串口主要用来控制 vivi命令和 调试系统,有时也用来下载 vivi可执行代码。 Linux内核映像和根文件系统映像是由串口控制的通过 USB接口下载的,网口主要负责把应用程序的可执行代码下载到标板。 串口环境的搭建 串口环境的搭建是通过设置超级终端参数建立的,主要设置可用串口,波特率等。 Xp系统下串口环境的设置相对来说很简单,只需要打开超级终端设置可用串口为 COM1,波特率为 115200就行了。 Linux环境下的串口的设置是通过设置 mini实现的, mini是 Linux下常用的终端仿真程序,它类似 windows下的超级 终端。 设置如下图 : 15 图 mini设置 Mini窗口的打开是通过命令# mini s实现的,图中 /dev/ttyS0表示使用的是串口 1。 Exit退出后,设置文件就保存到 /etc/。 设置完毕,打开目标板上上的电源开关,就可以看到 vivi的启动信息了。 USB接口环境的搭建 USB接口环境的搭建是在 windows环境下建立的, USB接口主要负责 Linux内核映像文件和根文件系统映像文件的下载到开发板上,这种下载的速度快,节约了开发时 间。 这种下载方式与超级终端协作完成。 首先打开超级终端进入 vivi指令,然后按照 vivi的命令下载。 内核映像的下载命令: vivi load flash kernel u 根文件系统的下载命令: vivi loadyaffs e root u 然后出现 USB host is connected. Waiting a download提示符,打开 USB下载界面,选择要下载的映像文件。 串口打印出下载的过程,如下所示下载根文件系统串口的打 印过程: Now, Downloading [ADDRESS:30000000h,TOTAL:38162266] Downloaded file at 0x30000000, size = 38162256 bytes Flash params: oobsize = 16, oobblock = 512, erasesize = 16384, partition size =64667648 Erasing and programming NAND with yaffs image Block erasing(addr/count) Block bad(addr/count) All count 0x01348000/01086 0x00ef0000/00001 01087 NFS环境的搭建 网络文件系统 NFS最早是 SUN开发的一种文件系统。 NFS允许一个系统在网络上共享目录和文件。 通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统的文件。 Linux系统支持 NFS,使用 NFS的这种功能,就能很轻松地将宿 16 主机上地文件挂载到嵌入式开发系统上去,这样不仅方便了嵌入式开发板对主机上文件地访问,而且极大地提高了嵌入式开发系统中应用程序地开发和调试效率。 配置 NFS,需要添加 /etc/exports文件。 /etc/exports文件格式以及说明如下: 共享目录主机名称 1(参数 1,参数 2) 主机名 2(参数 3,参数 4) 共享目录:是宿主机上要向外输出的以后目录 主机名称:是允许按照指定的权限访问这个共享目录的远程主机 参数:是定义了各种港问权限 exports配置文件参数说明如表 : 在我的开发板上 exports配置如下: 表 exports配置文件参数说明 /FriendlyARM/root *(rw,sync,no_root_squash) 这种配置表示输出共享 /FriendlyARM/root目录,并且所有的 IP都可以访问。 在完成 /etc/exports这个配置文 件后就可以启动 NFS服务了,用 service命令启动。 service portmap start service nfs start service iptables stop 开发板要共享宿主机上的文件 /FriendlyARM/root,只需要运行文件的挂载命令就可以了。 和挂载本地文件系统时唯一不同的地方在于要挂载的文件系统的描述前加上远程文件系统的主机名或 IP地址。 挂载语法如下 : mount t nfs :/FriendlyARM/root /mnt 挂载成功后, 就可以把要调试的应用程序拷贝到宿主机 /FriendlyARM/root 17 下进行挂载调试,调试成功后就可以下载到开发板上永久保存。 交叉编译工具的搭建 交叉编译工具的搭建是整个系统很关键的一个步骤,这种工具的搭建是在宿主机 Linux系统下完成的,主要给交叉编译工具指定路径,使其在编译代码时能够工作。 本系统针对 ARM平台的,现在有不少站点可以免费下载到针对 ARM体系结构的交叉编 译器。 当前交叉编译器有多种版本,本系统使用的交叉编译工具 armlinuxgcc,为了使用方便把这些工具路 径加入到环境变量 PATH中,只需要修改 /etc/profile文件,修改如下: Path manipulation if [ `id u` = 0 ]。 then pathmunge /sbin pathmunge /usr/sbin pathmunge /usr/local/sbin pathmunge /usr/local/arm/最后一行使把编译器路径加入到 PATH, 还有在系统中使用了 版本的交叉编译工具, vivi源代码,而本 系统使用的 Linux内核版本使 ,需要高版本的 , ,其他版本的编译器在编译 busybox的时不通过。 交叉编译工具的搭建完毕就可以针对 ARM平台进行本系统的移植工作,包括 vivi的移植, Linux内核的移植,根文件系统的制作等。 本章小结 本章主要完成了系统的整体设计方案,针对这个方案的需求完成硬件的选型,并简单的介绍了硬件的资源和结构。 重点介绍了主机开发环境的搭建,包括串口,USB接口、网络接口和 交叉编译工具的搭建,这是系统开发所必需的,随后的移植工作和用户应用程序的开发都是在这个环境下设计并完成的。 18 第三章 嵌入式 Linux操作系统的移植 嵌入式 Linux操作系统能够有效的管理复杂的系统资源,同时提供了库函数、驱动程序、工具集和基本的应用程序,为设计工作带来诸多方便。 为了能使用Linux自带的资源还需要把 Linux操作系统移植到本系统使用的 ARM开发平台上。 目标板上 Linux系统的运行需要经过几个步骤才能出现系统提示符或运行用户应 用程序。 系统加电后。 首先从 0x00地址开始取的 Boot Loader 程序,然后判断系统是否要启动 Linux内核映像,如果不启动则进入 Boot Loader命令操作,如果启动内核,则载入内核映像,内核对各种硬件设备进行初始化,挂载根文件系统,执行 init进程,并从 /etc/inittab取得配置文件,最后提示用户登陆或执行用户应用程序。 目标板上 Linux系统的启动过程如图。 图 目标板上 Linux系统的启动流程。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。