首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于ARM处理器的PC/104总线嵌入式计算机的设计(3)

基于ARM处理器的PC/104总线嵌入式计算机的设计(3)

在可编程逻辑中,删 处理器的每次访问通过对关 键访问信号 NCS、NEW 和 NRE的解码,识别出相对应的ISA IO读写或内存读写,通过处理器的 RDY信号将访问 逻辑配合产生 ISA访问时序,并且降低访问速度。在 ISA信号这边 ,通过 ISA的 IOCHRDY信号指示本次读写操作完成。具体的操作流程如图 6所示。



    S3C2410内部集成了 MMU协处理器,在应用程序或驱动中对它的地址访问只能采用虚地址访 问的方式。因此,需要在 Linux系统中,把用于 Pc/1O4的地址从实地址映射到虚地址,才能在系统中对这块空间进行操作(为了保证系统的安全性,用户态函数通常是不允许访问地址空间的,应用程序只有进入内核状态才由操作系统完成相关的访问,并获取返回值);还需要在内核中设置这片空间的总线模式为变延迟 IO,这样才能通过 CPLD进行总线转换。Linux内核提供了很方便的地址映射方式,在初始启动的映射表内将需要映射的地址对应设置好,系统就可以自动进行地址映射了。通过设置用户可读写属性,在应用程序也可以通过内存操作操作 PC/1O4总线 ,大大方便了用户程序的编写。

5 软件设计

5.1 开发环境的建立与交叉编译

    交叉编译环境是指编译、链接和调试嵌入式应用软件 的环境,它与运行嵌入式应用软件的环境有所不同,通常采 用宿主机/目标机模式。在主机中安装 RedHat9.0嵌入式 Linux操作系统[3],并装入 arm-linux-gcc编译器 和 Linux 的 2.4.19版本内核。其中,arm-linux-gcc就是交叉编译工 具。目标机就是自行开发的基于 ARM 的 CPU模块。

5.2 配置、编译内核

    在开发环境建立后 ,针对具体的应用对 Linux内核进行裁减、配置和编译。可以分为以下几个具体操作步骤:

    (1)make mrproper:用于清除所有的临时文件、中间文件、配置文件。

    (2)make menuconfig:进行核心配置,在其中每个选项都有两种选择 Y和 N,分别表示支持和不支持相应的特性或驱动程序,个别选项有 M选择,表示把相应的特性或驱动程序编译成可加载模块的方式。根据不同的应用,对内核进行裁减  系统将新的配置保存成.config文件。

    (3)make dep:用于生成依赖性。

    (4)make zImage:产生压缩的核心映像。内核压缩映像被系统保留在/arch/arm/boot/目录中。

    (5)make modules:组织内核中各个子目录已经配置的模块。

    (6)make modules install:在/lib/modules/2.4.19/目录中组—织模块。

经过以上的裁减与编译,生成的内核映像减小到1M以内,大小在 600~700kb左右。

5.3 系统安装

    Bootloader引导程序是嵌入式 开发很重要的组成部 分。它是系统上电后执行的第一个程序,并由它最终将操作系统启动起来并将控制权交给操作系统。Bootloader引导程序最基本的功能是对硬件系统 的初始化、内核启动参数设置和内核启动。采用 VⅣI作为 内核 的启动加载程序,其主要功能有:

    (1)初始化 CPU的主频、SDRAM、中断、串口等硬件;

    (2)通过串口下载内核或文件系统到 目标板上 ;

    (3)对 FLASH进行格式化,并完成分区;

    (4)将修改过的内核或文件系统写入到 FLASH内;

    (5)为用户提供一个命令接口。

    下面介绍安装的完整过程:

    (1)在宿主机上安装 VIⅥ 源文件 ,并利用编译器对源代码进行配置、编译 ,得到原始二进制可执行映像 vivi。生成 的vivi映像  通过 JTAG模式烧录到 FLASH中。

    (2)在 vivi安装完成后,需要对 FLASH进行格式化和分区。 需要根据实际的应用情况,对分区的起始位置和大小进行设计。 在 FLASH上至少建立三个分区,第一个分 区一定要从 0地址开始,这是由处理器的硬件结构决定的,同时 vivi默认前三个分区分别是 vivi、内核、文件系统。当然,可以进行更多的分区,但这三个分区是必不可少的。

    (3)利用 vivi的下载功能,并借助于 minicom、超级终端这样的系统工具,通过串口把内核和文件系统移植到目标板。

    (4)设置内核启动参数,譬如内核在内存中的运行位置、根文  件系统路径等。Linux已经可以在目标系统板上运行了。

    为了方便使用,确保系统的稳定性和可维护性 ,在建立  FLASH分区和内核代码中进行独特设计。FLASH分区结构示意图如图 7所示。



    在内核代码中,将 48M 64M 这 16M 空间的地址映射从 MMU中去掉,因此在应用程序中不可能访 问到这16M空间的地址  当应用程序出现异常,程序指针产生混乱的时候,通过这种软件和硬件相结合的设计方法保证其依然不可能访问到维护态下的数据。因此 ,如果系统崩溃,还可以进入维护态系统,并在维护态系统 中对默认系统进行恢复。它避免系统崩溃后,又要重新进行 FLASH分区、内核下载这样一些繁琐的过程。

6 实验测试比较

    为了对ARM和 X86两种架构进行更加直观的比较我们对两款嵌入式平台进行 了测试比较。其 中,ARM 平台使用的是 S3C2440 400MHz处理器,X86平台使用的是威盛 65Mhz的嵌入式 X86处理器。各项 比较指标如表所示



    测试表明,X86平台的计算机更适合于完成处理、运算功能要求比较强大的应用环境。在嵌入式这样以控制为主的应用场合中,选择 ARM 处理器更加合适。

7 结束语

    嵌入式系统设计正在向着软硬件相结合的方向发展嵌入式操作系统的应用越来越广泛,而基于 ARM 处理器和 Linux操作系统的嵌入式计算机以其设计灵活、软硬件可裁剪、性能优越、成本低等优势,倍受设计者和使用者的青睐。本文对 ARM处理器和嵌入式 Linux的应用进行了研究探索,介绍了相关设计思路,并结合基于 ARM处理器的PC/1O4总线嵌入式计算机的开发过程,对嵌入式系统中的关键技术进行了研究。通过对传统的 X86嵌入式设备弊端的分析以及针对 ARM 处理器的迅猛发展的势头,提出了用ARM处理器替代 X86在工业控制领域应用的思路,并在此思路指导下完成了基本研究和具体设计。
继承事业,薪火相传
返回列表