基于arm的远程视频监控系统研究内容摘要:

芯片也有~个引脚用做中断输出,把这些引脚连 接起来,当外设上有事件发生, 其控制器将通过产生一个硬件中断的方式来通知处理器。 $3C2410X的中断控 制器能接受来自 56个中断源的请求,这些中断源由内部的外围设备提供 (如 DMA控制器、 UART等 )。 2. 2嵌入式 LINUX操作系统 在大型嵌入式应用系统中,为了使嵌入式开发更加方便、快捷,需要具备 一种稳定、安全的软件模块集合,用以管理存储器分配、中断处理、任务间通 信和定时器响应,以及提供多任务处理等,这就是嵌入式操作系统。 一般我们 可认为嵌入式操作系统是软实时系统。 所谓软实时系统指的是系统时限 柔性灵 活,它可以容忍偶而的超时错误,且失败造成的后果并不严重,仅仅是降低了 系统的吞吐量. Linuxl61最初是专门为基于 Intel处理器的个人计算机而设计的。 Linux的前 身指的是由芬兰学生 Linus Torvald维护开发的开放源代码的类 Unix操作系统的 内核。 然而,目前大多数人用它来表示以 Unux内核为基础的整个操作系统。 从这种意义讲, Linux指的是源码开放,包含内核和系统工具、完整的开发环 境和应用的类 Unix操作系统。 同时, IAnux遵循 GNU㈣ ’ SNot unix)的通用 公共许可证 GPL(General Public License),是自由软件家族中的一员。 利用Linux搭建嵌入式操作系统是近年来最令人振奋的方案之一, Linux 将来可能会成为主流嵌入式操作系统。 嵌入式 I. Jnux是按照嵌入式操作系统的要求而设计的一种小型操作系统。 由一个内核及一些根据需要进行定制的系统模块组成。 其 kernel很小,一般只 有几百 KB左右.即使加上其它必须的模块和应用程序,所需的存储空间也很 小。 它有多任务、多进程的系统特征,有些还具有实时性. 第 2章相关技术背景 把 Un呱用于嵌入式系统,一般都不是原封不动地照搬,而是充分考虑各 种具体嵌入式系统的特点,有针对性地对 I. inux内核加以裁减、修改和补充. 一个小型的嵌入式 Linux系统只需要引导程序、 Linux微内核 (由内存管理、进 程管理和事务处理构成 )、初始化进程 3个基本元素。 如果要让它有更多的功能 且继 续保持小型化,可以加上,文件系统 (支持十多种文件系统类型,如 exi ext NFS、 CRAMFS等 Tel39。 / IP网络支持、设计精简的应用程序等. 嵌入式 1. jIlux的主要特点是精简标准的 Linux内核,适应于多种 CPU和多 种硬件平台,性能稳定,裁剪性很好,开发和使用都很容易,并且可以使用 Unix 或 Linux上的应用程序. 嵌入式 lAnux操作系统的优势表现为: 1.支持多种体系结构 目前 IJnux能够支持 x86,ARM,PowerPC等多种CPU体系结构,现己 被移植到数十种硬件平台上. 2.多任务,内核稳定,可定制,源代码开放. 3.强大的网络支持功能 支持 TCP/ IP协议,及其上的高层协议,如 fIp,Tel,等。 同时支持 Socket 网络编程. 4.支持多文件系统; Linux支持 FA. T32,EXT2。 EXT3等多种文件系统,支持虚拟文件系统, 同时还可以连接其它的文件系统,如 ROMFS3FFS。 CRAMFS等文件系统. 5.驱动丰富,支持大量的外设 Linux支持基本所有的 PC外设,具有丰富的外设驱动程序. 6. L/ nux具备一整套工具链 容易自行建立嵌入式系统的开发环境 、交叉运行环境,并且可以跨越嵌入 式系统开发中仿真工具的障碍. 2. 2. 1嵌入式 LINUX操作系统内核结构 lAnux内核主要由 5个子系统组成:进程调度、内存管理、虚拟文件系统、 网络接口、进程间通信。 一般在 1. inux系统中的/ usr/ src./ l恤 ux。 .。 . ’(。 .。 . 代表内核版本号 )目录 11 第 2章相关技术背景 下就是内核源代码。 / arch子目录包含了所有硬件结构特定的内核代码。 / drivers子目录包含了内核中所有的设备驱动程序. 脑子目录包含了所有的文件系统的代码。 / include子目录包含了建立内核代码时所需要的大部分库文件,这个模块利 用其他模块重建内核。 该目录也包括了不同平台需要的库文件。 比如, M1nafm 是 ann平台需要的库文件. 1in/ t予目 录包括了内核的初始化代码,内核从此处工作。 lipc子目录包括了进程间通信代码。 / kernel子目录包括了主内核代码。 / h39。 b子目录包含与平台无关的诸如 strlen和 memcpy之类的通用函数. Imm子目录包括了所有内存管理代码. / 子目录包括了和网络有关的代码。 / scripts子目录存放了配置内核的一些脚本文件,比如 “make menuconfif39。 命 令,用于配置内核。 / Documentation:这个目录中包括大量的内核相关文档,系统移植中需要经 常查阅. 一般在每个目录下都有一个 dcp∞ d文件和一个 makefile文件。 这两个文件 都是编译时使用的辅助文件.其中 makefile文件中指出了编译时需要用到的编 译器,也是移植内核过程中不可缺少的. 2. 2. 2 LINUX内核对系统移檀提供的支持 虽然 1. ,inux内核采用了相对来说并不是很灵活的单体内核机制,但却具有 很好的跨平台性和可扩展性。 Linux之所以能够成为目前支持硬件平台最为广 泛的操作系统之一,这除了归功于遍布世界各地大量优秀的开发人员的贡献之 外,还应该感谢 linux的创始者 linus在最初设计该操作系统时就为提 高可移植 性所提供的独特设计。 概括起来, Linux为在系统移植方面提供了以下支持: 1.分层结构 Li眦内核的设计吸取了层次结构和对硬件抽象层 r1(HAL)的思想,对内核 进行分层,以便将硬件相关的部分和操作其它上层实现分离开来,从而增强了 第 2章相关技术背景 系统的可移植性.图二 2表示了 lAnux内核的分层结构.通过加入硬件抽象层, 将硬件相关代码和硬件无关代码分离开来,这样上层代码就不必关心底层采用 了什么方式,如何完成操作等细节.例如,不论是打开字符设备还是块设备。 对上层操作而言,和打开一个普通文件一样,都只需采用 open0函数调用即可, 而具体对设备的操作,由设备驱动程序去完成,这样,移植工作主要就集中在 部分的硬件抽象层以及和硬件设备直接相关的部分. 广 —————————————— 1 第三层 l操作系统内核层 I I.... — . .. .. . . .. . . .. . .. . . .. . . .. . . .. . .. . . .. . . .. . . .. . .. . J 广 ———————————— 1 第 _g I硬件抽象屠 (}I^L)l ● __________________________ ______________________J 广 —————————————— ] 第一层 I硬件直接相关层 l ● _______________________________. ______一 图 2. 2 IJnux内核分层结构 下面我们对这个分层结构水 l进行简要的描述: ① 硬件直接相关层 主要包括由于处理器体系结构和指令集不同而需要进行相应实现的部分, 如 ARM, MIPS, D86,PowerPC等不同体系结构和指令集的处理器,它们在内 核中和硬件直接相关的代码部分应该有不同的实现. ② 硬件抽象层 (HAL) 这是为了屏蔽底层的硬件细节,并为上层提供一个逻辑上统一的硬件环境 接口及各种硬件平台上操作系统的代 码重用而引入的机制,故这一层既和硬件 直接相关又和操作系统上层相关.从实现上看,这一层主要由一些硬件相关的 数据结构、方法和宏组成, Linux通过它们来屏蔽硬件相关的代码,所以这一 层对于操作系统上层的可移植性非常重要, IAnux内核的移植工作也主要是在 这一层上做工作,而在系统移植过程中也是一个难点。 从功能上来分,这个层 次包括两个部分:系统初始化部分和硬件设备的驱动部分. @硬件无直接关的操作系统内核层 这主要包括进程管理、内存管 理、设备管理、文件系统以及其它和底层设 各不直接相关的较高层实现。 内存管理等内核部分与目标计算机的体系结构密 切相关,必须针对目标计算机单独开发;而设备驱动、文件系统和网络部分与处 理器结构关系不大. 第 2章相关技术背景 2.面向对象思想 虽然 Linux内核主要是用非面向对象的 C语言编写而成,但是 Linux内核 中大量的借鉴和使用了面向对象的思想。 虽然 C语言本身没有提供面向对象的 语法支持,但是在 Linux中通过使用结构体和函数指针实现了对面向对象机制 的部分模拟。 例如 Linux采用了虚拟文件系统 (VFs)进行抽象的技术,为各种文 件系统提供了一系列统一的结构作为接口,各种实际 的文件系统只要对 VFS提 供的数据结构进行实现,就可以将自己的文件系统挂接到系统中,这就好比为 整个系统提供了一条文件系统的总线,只要遵循总线协议,就可以进行相互间 的通信。 在上层调用的时候,只需要使用通用的接口就可以通过函数指针调用 到相应的具体实现。 这样,一个结构体的定义相当于一个类的定义,结构体中 使用函数指针就是对类中方法的模拟。 通过对结构体的不同实现,在内核中部 分实现了面向对象的多态特性,使内核结构更为清晰,井且增强了内核的硬件 无关性,提高了系统的可移植性. 3.可加载模块机制 对传统的单体内 核操作系统来说,对内核的任何部分进行了修改,要想在 目标平台中得到体现,都必须重新编译并链接内核以便生成新的可执行文件映 像然后下载到目标板,重新启动系统。 因此,如果在这样的系统上进行修改、 增加设备驱动程序、更新内核等都是很困难的。 显然,在这样的系统上进行移 植也是很困难的事. 为此, Linux引入了可加载模块的独特解决方案唧。 可加载模块也是在内核 空间运行的程序,实际上是一种可在系统启动后的任何时候动态载入核心的代 码块。 它在被加载到内核前并不进行链接,不能独立运行,但是可以装载到系 统中作为内核的一部 分运行,从而可以动态扩充内核的功能。 当我们不再需要 它时又可以将它从核心中卸载并删除。 Linux系统使用可加载模块机制很好地 解决了扩展性的问题,大大方便了 Linux平台下驱动程序的开发,增强了系统 的伸缩性和运行效率. Linux内核可加载模块有两个特征: ① 动态链接 当内核己经在存储器并正在运行时,模块可以被加载并链接到内核。 模块 也可以在任何时候断开链接,从存储器中移出。 ② 可堆栈模块,模块按层次摊列 通过可堆栈模块可以定义模块间的依赖关系,这有两个好处:一组相似的模 14 第 2章相关技术背景 块,相同的代码可以移入一个模块,减少了重复;内核可以确保需要的模块都在, 避免卸载正在运行的模块依赖的其他模块,并且当加载一个新模块时加载任何 需要的附加模块. 采用内核可加载模块机制,将模块从内核中独立出来,大大增加了 Linex 内核的灵活性。 对于系统的移植丽言,采用内核可加载模块,主要优点有: ① 通过使用内核可加载模块,分离了内核硬件相关代码中与硬件体系结构 没有关联或关联较小的部分,只在内核中保留和硬件体系结构直接相关的硬件 代码。 降低了内核的复杂度。 因此,该机制允许我们在开发的初期,只需具备 内核所必须的相关软硬件模块,就可让内核运行起来,在此基础上进行系统的 开发,大大降低了系统移植的难度. ② 可以将对硬件设备的支持,也就是驱动程序的部分做成可加载模块的形 式。 由于这些驱动都可以编译成单独的模块,降低了新增硬件对内核的影响, 降低了内核为支持新硬件的复杂度。 这样就可以大大增加内核支持的硬件 设备 种类. @模块可动态加载,让我们无需重构核心并频繁重新启动来尝试运行新的 内核代码,这就大大方便了开发人员的调试工作,降低了开发人员的开发难度。 ④ 可以运用动态加载实现在线更新,因此不必为满足应用需求的多样性而 把将来所有可能需要的驱动都加入内核,而是把该部分留给用户自己,或将来 需要的时候才进行动态加载,减少了系统开发复杂性,大大节约了内核空间的 占用。 最后,需要说明的是,分层结构、面向对象思想和可加载模块这几种机制 并不是各自孤立的,而 是紧密联系,相辅相成的. Linux内核吸取了分层结构 和面向对象的思想,从设计的角度对单体系内核迸行了改进,可加载模块机制 在 I. inex内核中得到具体实现,从实现和实用的角度增加了内核的灵活性。 分 层结构、面向。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。