基于Xscale的PC/104 Linux系统构建

发布者:悠然自在最新更新时间:2012-03-23 来源: 微计算机信息 关键字:PC104  Linux  Xscale  移植 手机看文章 扫描二维码
随时随地手机看文章

1 引言

PC/104是一种专门为嵌入式控制而定义的工业控制总线。其实质是一种紧凑的IEEE-P996总线规范。PC/104的信号定义和PC/AT基本一致,但电气和机械规范完全不同,是一种优化的、低功耗的、小型的、堆栈式结构的嵌入式控制系统[1]。

基于嵌入式PC/104的操作系统多为DOS或者Windows。采用DOS系统无图形窗口,交互能力差;采用Windows系统则需要昂贵的版权费,成本高,且存在安全问题。

ARM(Advanced RISC Machines) 公司是全球领先的16/32位RISC微处理器知识产权设计供应商[2]。 ARM处理器具有体积小、功耗低、性能优良且成本低廉等优点,与PC/104的工作环境对其提出的要求相符,而且Linux具有开放源码的特点,用户不必为昂贵的版权费用担心。因此,研究以基于ARM的Xscale处理器替代传统的X86架构的PC/104处理器,并以嵌入式Linux系统替代DOS或 Windows系统具有重要意义。

2 PC/104目标硬件平台介绍

本文采取博创公司的UP-PXA270 PC/104 CPU模块作为构建Linux的目标硬件平台。该模块采用Intel PXA270 Xscale低功耗处理器,主频104MHZ~520MHZ,集成了64M的SDRAM,有16M的Nor Flash存储软件程序及重要数据,提供了CF卡接口、USB接口、VGA接口、LVDS接口、串口、以太网接口。

3 Linux系统在PC/104上的实现

3.1 内核的选择与下载

目前,Linux已经正式发布了2.6.20内核版本,综合考虑先进性和稳定性两个因素,本

文不采用最新的2.6.20版本,而是采用更稳定和成熟的2.6.10版本,该版本可从下面的网址

http://www.arm.linux.rog.uk/下载。

3.2 交叉编译环境的建立

由于宿主机和目标板的处理器架构不同,需要建立交叉编译环境。在宿主机上完成程序的开发和编译,在目标板上执行,可以充分利用宿主机的高性能,有效提高编译效率。

主机采用商用版Redhat-Linux9.0,以解决基于Windows虚拟机环境存在兼容性及对速度产生影响等问题。

本文在X86架构上的主机上采用针对ARM的工具链进行开发,开发工具链采用UP-PXA270 PC/104 CPU模块配套光盘中提供的交叉编译器arm-linux-gcc,安装步骤如下:

以超级用户root登陆,并打开一个shell,依次执行如下操作:

1)   #mkdir/usr/local/arm;创建开发工具目录;

2)   #cd/usr/local/arm;进入该目录;

3)   #tar xvzf arm_linux_gcc.tar.gz;解压缩交叉编译工具;

4)   #export PATH=/usr/local/arm/3.2.1/bin:¥PATH。设置环境变量。

便可完成安装,建立好交叉编译环境。[page]

3.3 Boot Loader移植

引导加载程序Boot loader是在操作系统内核运行前运行的一小段程序。用来完成硬件和软件运行环境的初始化,建立内存空间映射图,以便最终调用操作系统内核。作用与PC机上的BIOS基本相同,是最底层的引导程序。

本文采用了功能最多、最具弹性的被最为积极开发和维护的开放源码的bootloader,即U-BOOT。它除了提供引导功能外,还提供监控程序的功能,该功能在系统开发期间非常有用。

Boot Loader移植操作如下:

首先确定在cpu./xscale/和board./pxa270下存在xscale.c和pxa270.c两个文件,然后在根目录下输入:make pxa270_config得到U-Boot.bin映像文件,最后用JTAG烧录到FLASH,完成Boot Loader的移植。

3.4 Linux内核的配置与裁减

Linux内核已经发展到2.6.20版本,功能非常强大,但是,体积也变的异常庞大。因此,必须针对PC/104目标板的硬件配置进行裁减。

根据目标板PXA270的资源配置,采用make menuconfig配置内核,将有关CPU、内存管理、JFFS2文件系统支持、串口支持、网口支持编译进内核,将音频、触摸屏接口、LVDS接口作为模块编译,需要时动态载入,这样编译下来的内核只有300KB左右,大大减小了内核的体积,减轻了目标板有限的存储空间和内存的压力。

编译并生成镜像命令如下:

1)#tar jxvf my-linux-2.6.10..tar.bz2

2)#ln –s linux-2.6.10 linux

3)#cd linux

4)#make clean

5)#make dep

6)#make bzImage

3.5 文件系统的选择和建立

根据文件系统的特性[5]和PC/104目标板的硬件环境,选择JFFS2作为PC/104目标板的文件系统。JFFS2文件系统具有垃圾回收功能维护空间,并且它的元数据的结构允许文件系统的写入操作,故可提供对使用Flash系统而言非常重要的断电可靠性和损耗平衡特性,能应对PC104工作时的突发事件,避免系统由于突发事件造成崩溃,从而提高系统的安全性。

商用发行版Red Hat的文件系统内容来自GNU,体积庞大,不适合做嵌入式系统的文件系统,而Busybox是小型嵌入式系统常用的一个套件,它可以根据配置执行ash shell的基本功能,以及几十个小应用程序的功能,而大小只有300K左右,是目前嵌入式领域最活跃的系统应用套件。故本文使用Busybox系统套件。

将全部的文件系统移植到目标板之前,需要用mkfs.jffs2工具打包。具体移植操作如下:

1)    解压根文件系统,生成root目录。

#tar jxf up-netpxa270_fs.tar.bz2

2)    解压busybox

#cd up-techpxa270/kernel/02_root

#tar zxf busybox-1.00-pre9.tar.gz

#cd busybox-1.00-pre9

3)    配置安装busybox

#make menucongfig

4)    生成JFFS2文件系统

#/mkfs.jffs2 -r root -o rootfs.img -e 0x20000 --pad=0xd00000

移植好文件系统后,便可以通过U-boot引导,并挂载该文件系统根分区启动Linux。

4 系统测试

开发的基于Xscale的PC/104 Linux系统硬件如图1所示。室温25℃,通风良好条件下,经测试,系统能够启动并稳定运行(如图2),通过PING命令测试表明,系统能够与外网连通(如图3),且工作稳定,系统构建成功。

图1 PC/104开发板[page]

图2 系统启动界面

图3 PING命令测试结果

5 结论

以博创公司的UP-PXA270 PC/104 CPU模块作为构建Linux的目标硬件平台,采用商用版Redhat-Linux9.0建立交叉编译环境;利用U-BOOT进行Boot Loader移植,用make menuconfig配置内核;将音频、触摸屏接口、LVDS接口作为模块编译,以减小内核的体积;并根据文件系统的特性,使用Busybox系统套件进行文件系统移植。测试结果表明,本文构建的基于Xscale处理器的PC/104Linux系统能够正常启动并与外网稳定通讯,为PC/104在工业控制领域的广泛应用提供了新的途径,提出的移植方法具有普遍的借鉴价值。

今后,需要在此基础上,研究并实现易于使用、界面友好的图形用户接口,提高系统的人机交互性和操作便捷性。

本文作者创新观点:首次提出以Xscale处理器架构的PC/104板作为Linux系统的移植目标平台并进行系统构建。

参考文献

[1] 包乃兰,宁立革,林涛,郭计策.一种嵌入式系统控制方案的研究[J].微计算机信息,2005,9-2:62-64

[2] 王田苗. 嵌入式系统设计与实例开发[M].北京:清华大学出版社,2003.

[3] 邹淼,包启亮.PC/104下嵌入式Linux操作系统优化方案[J].光电工程,2004,12(31):152-155

[4] 蔡勇,战兴群,张炎华等. 基于嵌入式Linux的“北斗一号”卫星导航系统软件设计[J].中国惯性技术学报,2005(13):54-58

[5] Karim Yaghbmour. 构建嵌入式LINUX系统[M]. 北京:中国电力出版社,2006.

关键字:PC104  Linux  Xscale  移植 引用地址:基于Xscale的PC/104 Linux系统构建

上一篇:T-Kernel在Blackfin处理器上的移植分析
下一篇:嵌入式流媒体携带式系统的设计及改进

推荐阅读最新更新时间:2024-05-02 21:58

OK6410A 开发板 (八) 29 linux-5.11 OK6410A 主要内核线程解析
kthreadd这篇博客简述了 一下 系统内创建的 所有内核线程 // 进程 1 2 的 父进程为 0 // 其他所有内核线程(被 包括的) 父进程都是 kthreadd 进程ID 所属用户 状态 COMMAND进程名 进程创建文件 进程创建函数 // 1号用户进程 1 root 1412 S {linuxrc} init //init/main.c kernel_thread // 1号用户进程 // 2号内核进程 2 root 0 SW // init/main.c kernel_thread // 2号内核线程,负责 创建所有的内核线程 //
[单片机]
U-Boot移植(9)u-boot主要的数据结构
u-boot的主要功能是用于引导OS的,但是本身也提供许多强大的功能,可以通过输入命令行来完成许多操作。所以它本身也是一个很完备的系统。u-boot的大部分操作都是围绕它自身的数据结构,这些数据结构是通用的,但是不同的板子初始化这些数据就不一样了。所以u-boot的通用代码是依赖于这些重要的数据结构的。这里说的数据结构其实就是一些全局变量。  1)gd 全局数据变量指针,它保存了u-boot运行需要的全局数据,类型定义:  typedef struct global_data { bd_t *bd; //board data pointor板子数据指针 unsigned long flags;  /
[单片机]
米尔i.MX28开发板上市 携Linux和WinCE系统
近日,ARM工业控制企业米尔科技推出基于飞思卡尔芯片开发板:MYD-IMX28X开发板。该款开发板含MYD-IMX283和MYD-IMX287两个型号,分别基于飞思卡尔i.MX283和i.MX287芯片,整板采用工业级配置,耐温可从-40到+85度。 图1 MYD-IMX28X开发板支持Linux和WinCE两大系统,并且米尔科技已经移植好了所有外围设备的驱动程序。其中Linux系统上层采用QT界面,同时携带部分简单的测试例程,入手即可上手。 i.MX28系列芯片 飞思卡尔i.MX28系列芯片包含i.MX280、i.MX281、i.MX283、i.MX285、i.MX286和i.MX287共6款芯片,都
[嵌入式]
米尔i.MX28开发板上市 携<font color='red'>Linux</font>和WinCE系统
Cavium5000万美金收购MontaVista
  新兴的网络芯片厂商Cavium收购了首家商业嵌入式Linux公司MonteVista,根据Cavium官方报道,C公司将同意支付5000万美金给MontaVista公司。这是今年第二例嵌入式LinuxOS收购案例。第一家是今年三月份,Intel公司以88400万美金收购风河系统公司。此次Cavium收购MonteVista后,将增强Cavium公司在嵌入式领域的领导地位,MonteVista公司表示,将继续保留公司的品牌,以及独立运行开展业务。 cavium公司   Cavium Networks公司是全球领先的MIPS多内核处理器提供商,处理器广泛应用于网络、无线、存储和控制应用等领域的安全产品。Cavium是 Cisc
[嵌入式]
基于ARM和Linux的路径记忆循迹小车
引言 智能车是近年来发展起来的一门新兴的综合技术,在军事领域得到了广泛应用,而且在生产和生活中的应用也日趋普遍 。 目前智能小车的自主移动方式有两种:循迹和避障。一般的循迹功能可以通过算法使其能精确地在黑线上行驶,但是由于一些室内环境的因素,要实施黑线的布置并不符合实际要求 。一般的避障功能仅仅是通过探测前方障碍物而进行躲避,通过算法可以完成从出发点到定点的行驶 ,但是算法运算量大且放在不同的环境,就需要更改程序,这对实际应用带来很大的不便。 基于这种背景,设计了一种利用超声波测距避障功能以及Linux文件系统的路径记忆循迹智能小车,通过人为地设置障碍物来规划小车的行走路线,并将路线记录入库。小车只需读取库中的数据即可
[单片机]
基于ARM和<font color='red'>Linux</font>的路径记忆循迹小车
u-boot-在2440上的移植详解(一)
一、移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器: arm-linux-gcc-4.3.2.tgz u-boot: u-boot-2009.08.tar.bz2 二、移植步骤 本次移植的功能特点包括: 支持Nand Flash读写 支持从Nor/Nand Flash启动 支持CS8900或者DM9000网卡 支持Yaffs文件系统 支持USB下载(还未实现) 1. 了解u-boot主要的目录结构和启动流程,如下图。 u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他
[单片机]
u-boot-在2440上的<font color='red'>移植</font>详解(一)
s3c6410的RTC在linux中的驱动(1)
如果对RTC硬件不熟悉的话,可以看上面这篇博客,讲述了硬件有关的内容。 1、先从整体上做些分析,大致看了下linux2.6.28driversrtc文件中的kconfig和Makefile文件,在Makefile文件中有如下内容: ifeq ($(CONFIG_RTC_DEBUG),y) EXTRA_CFLAGS += -DDEBUG endif obj-$(CONFIG_RTC_LIB) += rtc-lib.o obj-$(CONFIG_RTC_HCTOSYS) += hctosys.o obj-$(CONFIG_RTC_CLASS) += rtc-core.o rtc-core-y := class.o inte
[单片机]
s3c6410的RTC在<font color='red'>linux</font>中的驱动(1)
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved