基于PXA255的ARM Linux操作系统移植

PXA255芯片资料(中英文) INTEL PXA255中英文资料,描述管脚及功能框图。 立即下载
1.引言

      ARM处理器是当今应用最为广泛的处理器芯片,它功耗小、成本低、性能优越,在消费电子类产品中占据主导地位。Linux操作系统近年来Linux移植/ARM在嵌入式领域中发展很快,由于其强大的性能和开源免费的特点,越来越受到嵌入式系统开发商的青睐,信息家电、网络设备、手持终端等都是嵌入式Linux应用的广大市场。

      在Linux移植/ARM嵌入式开发中,把操作系统移植到开发板是进行嵌入式应用开发的前提和基础。ARM Linux是针对ARM体系结构的嵌入式Linux操作系统。本文主要阐述了将ARM Linux系统移植到基于PXA255处理器的Linux移植/ARM开发板CSB226上的方法和关键技术。

      2.软硬件平台环境

      2.1.硬件平台

      (1)PXA255处理器

      Intel PXA255是基于XScale微架构的一款嵌入式应用处理器,它在XScale结构的基础上集成了众多的外设接口,如:PCMCIA控制器、LCD控制器、多媒体Linux移植/ARM通信口等,是专为高性能、低功耗的便携式手持设备而开发的。CSB226是基于PXA255处理器而设计的一款Linux移植/ARM开发板,本文的移植工作就是在此开发板上进行的。CSB226还配置有许多外设,包括:64MB SDRAM内存、32MB Flash、CS8900A以太网控制器、CF接口等。

      CSB226开发板系统结构框图

      如图1所示。

图1 CSB226开发板系统结构框图

      (2)硬件环境搭建

      嵌入式Linux移植/ARM开发通常采用宿主机—目标机的主从开发模式[3]。宿主机指开发主机,由一台通用PC机或工作站构成;目标机即指嵌入式设备,在本文中是CSB226开发板。硬件的连线图如图2所示,开发板和宿主机之间通过串口、以太网或JTAG口等进行通信,采用“交叉”开发Linux移植/ARM方式。本文采用硬件仿真工具BDI2000进行软件的调试,仿真器一端通过JTAG口与目标机相连,另一端用网线与宿主机相连。

图2 主机和目标机的连线图

      2.2.软件环境

      本文Linux移植/ARM开发主机采用RedHat9.0操作系统。首先需要对开发主机和目标机做一些设置,然后搭建交叉编译和调试环境,具体步骤如下:

      在开发主机上需要做以下设置:

      (1)启动NFS服务,为目标机使用NFS文件系统做准备;

      (2)安装TFTP服务器,为目标机从主机上下载文件提供服务;

      (3)启动Telnet服务;

      (4)安装Minicom工具,它是Linux环境下的超级终端工具,用它与目标机进行串口通信。另外,目标机上需要设置IP地址,与开发主机设置Linux移植/ARM在同一网段。

      对于交叉编译环境,使用最广泛的ARM Linux交叉工具链为arm-linux-toolchain,由bin、include、lib三部分组成。调试环境的搭建使用GNU/GDB调试工具,安装后生成ARM平台的交叉调试工具arm-linux-gdb。

      3. 基于PXA255的ARM Linux移植关键技术

      3.1.内核定制

      Linux内核和文件系统是嵌入式Linux的两个核心部分。首先进行内核的编译,在开发主机上配置编译ARM Linux内核,生成一个针对CSB226平台的Linux内核映像zImage。

      本文使用2.4.19版本的标准内核,编译内核的步骤如下:(1)准备Linux内核源代码linux-2.4.19.tar和平台相关的系列补丁:patch-2.4.19-rmk7.gz、diff-2.4.19-rmk7-pxa2.gz、linux-2.4.19-rmk7-pxa2-ptx14.diff。(2)解压源码包并按顺序打上几个补丁,再对内核源码的配置文件作适当的修改,然后用make dep,make zImage命令进行编译,如果编译成功会在Linux源码arch/arm/boot目录下生成内核映像文件zImage。

      在内核Linux移植/ARM成功编译之前,关键是对内核源码做适当的修改,以适应特定的开发平台。

      本文中对源码的修改有如下几点:

      (1)将Makefile文件中的编译器Linux移植/ARM改为交叉编译器arm-linux-gcc,体系结构改为ARM。

      (2)本文中使用NFS方式挂载文件系统,因此,需要在CSB226的默认配制文件linux/arch/arm/def-configs/csb226中设置配置命令行的属性:CONFIG_CMDLINE ="root=/dev/nfs rw nfsroot=10.0.0.1:/home/busybox ip=10.0.0.2 mem=64M console=tty0 console=ttyS0,38400",其中“root=/dev/nfs”指定设备文件,“10.0.0.1:/home/busybox”是文件系统所在开发主机的IP地址和目录位置,10.0.0.2是目标机的IP地址。主机端和目标机的串口通信波特率要一致,本项目中是38400。

      (3)在源码linux/arch/arm/tools/目录下的mach-types文件中添加CSB226的宏定义和机器号,CSB226的机器号是216,这个整数是唯一的,在启动初始化的时候会把它赋给微处理器的R1寄存器。

      (4)用make menuconfig命令对默认配置做一些调整,比如添加外设、网络协议和文件格式等选项。

      成功生成映像文件zImage后,就可以下载到目标机运行了,但只有这个内核还无法与系统交互,还需要一个文件系统。

      3.2.文件系统

      (1)嵌入式Linux移植/ARM文件系统制作

      本文采用Busybox工具包组建嵌入式文件系统。直接配置编译Busybox就可以创建/bin、/sbin、/usr等目录,其中包含了大部分常用的命令,但Busybox并不提供与登录相关的命令如:login、getty、passwd等,这需要用Tinylogin软件包生成。/lib目录的动态库文件可以用Glibc生成。/dev目录下是系统所用的设备节点,只需要根据当前平台对外设的支持情况逐个地添加即可。/etc目录是系统配置文件和子目录,比如启动配置、网络配置等,需要针对特定应用启动相应的服务和进程。

      (2)文件系统的挂载

      创建Linux移植/ARM好文件系统的目录结构后,还需要将目录制作成某种格式的文件系统,挂载到Linux内核下使用。常用的挂载方式有Ramdisk、JFFS2、NFS,其中NFS(Network File System)是网络文件系统,它的优点是可以从主机上直接修改文件系统,方便开发。本文使用NFS的挂载方式,将根文件系统是放在开发主机上,开发主机提供网络共享服务,目标机在启动时通过NFS方式挂载根文件系统。

      3.3.设备驱动移植

      将Linux内核移植到CSB226开发板上后,还需要Linux移植/ARM移植常用外设的驱动程序,如:LCD液晶屏、鼠标、键盘、CF卡等。下面重点阐述LCD液晶屏和CF卡的移植过程。

      (1)LCD液晶屏的驱动移植

      Linux中的Framebuffer帧缓冲驱动分为三层[4],中间层及上层是设备无关的软件层,底层是与硬件相关的帧缓冲驱动,因此,LCD驱动移植主要是驱动帧缓冲硬件设备,在本文中对应于CSB226平台上的LCD控制器和其外接的TFT LCD显示器。

      基于PXA255微处理器的不同平台的差异主要在于外接的LCD显示屏硬件的差异,因此对于不同平台的帧缓冲驱动程序的差别主要是在LCD控制寄存器中显示屏规格参数的设置上有不同。LCD寄存器中的初始规格参数是在头文件drivers/video/pxafb.h的宏定义中设置的,因此对于不同的硬件平台只要更改硬件的规格参数即可。这些参数是在初始化函数pxafb_init()中进行配置的。

      (2)CF卡的驱动移植

      CF(Compact Flash)接口是一种标准的扩展接口,主要用于扩展存储空间,如本文使用的128M CF存储卡,也可以外接其他设备,如CF接口的modem、无线网卡等。

      在Linux系统下,由于CF卡与PCMCIA设备控制器兼容,通常把CF卡当作PC Card设备进行驱动和管理。PCMCIA的插槽驱动和PC卡驱动与硬件直接相关,是驱动移植中需要重新实现的部分。CF存储卡的驱动可以直接使用标准的ATA/IDE设备驱动ide-cs模块,因此在CSB226平台上驱动CF存储卡,只需要编写PCMCIA控制器的驱动。

      PXA225片上的PCMCIA控制器驱动的初始化函数为pxa_pcmcia_driver_init(),它调用底层PCMCIA接口函数初始化具体平台上的插槽接口设备。这些底层函数是板级驱动与插槽驱动之间的标准接口,定义在结构体struct pcmcia_low_level中。CF卡驱动移植的主要工作就是实现pcmcia_low_level结构体中底层平台相关的5个接口函数。

      pcmcia_low_level数据结构如下:

      struct pcmcia_low_level {

int (*init)(struct pcmcia_init *);

int (*shutdown)(void);

int (*socket_state)(struct pcmcia_state_array *);

int (*get_irq_info)(struct pcmcia_irq_info *);

int (*configure_socket)(unsigned int, socket_state_t *);

};

      init函数,主要完成三个工作:执行平台相关的初始化任务;设置所需要中断信号的方向和边缘触发方式;注册设备发现中断与对应的中断处理函数。

      shutdown函数,在卸载驱动时使用,用来释放所申请的资源。

      socket_state函数,设置插槽的初始化状态信息,完成对输入参数所包含的数据结构struct pcmcia_state赋值,需要根据实际插槽的状态信息正确设置此数据结构。

      get_irq_info函数,用来获得每个插槽接口设备上的Ready中断信号。

      configure_socket函数,由上层驱动调用,用来动态改变插槽的状态,比如工作电压VCC、可编程电压VPP等。

      将PCMCIA驱动程序成功编译进内核后,还需要使用卡管理工具cardmgr监测CF卡设备,当CF存储卡插入到CSB226开发板的插槽时,cardmgr会发现该设备并完成设备的加载。

      4.应用实例

      在CSB226开发板上成功移植了ARM Linux后,可以进行多种应用开发,如:电子地图查询系统,娱乐游戏机等。本文在CSB226开发板上插入一块基于Prism2芯片组的CF接口的无线网卡,由于已经成功驱动了CF接口,所以只需要将无线接入点程序Host AP编译到ARM Linux内核中,再使用网桥工具将CSB226开发板自身的10MBit以太网和无线网络桥接起来,这个开发板就可以作为一台无线接入点工作了。

      5.结论

      Linux操作系统在嵌入式设备中应用越来越广泛。本文针对基于PXA255处理器的开发板进行了系统移植,阐述了移植中的关键技术,如:内核的修改、文件系统建立、设备驱动的移植,最后在开发板上实现了无线接入点。本文的移植过程对于其他类型微处理器上Linux的移植也具有参考价值 

pxa255_GPS pxa255嵌入式设计,及6层PCB设计, 立即下载

相关推荐

intel pxa255 处理器开发应用手册嵌入式.zip

intel pxa255 处理器开发应用手册嵌入式.zip

arm体系

首先,ARM是一家英国的半导体公司。它发明了一种RISC处理器的体系结构(包括寄存器、寻址方式、指令集这些要素),但ARM公司本身不生产太多的处理器产品,而只是把这些体系结构的核心设计授权给其他设计CPU的公司使用并收取专利费,就像Qualcomm靠卖通信标准的专利赚钱一样。AR

wuhengwudi的专栏 929

二叉树的操作之统计二叉树中节点的个数

一,问题描述 给定一颗二叉树,已知其根结点。 ①计算二叉树所有结点的个数 ②计算二叉树中叶子结点的个数 ③计算二叉树中满节点(度为2)的个数   二,算法分析 找出各个问题的基准条件,然后采用递归的方式实现。 ①计算二叉树所有结点的个数 1)当树为空时,结点个数为0,否则为根节点个数 加上 根的左子树中节点个数 再加上 根的右子树中节点的个数 借助遍历二叉树的思路,每访问一个结...

weixin_34200628的博客 4568

开发板硬件XSBase255(XScale PXA255 Evaluation Board)

硬件清单:处理器:Intel XScale PXA255 400MHz SDRAM:samsung 64MbyteFlash:Intel strata flash 32Mbyte以太网:CS8900A声卡:AC’97 stereo audio显示:LG TFT LCD 6.4 (

Damon的专栏 963

Delphi 12社区版免费了!手把手教你搭建跨平台开发环境(Windows/macOS/Android/iOS)

本文详细介绍了如何利用新发布的Delphi 12社区版,免费搭建支持Windows、macOS、Android和iOS的跨平台开发环境。内容涵盖从环境准备、安装、配置各平台SDK(包括Android与macOS/iOS的PAServer连接),到创建首个FireMonkey跨平台应用、集成数据库以及调试部署的完整实战流程,帮助开发者零成本启动高效开发。

butter的博客 979

Rsoft仿真实战:长周期光纤光栅参数优化与模式耦合分析

本文详细介绍了使用Rsoft软件进行长周期光纤光栅(LPFG)参数优化与模式耦合分析的实战方法。通过Rsoft仿真,可以高效优化光栅周期、包层厚度等关键参数,深入分析纤芯模与包层模的耦合特性,为光纤通信和传感应用提供可靠的设计依据。

h0i1j2k3l的博客 1115

Xscale PXA255处理器与CF卡的接口设计

Xscale PXA255处理器与CF卡的接口设计 以导航设备存储系统应用为例,本文讨论了Intel Xscale PXA255嵌入式处理器与CF卡的硬件接口设计,并以读写CF卡扇区的程序为例,给出了CF卡软件编写的技巧。该设计为基于PXA255处理器的嵌入式系统提供了扩展存储空间的一种方法。 图1:CF卡结构框图。 Intel Xscale PXA255处理器是新一代的嵌入式处理器,基...

weixin_34198583的博客 283

Docker启动安装nacos(详情讲解,全网最细)

docker安装nacos保姆级教程

ilvjiale的博客 8万+

基于Intel PXA255平台的网络摄像机设计

 

Bekars涡轮增压的Blog ^_^ 2222

SAP_SD模块更改销售订单定价简介

方式优点缺点适用场景MASS简单,无需开发不能触发重新定价逻辑修改特定字段BDC (VA02)可模拟人工操作维护复杂,速度慢少量订单批改稳定、安全需ABAP支持推荐用于批量重新定价VBOF标准重算返利仅适返利类条件返利更新通过本文,我们了解了 SAP 的[SAP_SD模块更改销售订单定价]的基本概念和应用方法。希望这些信息能帮助您在实际工作中更好地使用 SAP 系统,提高工作效率和管理水平。更多SAP文章请点击更多SAP文章更新,大家一起学习进步!!!

我小时候很黑的博客 716

beegfs读取文件完整流程分析

读取小于512KB文件数据,小于1s 读取15MB文件数据,花费7秒。

wfzy的博客 836

在ARM开发板上移植Linux2.6

正文在ARM开发板上移植Linux2.6声明:本文内容大多节选自一些网上的文章。ARM开发板简介PXA255处理器介绍: Intel: "For advanced devices that run the most impactful mobile applications, the Intel? PXA255 Processor is the answer. A pin-for-pin comp

Tunix126的专栏 8193

IP-Guard分类管理详解

大家都知道在配置IPGUARD策略前需要做分类库进行设置和分类。 1、应用程序:可以分类,例如上班时间只能用OFFICE和WPS,记事本等办公软件,可以在分类里设置一个类 ;办公软件,在未分类里找到OFFICE,WPS等拖入心建的分类里就可以在配置策略里调用。 2、网站分类也不一样,可以按照自己方式自定义。也可以导入厂家已经收集到的网站分类。 3、邮箱分类:可以提前定义好一个或...

IP-Guard专栏 591

构建基于PXA255的嵌入式Linux应用平台

随着电子市场的发展壮大,高性能低功耗的多媒体手提设备和无线设备越来越受到市场的欢迎,IntelXScalePXA255处理器正是针对这一情况推出的。它采用IntelXScale微结构体系框架,采用ARMV5TE的7级超流水线,可以工作在200MHz、300MHz、400MHz下,集成了许多常用的外围接口,功能强大。下面由卓跃教育为您介绍如何在IntelXScalePXA255上构建嵌入式Linux

zy_qianrushi的专栏 383

河洛理数【陈抟】每月月卦推演每日运卦

Step2:每卦中的日爻遇到二十四节气中的当日为节(月初)或气(月中)的时候,所代表的日期需要变更。正常来说,屯卦分别代表初一到初六,但是由于当月初二时立秋节,所以初爻就不能作为初一、而是要作为立秋节开始时(文中还精算到了立秋是从初二的午时开始),如下。说的代表月运的基础卦上进行当月日卦的推演方式。老样子,我们还是按照书中举得例子卦在这边进行一步步的推演,最后做总结。Step1:从月卦爻下一爻开始,自下而上,进行五个爻的爻变,新推演的每个卦代表六天,如下。假设当月月卦是即济卦,月爻在二爻,如图所示(

Daniel专栏 764

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

arm-linux cannot find -lgcc_s,交叉编译qt:cannot find -lstdc++和cannot find -lqte解决办法

前两天碰到的一个问题终于得到初步的解决:做完qt移植到pxa255的移植之后,我用交叉编译器编译了一个小小的程序,不知道怎么回事,使劲百般功夫, 总是不能够通过,总是出错,显示/usr/local/hybus-arm-linux-R1.1/arm-linux/bin/ld:cannot find lqte的错误,如下:[root@localhost hello]# makearm-linux-g+...

weixin_29483167的博客 1092

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

在ARM-Linux平台上移植SQLite

SQLite是一种嵌入式数据库。SQLite的目标是尽量简单,因此它抛弃了传统企业级数据库的种种复杂特性,只实现那些对于数据库而言非常必要的功能。尽管简单性是SQLite追求的首要目标,但是其功能和性能都非常出色。它具有这样一些特点[1]:支持ACID事务(ACID是Atomic、Consistent、Isolated、Durable的缩写);零配置,不需要任何管理性的配置过程;实现了

vrix的专栏 1364

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

在ARM-Linux平台上移植SQLite(上)

摘要:本文首先对嵌入式数据库SQLite做了简单的介绍,对移植所采用的软硬件平台作了简单的说明。然后以SQLite3为蓝本对移植过程中的细节作了详细的说明,并对移植后的SQLite3数据库进行了测试。测试结果表明,本文所采取的移植方式是有效的。 介绍如何在ARM-Linux平台上移植SQLite嵌入式数据库。SQLite是一个采用C语言开发的嵌入式数据库引擎。SQLite的最新版本是3.3.8

zjbo_123的专栏 927

嵌入式Linux移植USB网卡驱动

硬件平台:realARM 6410 操作系统:fedora kernel 2.6.33.3-85.fc13.i686.PAE 交叉编译器:arm-none-linux-gnueabi gcc version 4.3.2 WIFI 模组:磊科 NW336 芯片 realtek 8188cus

yake827的专栏 6319

Qt/Embedded GUI移植及应用程序开发

摘要:介绍了系统平台构建;重点分别从主机环境和XSbase 255嵌入式开发板两部分介绍Qt/Embedded图形界面的移植,最后结合实例阐述了如何开发基于嵌入式Linux的应用程序以及文件系统镜像的制作。     随着互联网和移动通信技术的日益成熟,两者相互渗透和融合的步伐正在加快。21世纪被誉为“移动之王”时代,与此同时,嵌入式linux在手机、PDA(个人数字助理)等手持信息设备领域的

鸟人的专栏 2564

Atmel跑Linux的arm芯片,Linux已被移植到Atmel的ATmega微控制器

Ubuntu Linux发行版已经被移植到最便宜、最便携的平台中:一个Atmel的ATmega微控制器。拥有一个20MHz的8位AVR处理器,128KB的闪存和整块16KB的SRAM,ATmega1284P并不是建立微型计算机最合乎逻辑的选择。它是在Arduino原型平台中找到的同样基础的设计:一个微控制器,设计使用它的32引脚接口与如传感器、电机和LED等外部硬件相连接。德米特里·格林伯格的设计...

weixin_33923059的博客 738

Qt/Embedded在嵌入式Linux系统中的应用(ARM)

Qt/Embedded在嵌入式Linux系统中的应用摘要:分析和讨论Qt/Embedded的主流版本3.x系列的底层实现技术;结合2.x版本系列和3.x版本系列,在两种不同的硬件平台(Intel PXA255开发系统与笔者自行设计的Motorola MC9328 MX1开发系统)上的移植过程,讨论Qt/Embedded的底层设备接口与应用移植技术。关键词:Qt/嵌入式Linux frame

wonsoft的专栏 3073

选择一个ARM CPU嵌入式操作系统 -μC/OS-II, μCLinux,还是Linux?

何小庆,麦克泰软件技术公司  摘要:从8位/16位单片机发展到以ARM CPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序,成为重要的基础组件。本文就目前国内在ARM CPU上广泛采用的三种嵌入式操作系统μC/OS-II、μCLinux和嵌入式Linux做个分析。 关键词:嵌入式操作系统,

qiup的书斋 6494

QEMU 进行ARM开发

http://wiki.embeddednirvana.org/ARM_Emulation_Using_QEMU http://elasticsheep.com/2011/01/building-and-emulating-a-basic-arm-linux-system/ http://www.embedu.org/Column/Column334.htmhttp://www.arm.com

5995
上一篇: 18位身份证号码验证算法代码
下一篇: pwdump2/samdump.c浅析与改进
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值