您的位置 首页 观点

uclinux内核装备与削减

uclinux表示micro-control linux.即ldquo;微控制器领域中的Linux系统rdquo;,是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。u

uclinux表明micro-control linux.即“微控制器范畴中的Linux体系”,是Lineo公司的主打产品,一起也是开放源码的嵌入式Linux的模范之作。uCLinux主要是针对方针处理器没有存储办理单元MMU(Memory Management Unit)的嵌入式体系而规划的。它现已被成功地移植到了许多渠道上。由于没有MMU,其多任务的完结需求必定技巧。

uClinux是嵌入式Linux范畴非常重要的分支,已成功应用于路由器、机顶盒、PDA等范畴,与规范Linux在内存办理方面有着实质的差异。

Uclinux的装备和削减也是运用的华恒科技供给的源码包(用于hhbf531学习板)。咱们运用的开发板信息如下:

CPU:BF533

FLASH:S29AL004D-512KB

SDRAM:HY57V281620-16MB

这儿我不敢说“uclinux的移植”,而仅仅以“装备与削减”代之,是由于我觉得自己的作业真的谈不上什么移植。现成的源码包,一切的底层驱动都现已完结,咱们所要做的仅仅挑选自己需求的驱动、装备一下内核、做一些削减作业罢了。常常听到其他人说到“最近又完结了TImes;TImes;TImes;渠道的linux移植”,我都会有点忧虑:国内有多少工程师能真正从最初始的作业开端,完结一个渠道的体系移植——应该很少吧。

下面,我分以下进程简略介绍一下我的装备进程。

一,装备并在RAM中运转内核(不带根文件体系):

由于咱们的flash空间有限,在没有削减之前,就算不带根文件体系,也无法烧写到flash内保存;所以先测验下载到RAM中运转。别的,咱们现在的开发板上没有网络功用,只能通过串口下载,所以在这儿装备内核的进程中,做一些简略削减,以便节省下载时刻。

解压源码包后,进入uclinux目录:

#cd uClinux-dist

设定穿插东西链:

#PATH=”/usr/local/bin/gcc-bfin-3.4-uclinux/bin/:$PATH”

进入装备:

#make menuconfig

运转后,进入“MainMenu”装备页,能够在此挑选Vender/Product和Kernel/Library/Defaults等内容。依据咱们运用的渠道,咱们挑选:Vender-AnalogDevices,Product-HHBF533(或许HHBF531),Libc-uClibc;假如要装备内核和应用程序还要别离选中“Customize Kernel SetTIngs”、“Customize Vender/User Settings”。退出保存后,将顺次进入装备内核和装备应用程序页。

假如想独自装备内核,能够进入目录linux-2.6.x/内运转“make menuconfig”。装备应用程序在这个源码包里如同没有独自的config选项。这些关于内核源码包结构的基本知识,需求咱们提早了解。

下面,咱们来装备内核。

装备一个能够在咱们的SDRAM中运转的内核很简略,由于底层作业都现已完结。咱们只需求装备一下处理器相关内容即可。处理器选项坐落内核装备页的“Blackfin Processer Options”。进入该装备页,进行如下装备:

CPU – BF533

System type – BF533-HHBF

Board Customizations – 依据你的开发板时钟、SDRAM信息装备,其他不必修正。

Clock Settings – 撤销“Re-programClocks while Kernel boots”,默以为u-boot的时钟装备。

其他选项不必修正,各项装备功用介绍见文档《附.Linux 2.6.19.x内核编译装备选项简介》。

以上装备正确后,下载到你的开发板上,应该就能够运转了。但通过串口下载速度太慢,咱们先去掉一些不需求的驱动。由于咱们没有网络功用,所以把网络及其驱动悉数撤销,能够削减150KB左右的空间;咱们也不需求音视频功用,所以把音视频驱动也撤销,又能够减小很大空间。如此装备后,咱们能够测验下载到SDRAM中运转了。

现在,咱们还不想削减根文件体系,所以,咱们想得到一个不带根文件体系的紧缩内核镜像。由于华恒供给的源码包,编译后不能得到紧缩的不带根文件体系的镜像,所以咱们要通过修正Makefile得到咱们需求的编译成果。

需求修正的Makefile坐落uClinux-dist目录下,翻开该Makefile,在“.PHONY:linux”项的”ln –f $(LINUXDIR)/vmlinux $(LINUXDIR)/linux;\”句子后,增加以下内容。


这样在uClinux-dist目录下履行“make linux”就能够生成紧缩的不带根文件体系的内核镜像了,该镜像文件为uImage.bin,坐落linux-2.6.x目录内。现在,能够将得到的内核下载到SDRAM中运转了。由于是紧缩内核,所以运转时要运用u-boot的bootm指令。至于u-boot指令的运用方法,自行学习。

Makefile也是编译内核的基础知识,需求咱们逐渐把握。

这样,该步的作业就能够告一段落了。

下载到SDRAM中,假如解压后无法运转,先检查一下上述装备操作是否有误。假如确认无误,就需求剖析内核的履行进程,仔细剖析问题了。接下来简略介绍一下内核履行流程。

二,内核履行流程:

接受上篇《u-boot引导uclinux进程剖析》,介绍内核发动流程。

A,内核vmlinux进口

u-boot履行“(*appl)(cmdline);”句子后,控制权就移交给linux内核,appl变量指向的地址便是linux内核的首地址。

Linux内核履行的第一个文件是/linux-2.6.x/arch/blackfin/mach-bf533/head.S。通过一系列的初始化,跳转到start_kernel()函数,即进入linux体系初始化阶段。

B, Linux体系初始化

Start_kernel()函数坐落文件/linux-2.6.x/init/main.c中,是linux内核通用的初始化函数。不管关于什么体系结构的linux,都要履行这个函数。


Start_kernel()函数担任初始化内核各子体系,最终调用rest_init(),发动一个叫作init的内核线程,持续初始化。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/136706.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部