|
嵌入式linux开发工具
嵌入式linux开发工具有很多,如:make,ant,jam,bitbake,openembedded,yocto.
1,OpenEmbedded 详见http://blog.chinaunix.net/uid-25909619-id-3767317.html
简介
Openmoko distribution 是用Openembedded来建立, Openembedded是用Bitbake来做套件上管理与cross compile的建立. 而Bitbake是用.bb .bbclass .conf 来进行设定与管理。
优点
可以crosscompiler建立embedded system
能够包装成ipk, deb, rpm, tar
能run tasks 在qemu上。
1.1 预览
OpenEmbedded bitbake像所有的build工具一样(比如make,ant,jam)控制如何去构建系统并且解决构建依赖,但是不像那些功能单一的工程管理工具(比如make),bitbake不是基于把依赖写死了的makefile,而是收集和管理大量之间没有依赖关系的描述文件(这里我们称为包的配方),然后自动按照正确的顺序进行构建。(包的配方下文除非特殊说明都将简称为“配方”;OpenEmbedded都代表OpenEmbedded)
更确切的说:openembedded是一些用来交叉编译,安装和打包的metadata(元数据)。OpenEmbedded已经被用
来构建和管理很多的嵌入式发行版,包括OpenZaurus,Angstrom,Familiar和SlugOS.
OpenEmbedded主要的功能是:
*解决交叉编译
*解决包之间的依赖关系
*必须支持包的管理(tar,rpm,ipk)
*必须支持将包作成镜像
*必须支持高度的可定制性,以满足不同的机器,主机发行版和架构需求
*编写元数据必须是容易的,并且可重用性要好
基于bitbake,OpenEmbedded可以满足以上所有要求,并且还支持更多。灵活性和强大的功能一直是OpenEmbedded的开发原则。
1.2 OpenEmbedded的历史
OpenEmbedded起源于OpenZaurus项目的建立和buildroot。buildroot支持ipk包格式,镜像的创建还有非常多的机器,但是它却不能在不同的机器上和主机发行版使用不同的补丁和文件,为了改进这些,OpenEmbedded项目就诞生了。
几个月后就有其他的项目开始使用OpenEmbedded并且发回了反馈信息。2004年10月7日Chris Larson把OpenEmbedded分成了两个项目。一个是bitbake(构建任务的执行者),一个是openembedded(实际上是为bitbake提供元数据)。
2,yocto 详见http://blog.csdn.net/arnoldlu/article/details/20363243
概述 https://www.yoctoproject.org/
Yocto Project 是一个开源协作项目,它提供了一些模板、工具和方法来支持面向嵌入式产品的自定义 Linux 系统,不管硬件架构是什么。我想要告诉那些对 yocto 这个名称不甚理解的用户的是,术语 yocto 是最小的 SI 单位前缀,yocto 表示 10^-24。
本文将提供一个分步指导,向您介绍如何使用 Yocto Project 的行业标准开源工具为嵌入式设备创建自定义的 Linux 操作系统,并使用 QEMU 在一台虚拟机中启动操作系统。Yocto Project 是由大型硬件公司和操作系统供应商资助的、由 Linux 基金会赞助的开源项目,提供了一些行业领先的工具、方法和元数据来构建 Linux 系统。
Yocto Project 的两大主要组件由 Yocto Project 和 OpenEmbedded 项目一起维护,这两个组件是 BitBake 和 OpenEmbedded-Core,前者是构建引擎,后者是运行构建过程所使用的一套核心配方 (recipe)。下一节会介绍所有项目组件。
Yocto Project 简介
作为一个协作项目,Yocto Project 有时也称为 “umbrella” 项目,它吸纳了许多不同的开发流程部分。在整个 Yocto Project 中,这些部分被称为项目,包括构建工具、称为核心配方 的构建指令元数据、库、实用程序和图形用户界面 (GUI)。
Poky
Poky 是 Yocto Project 的一个参考构建系统。它包含 BitBake、OpenEmbedded-Core、一个板卡支持包 (BSP) 以及整合到构建过程中的其他任何程序包或层。Poky 这一名称也指使用参考构建系统得到的默认 Linux 发行版,它可能极其小 (core-image-minimal),也可能是带有 GUI 的整个Linux 系统 (core-image-sato)。
您可以将 Poky 构建系统看作是整个项目的一个参考系统,即运行中进程的一个工作示例。在下载 Yocto Project 时,实际上也下载了可用于构建默认系统的这些工具、实用程序、库、工具链和元数据的实例。这一参考系统以及它创建的参考发行版都被命名为 Poky。您还可以将此作为一个起点来创建您自己的发行版,当然,您可以对此发行版随意命名。
所有构建系统都需要的一个项目是工具链:一个编译器、汇编程序、链接器以及为给定架构创建二进制可执行文件所需的其他二进制实用程序。Poky 使用了 GNU Compiler Collection (GCC),不过您也可以指定其他工具链。Poky 使用了一种名为交叉编译 的技术:在一个架构上使用工具链为另一个架构构建二进制可执行文件(例如,在基于 x86 的系统上构建 ARM 发行版)。开发人员常常在嵌入式系统开发中使用交叉编译来利用主机系统的高性能。
元数据集
元数据集按层 进行排列,这样一来每一层都可以为下面的层提供单独的功能。基层是 OpenEmbedded-Core 或 oe-core,提供了所有构建项目所必需的常见配方、类和相关功能。然后您可以通过在 oe-core 之上添加新层来定制构建。
OpenEmbedded-Core 由 Yocto Project 和 OpenEmbedded 项目共同维护。将 Yocto Project 与 OpenEmbedded 分开的层是 meta-yocto 层,该层提供了 Poky 发行版配置和一组核心的参考 BSP。
OpenEmbedded 项目本身是一个独立的开源项目,具有可与 Yocto Project 交换的配方(大部分)以及与 Yocto Project 类似的目标,但是两者具有不同的治理和范围。
板卡支持包
BSP 包含为特定板卡或架构构建 Linux 必备的基本程序包和驱动程序。这通常由生产板卡的硬件制造商加以维护。BSP 是 Linux 操作系统与运行它的硬件之间的接口。注意,您也可以为虚拟机创建 BSP。
BitBake
BitBake 是一个构建引擎。它读取配方并通过获取程序包来密切关注它们、构建它们并将结果纳入可引导映像。BitBake 由 Yocto Project 和 OpenEmbedded 项目共同维护。
Hob
为了让嵌入式 Linux 开发更容易,Yocto Project 提供了几种不同的图形工作方法。项目的一个较新的添加项叫作 Hob,它向 BitBake 和构建过程提供一个图像前端。两者的开发工作仍在继续,包含社区用户研究。
开源许可证合规性
遵守开源许可证是任何 Linux 开发工作的一个极其重要的部分。Yocto Project 的一个目标是尽可能容易地实现合规性。可以极为轻松地使用 Yocto Project 工具来创建清单(甚至构建整个源存储库)和过滤构建过程,用它们排除使用特定许可证的程序包。该项目使用了 Linux 基金会的 “开放遵守计划” (Open Compliance Program),该计划包含一个 Software Package Data Exchange® (SPDX™) 规范。
EGLIBC
嵌入式 GLIBC (EGLIBC) 是 GNU C Library (GLIBC) 的一个变体,旨在能够在嵌入式系统上运行。EGLIBC 的目标包括减少内存占用、让组件可配置、更好地支持交叉编译和交叉测试。EGLIBC 是 Yocto Project 的一部分,但在它自己的治理结构内加以维护。
应用程序开发工具包
应用程序开发工具包 (ADT) 能够让系统开发人员为他们使用 Yocto Project 工具创建的发行版提供软件开发工具包 (SDK),为应用程序开发人员提供了一种针对系统开发人员提供的软件栈进行开发的方法。ADT 包含一个交叉编译工具链、调试和分析工具,以及 QEMU 仿真和支持脚本。ADT 还为那些喜欢使用集成开发环境 (IDE) 的人提供了一个 Eclipse 插件。
Yocto Project 旗下的其他工具
属于 Yocto Project 一部分的若干其他工具:
Autobuilder:不断自动构建 Yocto Project 工具,启用自动化的 Quality Assurance (QA) 活动。
Cross-Prelink:为交叉编译开发环境提供预链接,并改进性能。
Pseudo:模拟 root 访问,是构建可引导最终映像的一个不可或缺的部分。
Swabber:检测交叉编译版本何时会受到主机组件影响而无法使用。
Build Appliance:是一台运行 Hob 的虚拟机,使那些使用非 Linux 版本主机的人能亲眼看到 Yocto Project 进程。(注意:Yocto Project 构建工具目前仅在 Linux 上受支持。)
使用yocto建立的系统如Enea Linux,Mentor Embedded Linux,Wind River Linux 6.
Organization: Enea AB
Version 4.0 represents a major step in the evolution of Enea Linux. New functionality has been incorporated to address the demands originated from next-generation networking solutions and real time applications. Characterized by a high degree of customizability and a complete suite of exclusively open source software development tools, Enea Linux is Enea’s most capable and cost efficient Linux platform yet.
Enea’s world-class support stands on a great customer and partner ecosystem. For over 4 decades we have earned our customers’ trust providing operating systems and middleware solutions. Every day, 3 Billion people around the world go through the execution environment of Enea software when making a call, driving a truck, in satellite communication or in a connected medical device. Enea Linux 4.0 reflects our expertise and proves our continuous commitment to the Yocto Project.
Mentor Embedded Linux 2013.03
Facebook Google+ Twitter LinkedIn Youtube Vimeo
Organization: Mentor Graphics
Mentor Embedded Linux combines the freedom of open source software, the flexibility of extreme customizability and the security of full commercial support in a powerful, easy-to-use package. Paired with Sourcery CodeBench, it gives developers the power to create their own rich, unique product platform.
Links: Mentor Embedded Linux Download Mentor Embedded Linux Kits
Wind River Linux 6
Facebook Google+ Twitter LinkedIn Youtube Vimeo
Organization: Wind River Systems
Wind River® has introduced the latest version of Wind River Linux, the industry standard for embedded Linux software. The new version includes expanded hardware support for the latest ARM, Intel®, MIPS, and Power architectures. Wind River Linux is also updated with the current Linux kernel, toolchain, and user space.
With the Yocto Project 1.5 open source development infrastructure as its core foundation, Wind River Linux 6 uses the latest Linux kernel as its upstream source to ensure customers have commercially supported access to the newest advancements from the open source community. Adding to existing Intel architecture 64-bit support, Wind River Linux includes ARM 64-bit processing support to further address the constantly growing data size requirements for embedded systems.
Maintaining a roll-your-own embedded Linux project is expensive, time consuming, and risky. Wind River helps you lower your total cost of ownership (TCO) by taking the cost, time, and risk out of embedded Linux development with a proven commercial solution. Our investment in each Wind River Linux release and our ongoing patch and security vulnerability management equate to over 160 person-years of effort. Our customers benefit from this investment by trusting Wind River to provide their embedded Linux solution.
3,GNU工具链
GNU工具链:
GNU Tools:全称(GNU Development Toolchains)
GNU Tools交叉开发环境:全称(GNU Cross-Plateform Development Toolchains)
GNU既支持本地程序开发,又支持交叉编译
3.1,GNU开发工具
自由软件
完备的工具链: GCC、binutils、gdb、GNU make、patch、CVS 、开发库
命令行方式:使用稍复杂、功能强大
下载: www.gnu.org
3.2,ARM平台GNU开发工具
3.2.1,基于ARM7平台的GNU开发工具
(uclinux)
arm-elf-as
arm-elf-gcc
arm-elf-g++
arm-elf-ld
arm-elf-objcopy
3.2.2,基于ARM9平台的GNU开发工具
(linux)
arm-linux-as
arm-linux-gcc
arm-linux-g++
arm-linux-ld
arm-linux-objcopy
下载:www.arm.linux.org.uk
4,GNU Tools开发工具组件介绍
4.1. GCC(GNU Compiler Collection)
支持C、C++、ADA、Object C、Java、
Fortran、PASCAL等语言。
主要包括:
cpp:GNU C编译器的预处理器。
gcc:符合ISO标准的C编译器。
g++:基本符合ISO标准的C++编译器。
gcj:GCC的java前端。
gnat:GCC的GNU ADA 95的前端。
4.2. binutils
是一组二进制工具程序集合,是辅助GCC的主要软件。
主要包括:
as:GNU汇编器
ld:GNU链接器
ar:创建归档文件,向库中添加/提取obj文件
nm:列出obj文件中的符号
objcopy:复制和转化obj文件
objdump:显示对象文件的信息
ranlib:根据归档文件中内容建立索引
readelf:显示elf格式执行文件中的各种信息
size:显示object文件和执行文件各段的总大小
strings:显示文件中可以打印的字符
strip:去掉执行文件中多余的信息(如调试信息)
gprof:用来显示图表档案数据
4.3. gdb:GNU调试器。可以用来调试C、C++和其他语言编写的程序。如加一些图形前端(如DDD),可以在图形环境下调试程序。
4.4. GNU make:是一个用来控制可执行程序生成过程、从其他源码文件中生成可执行程序的程序。它允许用户生成和安装软件包,而无需了解生成、安装软件包的过程。
4.5. diff/diff3/sidff:比较文本差异的工具,也可以用来生成补丁。
4.6. patch:补丁安装程序,可根据diff生成的补丁来更新程序。
4.7. CVS:版本控制系统。用于管理发行版本和控制在多位作者间同时编辑源码文件。
5,ARM公司的开发工具
ARM SDT 2.5.2 支持ARM9
Armcc:ARM的C编译器
Tcc:Thumb的C编译器
Armlink:ARM链接器,生成ELF格式文件
Armsd:ARM和Thumb的符号调试器
Arm工程管理器
ADW
ARM ADS 1.2 支持全系列ARM处理器
代码生成工具(Code Generation Tools)
集成开发环境(CodeWarrior IDE from
Metrowerks)
调试器(Debuggers)
指令集模拟器(Instruction Set Simulators)
ARM 开发包(ARM Firmware Suite)
ARM应用库(ARM Applications Library) |
|