基于arm+uClinux的嵌入式系统的开发,移植
基于ARMLINUX的嵌入式GUI的研究和移植_纪竞舟
基于ARM LINUX的嵌入式GUI的研究和移植纪竞舟,付宇卓(上海交通大学芯片与系统研究中心,上海200030)表1上述三个GUI的比较MiniGUI Microwindows QT/EmbeddedAPI Win32风格X、Win32子集QT(C+ +)函数库大小500K 600K 1.5M可移植性好很好较好(但函数库本身的交叉编译较难)多语种支持很好好使用UNICODE,但效率较低,对中文字体支持几乎没有系统资源消耗小较小最大(C+ +实现)操作系统支持Linux Linux、ELKS、MSDOS Linux硬件平台支持X86、ARM、MIPS、PowerPC X86、ARM、MIPS、PowerPC、SPARC X86、ARM 3基于ARM Linux平台的移植3.1编译环境的建立GUI的编译通常都是在PC机上执行的,也就是说,编译器本身能够在PC机上执行,同时编译源代码生成的二进制文件必须能在目标机上执行,这类编译器通常称为交叉编译器。
对于ARM平台,我们安装了cross-arm-binutils- *.i386.rpm、cross-arm-gcc- *.i386.rpm、cross-arm-glibc-*.i386.rpm这三个包。
这些包都可以从网上免费获取,“*”通常代表版本号。
arm-binutils这个包一般包含了一些针对ARM平台的二进制工具,比如arm-strip、arm-ar等命令;arm-glibc这个包包含的是标准C的函数库的ARM的版本以及对应的头文件;arm-gcc中包含的则是生成ARM平台代码的x86上的交叉编译器。
执行rpm命令将这些包安装到PC机上,若不在系统默认搜索目录下,比如安装在/opt/cross目录下,则必须将/opt/cross/bin目录加到系统的PATH环境变量中,这样在每次编译时系统才能找得到编译器。
另外需要注意的是,编译时所用的函数库版本要与目标版上运行时所用的函数库版本一致。
ARM设计的uClinux及其应用.
ARM设计的uClinux及其应用摘要:本文讨论了基于ARM的嵌入式操作系统uClinux及其应用开发设计及实现。
在32位ARM核的微处理器S3C4510B的硬件平台上结合嵌入式实时操作uClinux.完成了系统的硬件设计uClinux的编译、移植,最后实现了应用程序的添加。
关键词:ARM;实时操作系统uClinux;S3C4510B;ARM7TDMI1嵌入式操作系统uClinux及其应用开发嵌入式软件平台由以下部分组成:系统引导程序、嵌入式操作系统内核、文件系统。
系统引导程序通常也称为BootLoad&mdas摘要:本文讨论了基于ARM的嵌入式操作系统uClinux及其应用开发设计及实现。
在32位ARM核的微处理器S3C4510B的硬件平台上结合嵌入式实时操作uClinux.完成了系统的硬件设计uClinux的编译、移植,最后实现了应用程序的添加。
关键词:ARM;实时操作系统uClinux;S3C4510B;ARM7TDMI1 嵌入式操作系统uClinux及其应用开发嵌入式软件平台由以下部分组成:系统引导程序、嵌入式操作系统内核、文件系统。
系统引导程序通常也称为BootLoad—er ,代码量虽少,但是作用非常大,相当于PC上的BOIS,负责将操作系统内核固化到Flash中和系统初始化工作.然后将系统控制权交给操作系统。
文件系统是嵌入式软件平台占用存储量最大的一部分,也是与用户开发最相关的一部分,它存储了系统配置文件、系统程序、用户应用程序和必需的驱动程序。
1.1 BootLoader程序系统引导程序BootLoader是嵌入式系统加电后执行的第一个程序,一般应写入Flash存储器中并从起始物理地址0x0开始。
在应用实际中BootLoader的功能主要有:① 将uCLinux内核和文件系统烧写到目标板中;②系统初始化;③系统的内存映射;④加载uClinux内核1.2 嵌入式操作系统uCiinuxuClinux就是Micro—Control—Linux,是针对控制领域的嵌入式linux操作系统,它是从Linux 2.0/2.4内核派生而来,沿袭了主流Linux 的绝大部分特性,适合不具备内存管理单元(MMU)的微处理器/微控制器(例如ARM7TDMI),它也是一个完全符合GNU/GPL公约的操作系统,完全开放代码。
ARM应用系统开发详解—嵌入式uClinux及应用开发
第7章嵌入式uClinux及其应用开发本章从构建一个针对S3C4510B硬件平台的嵌入式uClinux操作系统和在其上进行应用程序的开发入手,逐步讲述如何在Linux环境下编写用户应用程序的方法和步骤,并为熟悉Windows操作系统的用户介绍在这种平台之上,使用何种工具编写和编译自己的应用。
通过本章的学习,读者可以对嵌入式uClinux有一定的了解,并且掌握在Linux和Windows 下嵌入式系统应用开发的基本方法。
本章主要内容有:-嵌入式uClinux系统概况-开发工具GNU的使用-建立uClinux开发环境-在uClinux下开发应用程序7.1 嵌入式uClinux系统概况在PC机上开发应用程序的用户都会有这样的感觉,PC机有完善的操作系统并提供应用程序接口(API),开发好的应用程序可以直接在操作系统上运行。
虽然嵌入式系统的应用程序完全可以在裸板上运行,但为了使系统具有任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理和中断处理的能力,提供多任务处理,更好的分配系统资源的功能,用户就需要针对自己的硬件平台和实际应用选择适当的嵌入式操作系统(Embedded Operating System,以下简称EOS)。
本节将结合本书所谈到的硬件平台S3C4510B,介绍一种针对不带MMU的ARM微处理器的嵌入式操作系统uClinux。
uClinux是一个完全符合GNU/GPL公约的操作系统,完全开放代码,现在由Lineo公司支持维护。
uClinux的发音是“you-see-linux”,它的名字来自于希腊字母“mu”和英文大写字母“C”的结合。
“mu”代表“微小”之意,字母“C”代表“控制器”,所以从字面上就可以看出它的含义,即“微控制领域中的Linux系统”。
为了降低硬件成本及运行功耗,有一类CPU在设计中取消了内存管理单元(Memory Management Unit,以下简称MMU)功能模块。
嵌入式Linux在ARM上的移植
Linux在ARM上的移植摘要:本文是基于ARM的平台上进行嵌入式操作系统LINUX的移植,其中ARM选S3C2410。
文中首先对Linux操作系统内核进行了介绍,然后对系统引导程序(BootLoader)进行了设计,最后给出了Linux在ARM上的移植过程。
关键字:Linux、ARM、BootLoader、移植一、Linux操作系统内核Linux作为一种优秀的操作系统,近几年在嵌入式领域成为了极具潜力的嵌入式操作系统。
本文的主要内容是将Linux系统的内核移植到ARM(基于ARM9S3C2410)上。
Linux操作系统主要由内核、Shell、文件结构组成。
其中内核是系统的心脏,是运行程序和管理磁盘、打印机等硬件设备的核心程序。
(1)Linux内核结构Linux内核是整个Linux系统的灵魂,负责整个系统的内存管理、进程调度和文件管理。
Linux内核与大部分UNIX内核一样是单内核体系结构的,能够根据需要定制内核映像的尺寸,具有很大灵活性,不需要重新编译内核和引导就能检验新的内核组件,这个特性对于嵌入式而言是非常有好处的,方便用户构筑自己的个人内核。
Linux内核由5个主要的子系统组成:进程调度、内存管理、虚拟文件系统、网络接口和进程间通信。
(2)Linux内核代码组织结构本文将对LINUX进行内核移植,其内核代码分布如图所示。
下面分别对其进行说明:/arch目录包含了目前Linux支持的硬件结构,如i386、alpha、arm等的内核代码;/drivers目录包含了内核中所有的设备驱动程序;/fs目录包含了所有的文件系统的代码;/include目录包含了建立内核代码所需的大部分库文件,这个模块利用其它模块重建内核;/init目录包含了内核的初始化代码,内核从此处工作;/ipc目录包含了进程间通信代码;/kernel子目录包含了主内核代码;/mm目录包含所有独立于CPU体系结构的内存管理代码;/net目录包含了和网络相关的代码,如ipv4、ipv6等。
基于ARM的uClinux及其应用开发
此 外 对 系 统 S C G寄 存 器 也 进 行 了 相 关 的 设 置 。 YS F 如
C c e 作使 能 、写缓 冲使 能 以及 设 置 了特殊 功 能寄存 器组 的 ah 操
基指针 等 。 最后 即定 义 系统存 储器 控制 寄存 器 。
l32 -. 编 译 u ln x内核 C iu
# e n MC K d f ef L i # e n L 2 d f eMC K i
1 . 嵌 入 式 操 作 系 统 u iu 2 Ci x n u l u 就 是 Mir— o t lLn x Ci x n co C nr — iu ,是 针 对 控 制 领 域 的 嵌 入 o
式 l u 操 作 系 统 , 是 从 Ln x2024 核 派 生 而 来 , 袭 了 主 i x n 它 iu . .内 / 沿
系 统 引 导 程 序 B oL a e是 嵌 入 式 系 统 加 电 后 执 行 的 第 一 oto d r
个 程序 , 一般 应写入 Fah ls存储 器 中并从 起始 物理 地址0 0 x 开始 。 在应 用 实际 中B oL a e的 功能 主要 有 : 将 u Ln x oto dr ① C iu 内核 和 文
统配置 文件 、 系统 程序 、 户应 用程 序和必 需 的驱动 程序 。 用
11 B o L a e 程 序 . oto dr
d fn ¥ C 51 b CP ma trco k eie 3 4 0 U se lc
/木 木 球 水 木 术 水 水 术 术 木 丰 术 水 木 术 木/ 术 卓 木 术 木 木 术 木 木 水 木 木 水 木 术 木 木 木
及 其 他相 关硬 件信 息 的定 义文 件h rw r.首 先要 定义 系统 工 ad ae h
基于ARM9的LINUX操作系统移植
基于ARM9的LINUX操作系统移植ARM9是ARM公司开发的一种低功耗、低成本的微处理器核。
它具有较高的性能、较低的功耗和较小的尺寸,适用于嵌入式系统、智能手机和便携设备等。
移植Linux操作系统到基于ARM9的平台是一项复杂的任务,需要仔细考虑硬件和软件的兼容性,以及适配内核和驱动程序等。
下面将详细介绍ARM9平台上的Linux操作系统移植过程。
首先,进行硬件选型和准备。
选择合适的ARM9处理器和开发板,确保其能够满足项目的需求。
然后,对硬件进行适配和配置,包括时钟、存储器、外设等。
需要将硬件的相关信息添加到Linux内核配置文件中,以确保内核能够正确地检测和使用硬件。
随后,编写启动代码。
ARM9平台上的启动代码是一个汇编文件,用于初始化处理器和硬件,设置堆栈和中断向量表,并跳转到内核入口点开始执行。
启动代码的编写需要根据具体的处理器和开发板进行调整和修改。
然后,进行驱动程序的移植。
驱动程序是操作系统与硬件之间的桥梁,负责管理和控制硬件资源。
在ARM9平台上,需要移植适配各种外设的驱动程序,包括串口、网卡、显示屏等。
可以根据硬件厂商提供的驱动程序手册或原始代码进行移植和调试。
最后,进行系统调试和优化。
移植完Linux操作系统后,需要进行系统调试和测试,确保系统能够正常启动和运行。
可以使用调试工具和性能分析工具来检测和解决问题,并对系统进行优化,提升性能和稳定性。
总之,移植Linux操作系统到基于ARM9的平台是一项复杂而又重要的任务。
通过详细的硬件准备、内核编译、启动代码编写、驱动程序移植和系统调试等步骤,可以成功将Linux操作系统移植到ARM9平台上,并实现功能完善、稳定可靠的嵌入式系统。
基于armuClinux的嵌入式系统开发.
基于arm+uClinux的嵌入式系统开发首页 | 电子新闻| 网站调查 | 电子基础 | 单片机 | 电子设计 | 电子制作| 电子课件 | 资源共享 | 资源下载 |访客留言 | 自选风格基于arm+uClinux的嵌入式系统开发作者:未知来源:BBS浏览次数:179添加时间:2006-7-15 10:20:20前些日子基于arm+uClinux开发了一个网络监控系统,眼看项目马上要做完了,终于松了一口气,于是整理了一些笔记和心得想和大家针对这种开发模式进行一些探讨,希望对各位有所帮助。
按照我的开发过程想分以下几部分逐一介绍。
1.开发平台的选择和论证2.开发环境的建立3.一般程序的开发4.Linux程序向ARM+uClinux平台的移植5.剩下的问题希望诸位多多补充自己的想法,以利于大家共同提高。
1.开发平台的选择和论证一个项目拿到手,如何选择开发平台(主要是指CPU和操作系统以及开发环境和工具)应该说至关重要,有时这不光影响进度,产品质量,可维护性等一般问题,甚至涉及到方案的可实现性。
本人结合自己的网络监控系统简单归纳了一些对平台的考虑,还请各位补充。
从系统功能实现考虑:(1) 是否有片上外设,专用指令或配套的软件模块直接实现系统功能要求。
感觉这一条对很多人的决策影响很大(2) 价格这一点应通过CPU提供的资源综合考虑,它提供了多少有用的资源,多少没用的资源(那可都是银子呀!),还是那三个字,性价比,另一方面,是要抓主要矛盾,是不是有些特性是必须的,什么特性是用户需求里的亮点(就靠这些亮点往上抬价),这时该花的就得花了。
(3) 功耗本系统对CPU功耗要求不高,但对移动设备,这一点可是致命,而且这一点不是仅针对CPU,所有几乎器件都要勒紧裤腰带运行。
(4) 处理速度这项不用多说,大家都明白重要性,但具体算起来可是一门学问,一方面是自己需要多快的速度,如果加上非实时操作系统这事就不好控制,余量还是大点稳妥,另一方面,CPU指令周期多少,有没有流水,有没有并行,什么体系结构,有没有专用指令(看人家DSP多牛,干这事一绝),对外部存储器和外设的存取速度等等,哪一个慢了都叫瓶颈。
基于ARM-LPC2210芯片的uClinux移植及应用
Hale Waihona Puke 器上 , 不仅可 以合理 地对软 硬件 资 源进 行 调 度 , 而且 为用户 提供 方便 的应 用 接 1… .Ciu 针 对工 业 = u l x是 I n 控 制领域 , Lnx24内核 派生 出来 的嵌 入式 操 作 从 i . u
高 端 新 兴 领 域 中 网络 、 信 、 通 多媒 体 技 术 的 发 展, 以及 控制领 域应 用对数 据处 理 能力 的提 升要 求 ,
促进了 3 2位 A M7 D 系列 L C 2 0嵌入 式处 理 R T MI P 21 器 的广 泛应 用. 果将 操 作 系统 移 植 到嵌 入 式 处 理 如
As t e o e ain s se whc s d r e r m i u u ln x i u e n mirp o e s rwi o tme r n g me tu i h p r t y tm ih i e v d f o i o l x, C i u s sd o c o r c s o t u mo y ma a e n nt n h .
UClnu r d ll c me h an e b d e p r to y tm . whih i i e a te fed o n sra o to . Ho t i x ga ua y be o s te m i m e d d o e a in s se c S am d t h il f idu tl c nr 1 l w o
基于ARM的嵌入式Linux操作系统移植
第节绪沦内核精小、效率高,并且具有,:百度的模块化和扩一展性:具备文件和日录针理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口(A川),开发应用程序简单;嵌入式应用软件丰富。
第四阶段是以基于Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。
目前大多数嵌入式系统还孤立于Internet之外,但随着工nternet的发展以及工nternet技术与信息、家电、工业控制技术等结合日益密切,嵌入式设备与InteI'net的结合将代表着嵌入式技术的真正未来。
妇.2嵌入式操作系统的主要特点随着嵌入式系统的不断发展,可以看到嵌入式操作系统在嵌入式系统中的作用日显重要,它可以为嵌入式系统开发人员提供一个基本的软件开发和运行的支撑平台,从而大大减少了复杂嵌入式系统的开发难度和开发周期,增强了系统的稳定性,降低开发和维护成本。
本论文的工作也是针对特定的嵌入式通用操作系统一嵌入式L1nux展开的,故我们首先对嵌入式操作系统作进一步的阐述。
嵌入式操作系统并不是简单嵌入的操作系统,它与通常意义上的操作系统有一定的区别。
嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、调度工作,控制协调并发活动,它必须体现所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
根据各文献的描述,嵌入式操作系统具有如下一些特征: 1.小巧。
一般嵌入式系统所能够提供的资源有限,所以嵌入式操作系统必须做到小巧以满足嵌入式系统硬件的限制。
2.实时性。
据统计,有许多嵌入式系统工作在实时性要求很高的环境中,这就要求嵌入式操作系统必须将实时性作为一个重要的指标来考虑。
在信息时代, 人们必须在有效的时间内对收到的信息进行处理,从而为进一步的决策分析争取时间如GSI客户端的信息处理。
所以,嵌入式操作系统必须体现一定的实时性。
3.可定制性。
由于嵌入式系统需要根据应用的要求进定制,所以嵌入式操作系统也必须能够根据应用的要求进行定制,去掉多余的部分,或者简化相应的模块。
ARM平台下Linux嵌入式系统移植的研究
ARM平台下Linux嵌入式系统移植的研究随着计算机智能化技术的深入发展,计算机迎来了嵌入式系统时代,其产品也越来越丰富,市场价值不言而喻。
作为嵌入式系统的硬件代表产品ARM和软件产品Linux也得到了前所未有的发展,如何将ARM平台下Linux嵌入式系统进行移植就显得尤为重要,本文分析了组成嵌入式系统的软件Linux和硬件平台ARM,然后详细介绍了将Linux系统移植到ARM平台上的具体方法,旨在将理论研究应用到具体嵌入式产品中。
标签:Linux;ARM平台;嵌入式系统1嵌入式系统嵌入式系统和其他的计算机系统一样,由计算机硬件和软件组成,其中计算机硬件最成功的作品就是ARM系列;计算机软件最优代表性的就是Linux系统。
嵌入式系统是后计算机时代的发展必然,它以“私人订制”式应用为核心的计算机相关技术,满足特定人群和厂家的个性化需要,所以要求相关硬件和软件必须可以灵活的增加和减少这个特性,其产品也必须是功能可靠;大小可以灵活改变;成本和功耗越低越好,待机时间越长越好。
ARM最为嵌入式系统最成功的架构硬件平台,换句话说,现在的嵌入式系统硬件平台几乎80%来源于ARM。
主流的操作系统均可以应用于ARM硬件平台,Linux系统也不列外。
ARM著名的产品有ARM7、ARM9、ARM9E、ARM10、ARM10E等,并且较以往的硬件平台,ARM将位数扩展为32位,功能大大加强,也为其架构智能化的软件系统打下了基础;与传统计算机CPU不同的是,ARM将内存和I/O设备统一编址,简化了指令系统,指令运用更加灵活,效率也就越高;ARM同时使用了大量的寄存器来代替存储器,大大提升了运行速度,编址方式采用是大端和小端格式相结合的方式,组织形式更加灵活方便。
Linux系统是一个开源的操作系统,源代码完全公开,每个版本均可在Linux 官网下载使用,这个特性满足了嵌入式系统的核心要求,也就是代码可以根据需要灵活的裁剪,同时它还可以运行于普通PC机和任何智能终端当中,据统计,在现有的智能设计中,有50%左右的软件系统平台使用Linux,内核的配置可以模块化进行,组合十分灵活;Linux一个重要是编译方便,普通的简单代码可利用Gcc进行编译,模块化的代码可使用Make进行统一编译,一次编译,修改代码后,下次编译只对修改后的代码进行编译,节省了编译时间,提高了编译的灵活性,大大提升了代码开发效率。
ARM设计的uClinux及其应用
ARM设计的uClinux及其应用摘要:本文讨论了基于ARM的嵌入式操作系统uClinux及其应用开发设计及实现。
在32位ARM核的微处理器S3C4510B的硬件平台上结合嵌入式实时操作uClinux.完成了系统的硬件设计uClinux的编译、移植,最后实现了应用程序的添加。
关键词:ARM;实时操作系统uClinux;S3C4510B;ARM7TDMI1 嵌入式操作系统uClinux及其应用开发嵌入式软件平台由以下部分组成:系统引导程序、嵌入式操作系统内核、文件系统。
系统引导程序通常也称为BootLoad—er ,代码量虽少,但是作用非常大,相当于PC上的BOIS,负责将操作系统内核固化到Flash中和系统初始化工作.然后将系统控制权交给操作系统。
文件系统是嵌入式软件平台占用存储量最大的一部分,也是与用户开发最相关的一部分,它存储了系统配置文件、系统程序、用户应用程序和必需的驱动程序。
1.1 BootLoader程序系统引导程序BootLoader是嵌入式系统加电后执行的第一个程序,一般应写入Flash 存储器中并从起始物理地址0x0开始。
在应用实际中BootLoader的功能主要有:① 将uCLinux内核和文件系统烧写到目标板中;②系统初始化;③系统的内存映射;④加载uClinux 内核1.2 嵌入式操作系统uCiinuxuClinux就是Micro—Control—Linux,是针对控制领域的嵌入式linux操作系统,它是从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性,适合不具备内存管理单元(MMU)的微处理器/微控制器(例如ARM7TDMI),它也是一个完全符合GNU /GPL公约的操作系统,完全开放代码。
和主流的Linux相比,uClinux有以下特点:① 简化了内核加载方式,uClinux的内核可以在Flash上直接运行;② 采用romfs文件系统作为root文件系统,相对于一般的ext2使用更少的存储空间;③ 使用了Flat可执行文件格式替代elf格式;④ 使用应用程序库uClibc替代libc。
基于ARM7的uClinux移植(嵌入式课程设计)
基于ARM7的uClinux移植1.引言随着计算机技术的发展,嵌入式系统已不仅仅属于计算机领域的一个研究热点,在电子、工业控制、航空航天等领域都有广泛的应用。
嵌入式设备应用广泛,几乎包括了我们周围的所有电器设备:PDA、手机、机顶盒、汽车、微波炉、自动取款机等。
和通用计算不同的是嵌入式系统针对的是具体的专用系统,一般也都具有成本和空间的敏感性,它的硬件和软件都必须高效率的设计。
在航空航天、医疗等特殊应用领域还要求做到很高的安全可靠性。
嵌入式系统还可以根据任务灵活的增减软硬件。
uClinux在官方网站()中有源代码提供,同时也有文档说明所支持的体系结构。
结合实际的应用,在众多的体系结构中选择一种。
下面介绍一下在移植uClinux中会遇到的一些关键问题。
(1)交叉编译环境的建立移植uClinux必须有一台PC机,安装了Linux操作系统。
同时还要有一块测试板,测试板的体系结构uClinux必须支持。
对于不同体系结构,GNU都提供了相应的开发软件包。
这可以到网上查找,有些是源代码包,下载后要经过GCC的编译才能应用;有些是应用程序包,安装后即可使用。
安装完了工具包后,Linux中就有了基于该体系结构的编译器,链接器,调试器以及一些实用小工具,例如反汇编,反编译等,以后编译uClinux内核,制作文件系统都要依赖交叉编译系统。
(2)uCli nux的内核加载方式的问题uClinux的内核有两种可选的运行方式:可以在Flash上直接运行,也可以加载到内存中运行。
前者可以减少内存需要。
Flash运行方式:把内核的可执行映像文件烧到Flash上,系统启动时从Flash的某个地址开始逐句执行。
这种方法实际上是很多嵌入式系统采用的方法。
内核加载方式:把内核的压缩文件存放在Flash上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快(RAM的存取速率要比Flash高)。
基于ARM的uClinuX的移植研究
域 而设计 的 Ln x操作 系统, 承 了 Ln x的众 多优 点, 泛应 用 于嵌入 式 系统 中。 对 不 同的嵌 入 式处理 器移 iu 继 iu 广 针 植 u iu Cl x已成 为嵌 入 式 系统 研 究的 一 个 重 点 。本 文 结 合 Ma i RM 2 0 一 n gc A 2 0 S教 学 实验 开发 平 台. 细 介 绍 详
B oL a e o tod r就是 在 操 作 系 统 内核 运行 之前 运 行 的 一 段小 程 序 。通 过 这 段小 程 序 , 们 可 以初始 化 硬件 设 备 、 我
EP O 等 ) 2R M ,具 有 以太 网 接 口 、 AN接 口 、 D M 接 C MO E 口、D I E硬 盘接 口、 F卡接 口、D卡 接 口、 印机 接 口 。 C S 打 彩
后 , 置 、 译 、 接 u l u 。 载 编 译得 到 的 映 像 文 件 配 编 连 Ci x 下 n
第1 7卷 第 5期
20 0 8年 9月
重庆职业技术 学院学报
o m a fCh g i g Vo ai n l& Te h ia n tt t u lo on qI c to a 1 c n c lI siu e
V 1 7 No5 o. . 1
Se D 2008
.
u lu C i x移 植 到 L C 2 0的 方 法 和 过 程 n P 21 关 键 字 : 入 式 系统 ;C iu : P 2 0 嵌 u l x L C2 1 n
中图分 类 号 :P 1 . T 3 62
1 引 言
文献 标识 码 : A
文 章编 号 :6 2 0 6 (0 8 0 — 13 0 1 7 — 0 7 2 0 )5 0 1 — 2
基于ARM+uClinux的嵌入式系统开发4
4.不同平台间程序的移植――1. 简单程序的移植。
研究程序移植的那两周是最痛苦的两周,没有太多可以借鉴的东西,只能摸黑向前走,于是更加坚定决心要整理些东西给后来的弟兄。
不过话说回来,各位弟兄别被我前面说的吓倒,只要搞清你要作什么,程序移植其实是比较简单的事情。
首先列出一些问题:1.X86上运行的程序能不能在51单片机上运行,为什么,有没有可能,如果可以,应该做哪些工作才可以实现。
2.相同CPU平台,DOS的程序为什么可以在windows下运行,能不能在linux下运行,为什么,作什么工作有可能该程序运行。
为什么可以移植程序,为什么要移植程序?程序可以移植首先要感谢开发出高级语言的大牛们,记住,无论多么漂亮的代码经过编译以后都要变成CPU可以识别的机器语言,而几乎一千种CPU说着一千种语言。
为保证大家有共同语言,规定一种高级语言――高级语言。
每一个CPU派出自己的翻译――编译器。
这个翻译精通两国语言,高级语言和自己的语言。
(由此已经可以看出编译工具在程序移植中的重要性)。
只要程序没有硬件上的约束,可以说这种沟通是无极限的,甚至于不同操作系统平台。
(操作系统也是程序,也可以移植喽)举例:在x86的windows下用VC(或TC,BC)编一个c程序实现i=i+1,丝毫不改就可以用51的C编译器重新编译并在51单片机上运行。
一次小型的移植就结束了。
可以移植已有的程序还要感谢开放源代码的弟兄,没有这些C文件和H 文件让你重新编译一下,怎么在你的CPU上跑?其实不止这些,后面还会看见开源组织的牛人专为程序可移植性所作的专门的工作。
那么为什么要移植程序?问这问题就像问地上有个钱包为什么要捡一样,答案不言而喻。
现成的东西为什么不要。
当然,移植程序可没有捡钱包那么简单,尤其是第一次,后面会说一些移植之前应该考虑的问题。
(就像现在地上有个钱包也千万别上去就揣自己兜里,说不定就是套)。
另一方面,你给我你写好的程序让我拿去用,我还要考虑一下,或许里头问题多的还不如自己写一个。
《嵌入式Linux系统开发标准教程》8 基于ARM的Linux内核移植
嵌入式学院—华清远见旗下品牌:《嵌入式Linux系统开发标准教程》——第8章、基于ARM的Linux内核移植第8章基于ARM的Linux内核移植本章目标本章以ARM平台为例介绍内核移植的基本方法,并且详细分析了Linux内核启动过程。
通过本章学习,读者可以明确内核哪些代码是与平台相关的,在内核启动过程中代码的执行顺序。
只有掌握了这些代码,在内核移植过程中才能有的放矢地去修改代码。
内核源码移植《嵌入式Linux系统开发标准教程》——第8章、基于ARM的Linux内核移植8.1 移植内核源码所谓移植就是把程序代码从一种运行环境转移到另外一种运行环境。
对于内核移植来说,主要是从一种硬件平台转移到另外一种硬件平台上运行。
8.1.1 移植前的准备工作对于嵌入式Linux系统来说,有各种体系结构的处理器和硬件平台,并且用户需要根据需求自己定制硬件板。
只要是硬件平台有些变化,即使非常小,可能也需要做一些移植工作。
内核移植是嵌入式Linux系统中最常见的一项工作。
内核移植工作主要是修改跟硬件平台相关的代码,一般不涉及Linux内核通用的程序。
移植的难度也取决于两种硬件平台的差异。
Linux对于特定的硬件平台的软件就叫作BSP(Board Support Package)。
由于Linux内核具备可移植性的特点,并且已经支持了各种体系结构的很多种目标板,我们很容易从中找到跟自己硬件类似的目标板。
参考内核已经支持的目标板来移植BSP,就如同使用模板开发程序。
在开始移植开发板的BSP之前,需要做充分的准备工作。
(1)选择参考板。
选择参考板的原则如下。
n参考板与开发板具有相同的处理器,至少类似的处理器;n参考板和开发板具有相同的外围接口电路,至少基本接口相同;n Linux内核已经支持参考板,至少有非官方的补丁或者BSP;n参考板Linux设备驱动工作正常,至少已经驱动基本接口。
通常都可以找到相同处理器的参考板,并且可以获取到Linux内核源代码。
ARM—Linux嵌入式系统BootLoader的配置与移植
蠢霞NG Lei。珏U Hal.na (CoUege of Computer Science&Tech.,Xud瑚a University,Xuclmg 461000,China)
the哂tO挝触the年蛾翩such鹞the Ahgrset:Embedded system omfiguraticn and transplantatiⅨa is
Oct. 2008
ARM—Linux嵌入式系统BootLoader的配置与移植
孟雷,忽海娜
(译蔼擎篦谤算祝耪学与技术学院,河南许蒜461000)
摘褰:嵌入式系统陆tl舶d凹的配置及移檬是解决嵌入式系统的启动、初始化、搽作系统内核的固化和弓I龉等问题的关
键。分耩-r ARM-Linux嵌入姨系统戆维羧,会绥了1300tLoader熬撬念及移蕉、骖羧爨要注意豹阚疆。劳激¥3C4480缝
transplantation
S3CA480讲a=e霸of as an雠-
lo抵the妇出站魄progtmn窝渲融∞a融,rl威ove maple,real酶the configuration and tmasohntation in the Linux蜀瞎tem.By
the start
&ini痂燕跪矗m of鼎豳edded system.
·205·
1)高性能、低功耗。 2)支持以太网接口。 3)丰富的中断控制器,以满足与FPGA接口的需 要。 4)U=D控制器。 5)至少拥有2个I,ART接口(CPU与GPRS模块 接口为IIART)。 6)拥有12C总线控制器。
接口,以方便与黝连接。 7)基于ARM的收视率终端设备,实现丰富的I/O
每种不同的CPU体系结构都有不同的BootLoad. er。除了依赖于CPU的体系结构外,BootLoader实际 上也依赖于具体的嵌入式板级设备的配置,比如板卡 的硬件地址分配,RAM芯片的类型,其他外设的类型 等。这也就是说,对于两块不同的嵌入式板而言,即使 它们是基于同一种CPU而构建的,如果他们的硬件资 源和配置不一致的话,要想让运行在一块板子上的
基于ARM的嵌入式Linux操作系统移植
有内存管理单元的 CPU , 一般采用μClinux 作为其操作系
统 。本文就将根据实际项目开发中一个 ARM 构架的嵌入式
图 1 硬件平台存储器的地址安排
系统为例 , 阐述如何移植 Linux 到目标平台上 。
是移植调试操作系统时非常有用 ; gcc 是编译工具 , 用来编
1 目标平台概述
本文讨论的一个嵌入式系统目标平台采用的是一个以 基于 ARM7 核的嵌入式处理器 SA1100 , 它是 Intel 公司基于 ARM7 核 心 的 一 款 嵌 入 式 微 处 理 器 。SA110 内 部 集 成 了
一种是非压缩方式 。为了适应嵌入式的需要 , 采用压缩方式 将 PC 指针再次跳转到 0x06000000 , 在 SDRAM 存储器内部
编译 。这种方式下 , 编译好的内核映象文件先被烧写到 执行 bootloader 内 核 加 载 代 码 。采 用 在 SDRAM 内 而 不 在
■ FLASH 内 , 启动时 , 由引导程序将内核从 FLASH 里加载到 FLASH 内执行 bootloader 的原因是在 SDRAM 内执行代码程
系统 RAM 里解压 , 然后运行 。这种压缩方式编译出来的内 序速度比在 FLASH 内快很多 , 有利于加快系统启动速度 。
核映象文件小 , 非常适合嵌入式系统使用 。
接下来 Bootloader 所做的工作就是从 FLASH 里把压缩的内核
213 制作根盘文件系统
映象复制到 SDRAM 内的 0x06008000 处 , 并且把根盘文件系
本文根据一个特定的目标平台 , 分析了如何将 Linux 移
植到 ARM 构建的嵌入式系统上的主要技术和整个流程 , 掌
握这些移植的技术和流程 , 对于开发嵌入式系统是十分重
基于ARM的嵌入式uClinux系统开发
基于ARM的嵌入式uClinux系统开发
李全利;张小丽
【期刊名称】《长春理工大学学报(自然科学版)》
【年(卷),期】2009(032)002
【摘要】uClinux是一完全符合GNU/GPL公约的操作系统,完全开放代码.该系统适用于没有虚拟内存或内存管理单元(MMU)的处理器.本文以SAMSUNG公司的S3C44BOX为例详细介绍了uClinux在ARM7微处理器上的移植,以及应用程序的添加.研究结论证明,该系统具有功能强大、便于移植和扩展性强等特点,有良好的应用前景.
【总页数】4页(P264-267)
【作者】李全利;张小丽
【作者单位】哈尔滨理工大学,自动化学院,哈尔滨,150080;哈尔滨理工大学,自动化学院,哈尔滨,150080
【正文语种】中文
【中图分类】TP316
【相关文献】
1.基于uCLinux的嵌入式系统开发过程 [J], 廖羽;戴瑜兴
2.基于ARM和uClinux的嵌入式系统的构建研究 [J], 周彦安
3.基于uClinux的嵌入式系统开发技术方法论 [J], 皇良斌;薛健辉
4.基于ARM7与uClinux嵌入式智能终端系统 [J], 艾红
5.基于uClinux嵌入式系统开发平台的建立 [J], 肖杰;李仁发;徐成
因版权原因,仅展示原文概要,查看原文内容请购买。
arm uClinux嵌入式标准系统开发
基于arm+uClinux的嵌入式系统的开发前些日子基于arm+uClinux开发了一个网络监控系统,眼看工程马上要做完了,终于松了一口气,于是整理了一些笔记和心得想和大家针对这种开发模式进行一些探讨,希望对各位有所帮助。
按照我的开发过程想分以下几部分逐一介绍。
1.开发平台的选择和论证2.开发环境的建立3.一般程序的开发4.Linux程序向ARM+uClinux平台的移植5.剩下的问题希望诸位多多补充自己的想法,以利于大家共同提高。
1.开发平台的选择和论证一个工程拿到手,如何选择开发平台(主要是指CPU和操作系统以及开发环境和工具)应该说至关重要,有时这不光影响进度,产品质量,可维护性等一般问题,甚至涉及到方案的可实现性。
本人结合自己的网络监控系统简单归纳了一些对平台的考虑,还请各位补充。
从系统功能实现考虑:(1) 是否有片上外设,专用指令或配套的软件模块直接实现系统功能要求。
感觉这一条对很多人的决策影响很大(2) 价格这一点应通过CPU提供的资源综合考虑,它提供了多少有用的资源,多少没用的资源(那可都是银子呀!),还是那三个字,性价比,另一方面,是要抓主要矛盾,是不是有些特性是必须的,什么特性是用户需求里的亮点(就靠这些亮点往上抬价),这时该花的就得花了。
(3) 功耗本系统对CPU功耗要求不高,但对移动设备,这一点可是致命,而且这一点不是仅针对CPU,所有几乎器件都要勒紧裤腰带运行。
(4) 处理速度这项不用多说,大家都明白重要性,但具体算起来可是一门学问,一方面是自己需要多快的速度,如果加上非实时操作系统这事就不好控制,余量还是大点稳妥,另一方面,CPU 指令周期多少,有没有流水,有没有并行,什么体系结构,有没有专用指令(看人家DSP 多牛,干这事一绝),对外部存储器和外设的存取速度等等,哪一个慢了都叫瓶颈。
(5) 需要的硬件支持(如外部存储器,双电源等)这算是杂项,但会增加额外的价格,系统体积等,不容忽视。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.开发平台的选择和论证2.开发环境的建立3.一般程序的开发4.Linux程序向ARM+uClinux平台的移植5.剩下的问题希望诸位多多补充自己的想法,以利于大家共同提高。
1.开发平台的选择和论证一个项目拿到手,如何选择开发平台(主要是指CPU和操作系统以及开发环境和工具)应该说至关重要,有时这不光影响进度,产品质量,可维护性等一般问题,甚至涉及到方案的可实现性。
本人结合自己的网络监控系统简单归纳了一些对平台的考虑,还请各位补充。
从系统功能实现考虑:(1) 是否有片上外设,专用指令或配套的软件模块直接实现系统功能要求。
感觉这一条对很多人的决策影响很大(2) 价格这一点应通过CPU提供的资源综合考虑,它提供了多少有用的资源,多少没用的资源(那可都是银子呀!),还是那三个字,性价比,另一方面,是要抓主要矛盾,是不是有些特性是必须的,什么特性是用户需求里的亮点(就靠这些亮点往上抬价),这时该花的就得花了。
(3) 功耗本系统对CPU功耗要求不高,但对移动设备,这一点可是致命,而且这一点不是仅针对CPU,所有几乎器件都要勒紧裤腰带运行。
(4) 处理速度这项不用多说,大家都明白重要性,但具体算起来可是一门学问,一方面是自己需要多快的速度,如果加上非实时操作系统这事就不好控制,余量还是大点稳妥,另一方面,CPU指令周期多少,有没有流水,有没有并行,什么体系结构,有没有专用指令(看人家DSP多牛,干这事一绝),对外部存储器和外设的存取速度等等,哪一个慢了都叫瓶颈。
(5) 需要的硬件支持(如外部存储器,双电源等)这算是杂项,但会增加额外的价格,系统体积等,不容忽视。
从开发者的角度考虑:(1) 是否有足够的技术支持包括demo版及原理图,demo程序,操作系统和BSP,测试开发工具等。
(2) 自身条件;包括对项目开发周期的要求,开发人员对器件和开发模式的熟悉程度以及掌握的难易程度。
(3) 可用资源是否丰富(书籍,网络等)以上三点主要考虑迅速开发出稳定的系统。
(4) 系统的可继承性,可移植性和可扩展性。
(5) 是否有现货。
(6) 方案提供商的素质。
(包括技术水平和服务意识)。
根据以上考虑选择了s3c4510b(ARM7TDMI)+uClinux开发模式(1) 以下是该平台对我的系统的满足情况:(和上面几点对应)本监控系统硬件部分主要要求以下部分:a.以太网接口(s3c4510b自带网络控制器)b.串口(自带)c.与数据采集芯片的接口(8位数据线,小于8位地址总线)。
(自带)本系统软件部分主要要求以下部分:a.硬件接口驱动程序(uClinux提供串口和网络控制器驱动)b.网络协议栈支持(uClinux提供TCPIP,UDP等的协议栈)c.应用层程序(如果算上可以从linux移植的程序来看,那就太多了,我就用到了一个现成的)(2) 本应用系统不是那种批量的东西,对价格要求不苛刻,而且这款CPU最便宜可以到55左右,可以接受。
(3) 本应用系统有固定电源,功耗要求不高。
当然,据说ARM在节省功耗上很有特点。
(4) 本应用系统速度方面要满足两方面:1。
串口:115200bps 2。
网络速度能到10Mbps 就行,所以对系统速度要求也不高。
这款ARM内部可以到50M。
(5) 系统对体积要求也不高,加片flash和RAM还是没问题(到目前为止感觉我的系统真是无欲无求!)从开发者的角度考虑:(1) 因为时间很紧(一个半月),所以支持越多越好。
目前从开发商那里拿到了开发板,原理图,uClinux,相应驱动,bootloader,拿来就可以用了。
软件硬件并行开发。
(bootloader 和网络控制器驱动没提供原码,比较可惜:-((2) 当时我对嵌入式系统的开发模式和ARM都是只有耳闻,linux接触过一个月左右。
现在想起来有些后怕。
(3) 网上的资源,非常多。
提供一些我常用的。
::URL::/ uClinux的大本营。
::URL::/ 里面有些技术文章非常不错。
::URL::/::URL::/ 这是国产的linux站点。
uClinux-dev@ 这是uClinux的邮件列表,回答问题的都是大牛,非常有帮助,记住把你的邮件设置成纯文本格式。
申请是在:::URL::/mailman/listinfo/uClinux-dev web方式。
(4) 采用以上开发模式,软件的可维护性,可移植性和可扩展性都不错。
(5) 目前该CPU使用还是比较普遍,现货没问题。
(6) 方案提供商的素质吗……..还算可以吧:-)根据以上考虑和目前的开发情况,这套方案还是比较令人满意。
2.开发环境的建立。
先说两句废话为和我以前一样对操作系统(尤其是嵌入式操作系统)迷惑的弟兄解释些概念。
因为总是有人在问是不是一定要用操作系统,我的CPU能不能移植操作系统,可以移植什么操作系统,有了操作系统可不可以运行某些程序。
从我的个人经历来讲,这其实就是许多硬件出身的弟兄对操作系统这个东西有神秘感(和我一年前一样)。
说白了,操作系统就是一段设计非常巧妙的程序,和你自己的程序从本质讲没有区别,于是,以上问题转为,我是不是一定要用这段程序,我的CPU能不能运行这段程序,可以跑什么样的程序。
这个程序可以跑,调用这个程序接口的另一个程序能不能跑!答案也就变得简单,操作系统对任何一个CPU都不是必须的(对嵌入式系统更是如此),你可以自己编些程序在没有操作系统的PC裸机上跑(BIOS就是这样的),像玩C51一样,(虽然奢侈的让人有些心痛),或者移植UCOS到上面。
另一方面,现代操作系统大多需要一些硬件的支持,(像保护模式的实现),反过来说,高端CPU中专门有针对支持操作系统的体系结构,这样,许多操作系统的实现是挑剔硬件平台的。
其实其它程序也一样,你编的程序使用的片上外设另一CPU上没有,那这段程序就无法移植了。
这就是话粗理不粗。
书归正传,还是聊聊ARM+uClinux开发模式下开发环境的建立(其实下面说到的东西不仅限于这种硬件平台和操作系统)很久以前就在介绍嵌入式系统开发的书上见过“交叉编译环境”这词,当时觉得很玄,用了以后才知道,其实就是解决在谁的地盘上用谁的工具编谁的代码问题。
编译的最主要的工作就在将你的程序转化成运行该程序的CPU所能识别的机器代码,不同的CPU有相应的编译器,另一方面。
编译器本身也是程序,当然也要在某一个CPU平台上运行。
于是交叉编译的交叉点就在那个编译器本身是CPU1上的一个程序,却在为CPU2编译代码(整个一个吃里扒外!)。
这么一想,以前用51和dsp的开发软件(大部分都是IDE-集成开发环境)开发程序时,都算是交叉编译啦。
当然,假如在你的ARM系统上,操作系统已经正常运行,并且你的资源足够多,你可以把PC机上运行的ARM编译工具移植到ARM上,然后所有该系统的应用程序都直接在ARM系统上编译,这就不算交叉编译,但如果有条件这么作,程序的开发或者移植就方便多了,因为整个开发过程又回到在自己PC机上编应用程序的那种模式了,那就是在自己的地盘上用自己的编译器编自己的应用程序。
与不使用操作系统的开发模式不同(此处的操作系统尤其指提供了专门的接口函数库的操作系统,目前的UCOS就不算),在目标板(就是实现系统的板子)使用操作系统的开发模式下,交叉编译环境中还需要该对应该操作系统的库。
比如uClinux提供的uClibc。
此时,开发用的主机上不光要有目标板CPU所需的编译工具,还要有对应操作系统的库,又因为一般库文件还要在开发机上拿目标CPU的编译器重新编译一下,所以还要把操作系统的原码也放到开发机上(或者把相应的库文件放到开发机上?)。
(唉,跟目标板没什么关系,却要帮它背这么多东西,真是上辈子欠它的!!)。
虽然操作系统的接口库至关重要,但大家似乎已经淡忘了它的存在。
这些多是因为大家已经远离了刀耕火种的年代(需要告诉编译器需要的include路径,lib路径,以及lib的名称),集成的编译环境让我们编译链接的所有繁琐工作化作对BUILD按钮的潇洒一击。
而且不论是windows环境,还是linux环境,都有环境变量去记录这些参数。
但尝试将/usr/lib目录改一个名字,你就会知道你不能无视他们的存在,因为操作系统的功能都是通过这些库来交给应用层程序使用的。
当然如果你的系统不依靠任何操作系统,像最原始的那种完全自己实现所有代码,就只需要一个编译工具,少了这些罗嗦事。
以上的东西一般时候是没有必要仔细研究,但交叉环境下开发或移植比较大的程序时,你可能就需要了解编译器,链接器等开发工具的几乎所有重要参数。
我在开发时,主机完全使用的是linux,如果有条件,建议大家这样作,linux的使用没有想象的复杂(虽然我现在身边还要放一本关于linux使用的书籍),而且开发程序可以先在主机上调通,然后用交叉编译工具为目标系统重新编译一遍,可以这样做是因为主机是linux,目标系统跑uClinux,两个操作系统提供的应用程序接口几乎是一样的,所以程序几乎不用修改。
在我的系统上,建立基本的开发环境过程如下。
(1) 安装gnu开发工具链(是GNU开发的针对ARM CPU的一组编译开发程序(是linux程序)。
包括arm-elf-gcc,arm-elf-ld等(2) 将uClinux源代码源代码解压到相应路径下,按照编译内核的步鄹编译一遍(此时使用的编译工具已经是上面提到的ARM编译工具了,因为它要在ARM CPU上运行,另外,和编译linux内核一样,此时可以通过menuconfig来对内核提供的功能进行裁减(3) 将库(uClibc)解压到相应路径下,用以上工具编译一遍。
这样最基本的环境就算搭建好了。
以上工作对于做过的人来说比较简单,这里介绍一下帮助没有使用或刚开始使用这种开发模式的弟兄们理清一下思路。
3.应用程序的开发因为目标板上用uClinux,它提供的程序接口和linux下的基本一致,不一致的部分主要在于uClinux不支持MMU(应该说是uClinux是为不带MMU的cpu定制的),最明显的就是fork 函数要用vfork函数替代,这也是编程时,感觉最不爽的一点(没办法,谁让咱们的CPU有生理缺陷)。
另一个不易觉察的差异在于uClinux提供的库uClibc是经过裁减的。
更适合于资源紧张的嵌入式系统(上回分解已经说了,应用程序很大一部分是在和库函数打交道,而且大家最终是链在一起,所以库函数大了,你的程序也小不了)。
于是基于这种开发模式的应用程序开发变成了linux下的程序开发。
而且在实际中一般是编好了程序先在主机上拿主机平台上的编译器编译并且调试一下(linux下的编译器就是gcc 了),当然前提是被调试的程序中需要的硬件条件主机具备,例如我的程序中有一段是针对串口的,于是先在主机编一个串口程序,调通以后拿目标板的编译器重新编译一下(例如arm-elf-gcc?)(如果看了上一章“交叉编译环境”,这里就不会晕了),下载到目标板上运行,一般来说就可以直接用了。