uClinux内核简介 • uCLinux 是Linux 2.0核心的分支,是针对没有 MMU管理单元的微控制器 • 继承了Linux的大多数特性 • 多数的Linux下应用程序和驱动程序都可以在uClinux下 运行 • 内核精简 • Kernel < 512KB • Kernel+root < 900KB • 并入linux 2.6内核中 uClinux与linux的区别(1) 内存管理 • uClinux运行于没有MMU的处理器上 • 使用平坦式(flat)内存管理模式,虚拟内 存到物理内存是一对一的映射关系 • 对于应用程序,使用固定的栈空间。加载应 用程序的时候需要重新定位 • 可用内存空间的大小受到物理内存的限制 uClinux与linux的区别(2) fork与vfork • uClinux 的多进程管理通过vfork 来实 现,uClinux只能支持vfork • vfork使父进程锁定直到子进程exec() 或exit() 注:uClinux的应用程序的多线程可以依赖 于标准C库来实现(uClibc) uClinux与uCOS-II(1) • uClinux源于linux,是一个很完整的系统,包 括: • 多任务调度 • 内存管理 • 文件系统(及接口) • 设备驱动程序 • 完整的TCP/IP的支持 • 源码开放,支持广泛(GUI、FS、驱动程序等等) uClinux与uCOS-II(2) uCOS-II • 源码开放,内核简单,易于学习和移植 • 占先式内核,实时性好 • 只有多任务调度的简单内核 • 内存管理过于简单,几乎没有动态内存管理功能 • 文件系统和图形界面需要外挂 • 对于设备驱动程序没有专门统一的接口 uClinux的实时性问题 • uClinux内核不关心实时性问题 • 可以和RTLinux配合来实现实时 • RTLinux处理实时任务,非实时任务由linux完 成 • RTLinux是为linux提供实时性的方法,同样也 适用于uClinux。通过RTLinux的patch,可以满 足uClinux对实时性的需求 uClinux的移植版本 • Motorola DragonBall、68K • Motorola Coldfire • ARM7TDMI、ARM9TDMI(ARM940T) • Altera Nios • … www.uClinux.org uClinux 的内核组成 • 初始化程序段(init) 32k 左右 • 数据段(data) 50~100k 左右 • 未初始化数据段(bss) 100k~150k 左右 • 代码段(text) 300k 左右 • (init、data、bss 和text 的地址是由编译 链接时的定位文件vmlinux.lds 决定的) • 文件系统(romfs) > 80k 左右 移植uClinux的主要工作 • 选择处理器对应的交叉编译器 • 选择并修改Bootloader • 修改链接文件(vmlinux-armv.lds.in),定位各 个数据段 • 定义系统定时器、控制台(Console) • 编写中断的控制函数 • 定义根文件系统 • 编写其他系统设备驱动… |
|
|
|
|