基于ARM的Linux系统移植的方法

发布者:温馨时光最新更新时间:2018-02-09 来源: eefocus关键字:ARM  Linux  系统移植 手机看文章 扫描二维码
随时随地手机看文章

    Linux具有源代码开放、效率高、可裁剪等优点,在嵌入式系统的开发中具有广泛的应用。文章介绍了嵌入式Linux操作系统、移植目标平台SBC2410及Linux内核源代码的目录结构,分析了Linux移植到SBC2410平台的实现过程,阐述了Linux内核、u-boot的裁剪和编译以及根文件系统的制作过程,最后在SBC2410平台上成功移植了嵌入式Linux系统。


    嵌入式系统是一个专用的计算机系统。该系统以计算机技术为基础,软硬件可裁减,但对功能、可靠性、成本等都有严格的要求。今天,一些专用系统需要处理大量的信息,由于传统的计算机系统很难实现硬件可裁减,因而已经不能满足专用系统的需要。伴随着我国汽车、家电等产业的快速发展,嵌入式系统的应用与开发已成为目前IT产业的一个新的热点。基于ARM的嵌入式系统的开发,首先要解决的问题是嵌入式操作系统的移植。Linux操作系统作为一种源代码开放、同时可支持多种处理器结构的多任务操作系统,具有内核小、易裁剪、可移植性好等优点,是目前嵌入式系统应用与开发的主流操作系统。本文主要研究在ARM9平台上搭建嵌入式Linux系统的实现方法。

    1 嵌入式Linux操作系统及特点

    目前,在嵌入式系统开发中,52%的项目选择Linux作为嵌入式操作系统,这与Linux自身的优良特性有不可分割的关系。

    Linux操作系统内核源代码开放,并具有丰富的软件资源。不同的应用领域可以根据需要对内核进行修改,每一种通用程序在Linux都能找到。在Linux上开发程序不需要从头做起,可以选择一个类似的软件进行二次开发,因而能够低成本地开发出满足自己需要的嵌入式系统。

    另外,Linux系统能支持多种硬件设备,而且驱动丰富,能支持多种主流硬件设备和最新硬件技术。随着Linux的广泛应用,许多芯片生产厂家也已经开始为Linux提供驱动,这为Linux在各种硬件平台上的应用奠定了基础。

    Linux可支持多种体系结构,具有较好的可移植性。目前,Linux已经移植到绝大多数硬件平台上,能够支持ARM、MIPS、LPHA、SPARC等多种体系,Linux支持几乎所有流行的CPU。Linux具备一整套工具链,容易建立嵌入式系统的开发环境和交叉运行环境,可跨越嵌入式系统开发中仿真工具的障碍。由于其符合IEEE POSIX.1标准,因而应用程序具有较好的可移植性。

    Linux具有完善的网络通信和文件管理机制。实际上,Linux从一开始就与网络密不可分,网络是Linux的最为显着的特征。Linux具有ARM9上的嵌入式Linux系统移植的特性,从而保证了它支持所有标准因特网协议,可以利用Linux的网络协议栈开发嵌入式TCP/IP网络协议栈。同时,Linux支持ext2、fat16、fat32、romfs等文件系统,从而为嵌入式系统应用开发打下了很好的基础。

    2 Linux在ARM平台上的移植

    2.1 SBC2410硬件平台介绍

    SBC2410硬件平台是具有基于ARM9处理器SBC2410A,可支持ARM—Linux、WindowsCE等操作系统的嵌入式硬件平台。主要硬件资源有一片64 MB SDRAM,一片64 MBNandFlash,一片1 MB Nor Flash,一个串口COM0,一个USB Host A型接口,一个USB Slave B型接口,以及一个标准的JTAG接口等。

    2.2 Linux在ARM平台上的移植准备

    首先是要建立交叉编译环境。交叉编译环境是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要包括编译器gCC二进制工具binutils,目标系统的标准c库glibc和目标系统的Linux内核头文件。宿主机要选好做嵌入式开发的Linux操作系统,配置好网络、NFS服务等。因为目标机没有足够的资源运行开发工具和调试工具,所以要在宿主机上建立交叉编译环境,然后由交叉编译工具生成可执行二进制代码(并不能在宿主机上运行),再下载到目标板上调试和运行。交叉编译标准c环境的生成步骤包括以下四步:

    (1)获得binutils、gcc、glibc的源码;

    (2)配置编译binutils,得到汇编器和连接器;

    (3)配置编译gcc源码,生成gcc编译器;

    (4)配置glibc编译生成glibc的c库函数。

    2.3 引导程序移植bootloader

    引导程序bootloader是与体系结构紧密相关的部分,是操作系统内核和应用程序运行之前运行的一小段程序,用于完成系统的启动和加载。它类似于PC机中的BIOS程序。bootloade严重依赖于硬件实现,一般在嵌入式系统中建立一个通用的bootloader是不可能的。用户必须自己编写这一小段程序,从而完成硬件设备的初始化,建立内存空间的映射图,将系统的软硬件带到一个合适的状态,为操作系统内核的运行做准备。

    通常bootloader移植分为两步:

    第一步常用汇编语言实现依赖于CPU体系结构的代码。主要包括硬件设备初始化;为加载bootloader准备RAM空间;拷贝bootloader到RAM空间中;设置好堆栈。

    第二步常用C语言来实现。即:初始化本阶段要使用到的硬件设备;检测系统内存映射(memory map);将kernel映像和根文件系统映像从flash上读到ram空间中;为内核设置启动参数;调用内核。图1所示是bootloader的工作流程图。

a.JPG

    2.4 内核移植

    内核移植首先应当启动操作系统,完成内存管理、任务调度、进程管理、加载驱动程序、网络等功能,然后执行应用程序或等待用户命令。虽然各功能之间存在复杂的调度关系,但由于Linux分层结构的特点,已将其中硬件相关的代码独立了出来,因此,移植过程中只需要改动进程管理、内存管理和设备管理中与硬件相关的那部分代码。

    一般情况下,从官方网站上下载的内核不能直接在硬件平台上运行,而要跟据具体的硬件平台重新裁剪、编译内核,并根据硬件平台特性编写相应的硬件相关的代码,将Linux移植到硬件平台。对内核代码的修改包括以下部分:

    (1)修改内核目录树根下的Makefile,找到ARCH和CROSS_COMPILE,修改ARCH=arm,CROSS_COMPILE=armlinux,然后设置PATH环境变量,在文件bashrc中添加expor PATH=/usr/LOCal/arm/3.4.4/bin:$PATH,使其可以找到交叉编译工具链,然后重新登陆。

    (2)设置flash分区,修改arch/arm/machSBC2410/devs.c用以指明分区信息,该文件的内容建立nand flash分区表;修改arch/arm /machSBC2410/machSMDk2410.c文件指定启动时初始化,并在kernel启动时依据对分区的设置进行初始配置。在Linux源文件目录下,执行makemenuconfig命令,配置内核产生config文件,选择处理器类型为SBC2410,选择串口驱动设备,完成后保存config文件。

    在完成内核的裁减之后,执行命令make clean,编译内核之前先把环境给清理干净,也可以用makerealclean或makemrproper来彻底清除相关依赖,保证没有不正确的文件存在,最后将zimage下载到开发板。

    3 结语

    经过移植,Uboot和Linux在SBC2410平台就能运行,在此基础上,还可以进一步开发各类驱动程序及应用软件。用串口线将SBC2410和PC机相连,通过超级终端可以看到移植成功。系统成功启动后,就可以进入根文件系统。本文通过分析Linux的特点和移植方法,总结出了一种基于ARM的Linux系统移植的方法,并实现了Linux系统内核在SBC2410处理器平台上的移植。


关键字:ARM  Linux  系统移植 引用地址:基于ARM的Linux系统移植的方法

上一篇:如何将μClinux移植到ARM7体系微处理器S3C4510B上
下一篇:基于μCOS-II的CAN通讯模块设计

推荐阅读最新更新时间:2024-03-16 15:54

德州仪器推出采用ARM Cortex-A8 的微处理器单元
日前,德州仪器 (TI) 宣布推出两款采用 1GHz ARM Cortex-A8 的 Sitara 微处理器单元 (MPU) AM3715 与 AM3703,其更快的系统响应时间与启动时间以及更长的电池使用寿命可为开发人员提供极大的便利。这些 MPU 可满足各种应用需求,如便携式数据终端、便携式医疗设备、家庭与楼宇自动化、导航系统、智能显示屏以及人机接口 (HMI) 工业应用等。AM3703 适用于不需要图形功能的应用。AM3715 可提供比前代 Sitara 器件高 2 倍的图形性能,支持流畅复杂的 3D 渲染、完美的视觉效果以及增强型图形用户界面 (GUI) 等功能。AM3715 与 AM3703 均可将 ARM 性能提
[嵌入式]
德州仪器推出采用<font color='red'>ARM</font> Cortex-A8 的微处理器单元
嵌入式Linux的SOHO路由器电路设计
  针对目前SOHO 路由器设计方案难以满足高速接入网用户要求和存在系统稳定性方面的不足,以嵌入式Linux 操作系统为基础,提出一种新的SOHO(Small Office and Home Office)路由器设计方案,有效地提高了系统的稳定性和安全性。   利用Linux 内核支持IP Masquerade技术实现NAT 转换,实现多台主机共享访问因特网。IP Masquerade 工作原理:客户机将实现IP Masquerade 的Linux 机器设置为缺省网关,当IP Masquerade 的Linux 机器收到客户机的数据包时,对其进行改写,将源地址替换为自己的IP 地址,将源端口号换成一个新的端口号,并且对该过程进行记
[电源管理]
嵌入式<font color='red'>Linux</font>的SOHO路由器电路设计
arm汇编指令--STR
STR指令的格式为: STR{条件} 源寄存器, 存储器地址 STR指令用亍从源寄存器中将一个32位的字数据传送到存储器中。该指令在程序设计中比较常 用,丏寻址方式灵活多样,使用方式可参考指令LDR。 指令示例: STR R0, ,#8 ;将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1。 STR R0, ;将R0中的字数据写入以R1+8为地址的存储器中。 str r1, ;将r1寄存器的值,传送到地址值为r0的(存储器)内存中
[单片机]
ARM LPC2103定时器中断方式寄存器设置
定时器查询方式定时器初始化: 1、设置定时器分频数,为(x+1)分频 2、匹配通道X中断并复位TxTC 3、比较值(1S定时值) 4、启动并复位TxTC 如: T1PR = 99; // 设置定时器0分频为100分频,得110592Hz T1MCR = 0x03; // 匹配通道0匹配中断并复位T0TC T1MR0 = 110592/2; // 比较值(1S定时值) T1TCR = 0x03; // 启动并复位T0TC T1TCR = 0x01; 研究了好长一段时间,LPC210X的定时器,查询方式定时很简单如上面,但中断方式要操作好多寄存器,太麻烦,一直是一头雾水。好不容易理出了思路,现将一段例程粘贴备忘。 #include
[单片机]
基于嵌入式Linux的智能手机系统设计
摘要:介绍以MotorolaMX1作为中央处理器、Wavecom公司的Q2403A作为无线收发模块、嵌入式Linux作为操作系统的智能手机系统的设计与实现。该设计可以实现GSM语音通信、GPRS上网及PDA相关应用软件等功能,具有结构清晰、易于开发等优点。 关键词:Linux 嵌入式系统 智能手机 随着手持通信设备市场的快速发展,手机的功能逐渐增多。现在手机已经不只是用于语音通信的手持设备,而成为集成了短信、彩信、上网以及移动办公等附加功能的嵌入式通信平台。集成了这些功能的手机被称为智能手机。近年,嵌入式处理器的运行速度和功能都有了很大的提高,使得许多以前只能在PC上实现的应用,现在都可以在手持设备上实现。目前,市面上的智能
[嵌入式]
ARM裸机】 - 中断与异常
中断与异常 这节重点理解,对于一个CPU,如S3C2440,它的中断控制器所起的硬件作用,即当中断触发时,硬件本身会强迫CPU到异常向量表的地址处执行其中一条,这是硬件强行完成的跳转操作;之后跳转到中断处理程序,此部分由程序员来实现,一般需要做:1、保护现场 2、执行处理程序 3、回复现场。 理解中断带来的好处,节省了CPU资源,是操作系统中的基础。 ARM的7中工作模式 ARM的2种状态:ARM指令集与Thumb指令集的区别 1、中断控制器 一个事件的处理往往有两种方式: 中断方式 轮询方式 轮询方式比较简单,在死循环中没隔一定时间,进行一次判断事件是否发生,比较耗费资源。 中断方式相对复杂一点,但是节省资源
[单片机]
【<font color='red'>ARM</font>裸机】 - 中断与异常
一文详解Arm Cortex-M处理器指令集
Arm处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单,具有32位Arm指令集和16位Thumb指令集,Arm指令集效率高,但是代码密度低,而Thumb指令集具有更好的代码密度,却仍然保持Arm的大多数性能上的优势,它是Arm指令集的子集。所有Arm指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。Arm程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。 Cortex-M0处理器基于ARMv6-M架构,是一款功耗和性能较为均衡的处理器。Cortex-M0只支持56条指令的小指令集,其中大部分指令是16位指令。 Arm Cortex-M 指令集对比:
[单片机]
Actel为嵌入ARM7功能的FPGA推出开发工具套装
Actel公司宣布推出CoreMP7开发工具套装,这是完整的软、硬件开发环境,针对该公司CoreMP7软ARM7处理器内核的执行而设。CoreMP7开发工具套装包含屡获殊荣的CoreMP7、具Actel ARM7功能的M7 ProASIC3器件和FPGA开发工具,为用户提供了一切所需工具,可以快速和简便地评估及设计以FPGA为基础的系统级芯片 (SoC) 应用。 Actel IP市务经理Mike Thompson称:“CoreMP7开发工具充分发挥了FPGA的灵活性结合快速推向市场和业界标准ARM7处理器技术的优势,简化了复杂SoC芯片的评估和开发工作。这套开发工具是一个完善的开发环境,包含构件组装、行为仿真、电路综合、布局、编
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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