7_uClinux简介
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
uClinux开发环境建立
在linux环境下建立uClinux开发环境
安装编译器
下载并安装uClinux源代码
uClinux开发环境建立
安装编译器
如果采用arm-elf-tools交叉编译环境arm-elf-tools20030314.sh,该工具可以从 /pub/uClinux/arm-elf-tools/ 上下载。 在Linux控制台下执行以下命令:
uClinux开发环境建立
Windows+VMWare虚拟机环境下的uClinux开发
VMWare是运行于Windows中的一个应用程序,是 一个虚拟机,可以在其上安装多个操作系统,相当于在 Windows上安装一个虚拟的操作系统。 如果需要使用只支持Windows环境下调试的调试器, 可以通过在VMWare中安装linux虚拟机,在该虚拟机中进 行编辑、编译uClinux,然后通过网络(ftp、nfs、ssh)等 手段传送到Windows中,进行调试,这样编译和调试可以 分别在linux和windows环境下但是是在一台电脑中完成, 它的缺点是系统要求较高,运行速度慢。 也可以在两台电脑中分别安装linux和windows,分别 实现编译和调试。
uClinux开发环境建立
在Windows+Cygwin环境下进行uClinux开发
Cygwin是运行于Windows中的一个应用程序,它可 以使得Linux环境下的应用程序可以在Cygwin环境下进 行编译,即可以在Windows进行编译。 uClinux内核配置和编译等在Cygwin环境下运行,程 序编辑和调试都在Windows环境下进行,必须采用支持 Windows下进行linux调试的调试器(如ADT1000A)才 能进行调试,否则只能通过BOOTLOADER进行简单的 程序烧写运行等 调试信息的打印可以通过串口完成,使用Windows 上的超级终端工具接收并显示目标板传送的打印信息
uClinux开发环境建立
arm-elf- 交叉编译器(推荐使用)
arm-elf-gcc arm-elf-ld arm-elf-as arm-elf-objdump
arm-elf-objcopy
arm-elf-gdb
uClinux开发环境建立
arm-linux- 交叉编译器
arm-linux-gcc arm-linux-ld arm-linux-as
uClinux开发过程
uClinux映像(image)文件结构
uClinux映像由内核(kernel)和文件系统(fs)组成。 可以将kernel和fs统一编译到一个映像(image)文件中,也 可以将kernel和fs独立地放置于不同的映像文件中(烧写到 FLASH的不同区域),这需要通过修改Makefile文件和内核 中的文件系统加载代码实现。 uClinux支持压缩核心(zImage),它是对原核心映像文件 (linux.bin)进行压缩,并在压缩后的文件头部添加一段解压缩 代码。在该程序运行时,先运行这段解压缩代码将程序解压 缩到uClinux核心运行地址,完成后,跳转到核心运行。
uClinux简介
uClinux
uClinux继承了linux的大多数特性: 开源
免费
高度可裁剪:通常内核小于 512KBytes,文件系统可 从几十KBytes到几Mbytes不等,视应用程序大小而定。 许多linux的应用程序和驱动程序可以直接或者经过 很小改动就可以在uClinux上运行
GNU交叉编译
uClinux采用GNU交叉编译器
GNU的交叉编译器,包括以下组件:
1. Gcc交叉编译器,即在宿主机上开发编译目标上可 运行的二进制文件; 2. Binutils辅助工具,包括objdump、objcopy等; 3. Gdb调试器。 对于ARM可以采用如下两个版本的编译器: arm-elfarm-linux-
arm-linux-objdump
arm-linux-objcopy arm-linux-gdb
uClinux开发环境建立
选择uClinux开发环境
单机模式(一台计算机)
Linux环境,推荐RedHat 9.0
Windows环境 + Cygwin
Windows环境 + VMWare虚拟机(安装RedHat 9.0)
uClinux简介
uClinux与linux的区别 - 内存管理
uClinux运行于没有MMU的处理器上
使用平坦式(flat)内存管理模式,虚拟内存到物理 内存是一对一的映射关系
uClinux简介
uClinux与linux的区别-fork与vfork
uClinux的多进程管理只能通过vfork来实现
uClinux内核移植
uClinux发行版本的目录结构
Documentation
uClinuxdist
config glibc images lib linux-2.0.x linux-2.4.x linux-2.6.x romfs uClibc user vendors
帮助文档 配置脚本 glibc库源代码 映像文件目录 标准C库uC-libc linux-2.0.x内核 linux-2.4.x内核 linux-2.6.x内核 编译生成的根文件系统 标准C库uClibc 应用程序源代码 制造商配置文件
sh arm-elf-tools-20030314.sh 安装完成后,键入arm-elf-gcc, 如果能看到下面的输 出信息:
Reading specs from /usr/local/lib/gcc-lib/arm-elf/2.95.3/specsgcc version 2.95.3 20010315 (release) (ColdFire patches - 20010318 from /coldfire/)(uClinux XIP and shared lib patches from /)
表示arm-elf-交叉编译环境已经建立起来了。
uClinux开发环境建立
下载并安装uClinux源代码
在uCLinux的主页上有相关发行版 本的源代码、编译工具等下载。 在linux下将该文件拷贝到home目录下,然后在该 目录下执行:tar zxvf uClinux-dist-??.tar.gz, 当 tar 程 序 运 行 完 毕 后 , 在 home 目 录 下 会 有 一 个 uClinux-dist的新目录,这个目录就是uClinux的源 码根目录,里面有进行uClinux开发的所有的源代码。 也可以从网上下载uClinux-dist发行版本,然后解压。
第七章 uClinux
1
uClinux简介
2 uClinux开发过程
3 uClinux开发环境建立
4 5
uClinux内核移植
uClinux应用程序设计
uClinux简介
uClinux
Linux与UNIX系统兼容,开放源代码。 Linux原本被设计为桌面系统,现在广泛应用于服务器领 域。而更大的影响在于它正逐渐应用于嵌入式设备。 uCLinux可以说是最早的嵌入式Linux发行版本。它是为没有 MMU的处理器而设计的,进而发展了一个完整的开发平台, 包括编译、调试等工具。 uCLinux这个单词中u表示Micro,小,C表示Control, 控制,所以uCLinux就是Micro-Control-Linux,字面上的理 解就是“针对微控制领域而设计的Linux系统”。 在uCLinux的主页上有相关发行版本的 源代码、编译工具等下载。
双机模式(两台计算机) Windows + Linux
uClinux开发环境建立
在linux环境下进行uClinux开发
uClinux的程序编辑、编译、调试都在Linux环境进行 必须采用支持GDB的调试器(如ADT1000A)才能 进行调试,否则只能通过BOOTLOADER进行简单的程 序烧写运行等 调试信息的打印可以通过串口完成,使用linux下的 minicom超级终端程序(类似于Windows上的超级终端工 具)接收并显示目标板传送的打印信息 uClinux串口驱动完成后,可以通过内核打印函数 printk向串口打印信息,这是uClinux内核调试过程中最 有效的手段
uClinux简介
uClinux与uC/OS-II的区别-开发工具
uClinux发布中包含了编译器和调试器等工具,它们 都采用GCC编译器,汇编语法一致。 uC/OS-II没有指定编译器,在不同的平台下使用该 平台下的编译器,而各个编译器,其汇编语法不同,因 此,在不同类型平台下,汇编程序不一致。
uClinux开发过程
uClinux内核组成
初始化程序段(init段) 约32KBytes。
数据段(data) 50~100KBytes左右。
未初始化数据段(bss) 100~150KBytes左右。 代码段(text) 300KBytes左右
如果kernel和fs编译在一起,内核映像还包含文件系统 (romfs) > 80KBytes
vfork使父进程锁定直到子进程exec()或者exit()
uClinux简介
uClinux与uC/OS-II的区别- 功能性
uClinux来源于linux,包含一整套的编译、调试等开 发工具、内核源代码、各种文件系统、图形接口、各种 协议、驱动程序以及丰富的应用程序。 而uC/OS-II确切的来说只是一个微内核,仅仅包含多 任务调度、简单内存管理等基本的多任务操作系统元素, 且多任务调度算法和内存管理等都比较简单。对于想实现 GUI、FS、协议等都必须另外购买或者移植,对于设备驱 动程序没有提供专门统一的接口。
uClinux开发过程
uClinux开发步骤
BOOTLOADE内核移植
应用程序开发
uClinux开发过程
支持uClinux开发的BOOTLOADER
初始化硬件
引导uClinux
烧写uClinux内核映像和文件系统
uClinux开发环境建立
uClinux内核移植
uClinux内核的目录结构
Documentation
linux-2.4.x
arch drivers fs include init lib mmnommu net script
uClinux发布中包含了多种平台下的移植,可以通过 配置内核选择体系结构和裁剪内核。 uC/OS-II的不同平台下的移植通过不同的移植代码 独立发布,没有一个统一的界面,通过宏定义进行内核 裁剪。
uClinux简介
uClinux与uC/OS-II的区别-实时性
uClinux内核不关心实时性问题,可以通过和 RTLinux配合来实现实时。 RTLinux处理实时任务,非实时任务由linux完成 RTLinux是为linux提供实时性的方法,同样也适用 于uClinux。通过RTLinux的patch,可以满足uClinux对 实时性的需求 uC/OS-II采用占先式内核,实时性好
uClinux简介
uClinux与uC/OS-II的区别-开发资源
在开发上,uClinux与linux采用相同的API调用,接 口文档齐全,书籍、网上资源也比较多。 uC/OS-II虽没有标准的API接口,但是其内核非常简 单、简洁,且书籍、网上资源也非常丰富。
uClinux简介
uClinux与uC/OS-II的区别-移植性
uClinux内核移植
uClinux内核移植
uCLinux内核的移植可以分为板级移植和片级移植。
对于uCLinux发行版本中已经支持的CPU通常只需要针对 板级硬件进行适当的修改即可,这种移植叫做板级移植。 而对于uCLinux发行版本中没有支持的CPU则需要添加相 应CPU的内核移植,这种移植叫做片级移植。