S3C2440的Linux内核移植和yaffs2文件系统制作
S3C2440移植linux3.4.2内核之内核裁剪

S3C2440移植linux3.4.2内核之内核裁剪上一节S3C2440移植linux3.4.2内核之支持YAFFS文件系统我们修改了内核支持了yaffs2文件系统,这节我们裁剪内核。
为什么要裁剪内核?因为mtd的kernel分区只有2M大,而实际内核有2.37MB,所以需要裁剪到小于2M(或者修改mtd分区值)首先裁剪内核里无关的CPU/单板文件通过vi .config,然后搜索2440,如下图所示:然后参考上图,make menuconfig进入System Type ---> SAMSUNG S3C24XX SoCs Support:如上图所示,CPU下只选择2440,单板文件下只选择SMDK2440以及MINI2440相关裁剪无关的文件系统ext2、ext3、ext4重新make menuconfig,进入File systems,去掉: < > Second extended fs support //ext2< > Ext3 journalling file system support< > The Extended 4 (ext4) filesystem裁剪光盘文件系统CD-ROM进入File systems---> CD-ROM/DVD Filesystems,去掉:< > ISO 9660 CDROM file system support裁剪不常用的杂项文件系统进入File systems---> Miscellaneous filesystems,去掉:< > Compressed ROM file system support (cramfs) // cramfs压缩文件系统[ ] Include support for ZLIB compressed file systems //zlib 压缩文件系统< > ROM file system support // Romfs通过内核启动信息来裁剪如下图所示,内核启动时,看到初始化了PS2鼠标驱动由于,我们2440板子只有USB接口,所以需要裁剪掉PS2鼠标驱动:重新make menuconfig,进入Device Drivers-> Input device support,去掉:[ ] Provide legacy /dev/psaux device //PS2鼠标鼠标指向的鼠标设备文件[ ] Mice ---> //其它各种鼠标驱动,包括PS2鼠标、I2C鼠标、触摸板等[ ] PS/2mouse通过.config文件的内容来裁剪通过vi .config,找到如下图所示,由于CONFIG_TOUCHSCREEN_USB(USB触摸板)很少见到,所以去掉USB-based Watchdog Cards(基于usb的看门狗卡)如下图所示,这个看门狗卡很少用到,所以去掉CONFIG_SSB_POSSIBLEUSB-based Watchdog Cards(基于usb的看门狗卡)Sonics Silicon Backplane (Sonics公司下的Silicon底板)如下图所示,这个公司的产品没有用到,所以去掉CONFIG_BCMA_POSSIBLE找到如下图所示,由于CONFIG_SND_USB (USB声卡)没用到,所以去掉去掉CONFIG_USB_LIBUSUAL,没用到最后通过上节查找的裁剪内容,来make menuconfig去掉CONFIG_TOUCHSCREEN_USB-> Device Drivers-> Input device support-> Generic input layer-> Touchscreens<*> Samsung S3C2410/generic touchscreen input driver //加上自带的触摸屏驱动< > USB Touchscreen Driver //去掉USB触摸屏驱动去掉CONFIG_SSB_POSSIBLE搜索如下图所示,该宏是被别的选项设置,所以去掉不了:去掉CONFIG_BCMA_POSSIBLE。
飞凌2440内核移植

宿主机:ubuntu9.04目标机:飞凌OK2440开发板交叉编译器:arm-linux-gcc-3.4.1交叉编译器路径:/usr/local/arm/3.4.1要移植的内核版本:linux-2.6.33文件系统类型:yaffs2 (目前使用光盘中linux-2.6.28.7的文件系统)欢迎大家一起讨论,请各位指正。
另外请回帖的各位老师、同学、工程师写清楚移植过程。
如果只是通篇的问题,很难判断哪里有问题。
下载解压内核首先,从官网上下载linux-2.6.33的内核。
ftp:///pub/linux/kernel/v2.6/可以找到。
新建目录mkdir /file/fl。
将内核源码包拷贝到/file/fl的目录下。
解压源码包tar zxvf linux-2.6.33.tar.gz移植yaffs2驱动下载最新的驱动/cgi-bin/ ... fs2.tar.gz?view=tar解压在/file/fl下tar zxvf yaffs2.tar.gz进入yaffs2,cd yaffs2给内核打补丁./patch-ker.sh c /file/fl/linux-2.6.33成功后打印信息Updating /file/fl/linux-2.6.33/fs/KconfigUpdating /file/fl/linux-2.6.33/fs/Makefile修改机器码飞凌开发板的bootloader默认的机器码是193,所以我们在使用smdk2440机器的时候,需要修改机器码。
修改arch/arm/tools/mach-types。
将s3c2410 ARCH_S3C2410 S3C2410 193s3c2440 ARCH_S3C2440 S3C2440 362改成s3c2440 ARCH_S3C2440 S3C2440 193指定目标板machine、编译器和编译器路径修改linux-2.6.33/Makefile,将ARCH ?= $(SUBARCH)CROSS_COMPILE ?=修改成#ARCH ?= $(SUBARCH)#CROSS_COMPILE ?=ARCH ?= armCROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux-增加devfs文件管理器的支持我们所用的文件系统使用的是devfs文件管理器。
S3C2440系统的内核与文件系统移植

首先:在汇编中初始化堆栈,中断向量表,MMU,时钟,串口等,然后跳到C语言的Main 函数。
这部分代码小于4K,放在block0。
这个Main函数用来将第二段代码拷备到DRAM 中并执行。
其次:进入第二段代码。
第二段代码也是先在汇编中初始化堆栈,中断向量表等,然后跳到C语言的Main函数。
这部分代码就不用有4K限制了,具体大小由第一段代码决定,因为它本身由第一段代码来搬运。
这个Main函数用来显示开机图片以及进度条。
然后视串口接收信息运行带有USB下载NK的Eboot或是读取NK映像,启动WINCE系统。
最后:进入第三段代码。
这段代码用于通过USB将PC上的NK.nb0或NK.bin文件下载进NANDFLASH并运行。
可见,扬创公司光bootloader就分成了三个部分,即3个bin文件组成。
然后分别将这三段二进制代码下载进分别从block0,block2,block8(block12)开始的三块。
具体烧写手段采用老掉牙的giveio烧写,就是曾经大名鼎鼎的SJF2440了,相信不少嵌入式高手都用过,哈哈。
如果不小心将bootloader弄丢了,再重烧一片,得等上好几分钟,足够你到外面跑上几千米再回来这么长了。
尽管如此,我们的扬创公司仍然拿他们的代码当宝,死活不肯开源。
要知道对于买你们板子的人,都是来学习的呀!学习嵌入式系统,bootloader是最基础也是进入嵌入式行业的敲门砖,没有了代码,无疑给学习添加了很大的麻烦,而扬创官方回答却是:用户开发产品用不着修改bootloader.我看扬创没开发过东西,不了解行情。
不说这么多废话了,说多了无益,让我们一起来揭开bootloader的神秘的面纱吧!先说下我移植的bootloader的功能,以及烧录时间,和扬创的做下对比。
第一次下载bootloader到NANDFLASH的方法:方法一:通过扬创的老掉牙的方法,先在ADS1.2里面生成bootloader.bin文件,然后用SJF2440烧写工具,配合giveio将BIN文件烧写进从block0开始的块。
Linux内核分析及在S3C2440上移植过程

smdk_default_nand_part 结构如下修改:
使用以下命令启动 NAND Flash 上的内核。
static struct mtd_partition smdk_default_nand_
nboot 0x32000000 0 0
(4)顶层 Makefile 和 arch/¥(ARCH)/Makefile 设置了 可以影响所有文件的编译、连接选项:DFLAGS、AFLAGS、LD- FLAGS、ARFLAGS。
(5) 各级子目录下的 Makefile 中可以设置能够影响当 前目录下所有文件的编译、连接选项,如 EXTRA_CFLAGS 等, 还可以设置能影响某个文件的编译选项如 CFLAGS¥@ 等。
1.1 硬件平台 本文使用的是 mini2440,它采用 Samsung S3C2440 为 微处理器,主频 400MHz,最高 533Mhz,并采用专业稳定的 CPU 内核电源芯片和复位芯片来保证系统运行时的稳定性。 SDRAM 内存采用 32bit 数据总线,时钟频率高达 100MHz。 mini2440 的 PCB 采用沉金工艺的四层板设计,专业等长布 线,保证关键信号线的信号完整性。
文献标识码:A
文章编号:1671-4792-(2010)1-0173-03
Abstract: This article introduces Samsung's ARM9-based S3C2440 chip embedded Linux system transplant pro-
cess, and builds the basic ARM9-Linux development environment. Cutting and transplanting Linux kernel after
本文描述了将Linux移植到基于S3C2410处理器目标板上的方法与过程

本文描述了将Linux移植到基于S3C2410处理器目标板上的方法与过程。
介绍了目标平台和Linux,并说明了如何搭建移植环境,着重介绍了Bootloader的架构和功能以及Linux内核的移植。
结果证明该方法是可行的。
移植后Linux 在嵌入式系统中运行良好。
关键词:嵌入式系统;移植;Linux内核;S3C2410处理器引言嵌人式系统就是以应用为中心、以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
ARM嵌人式芯片是一种高性能、低功耗的RISC芯片。
它由英国ARM公司设计,世界上几乎所有的主要半导体生产商都生产基于ARM体系机构的通用芯片,或在其专用芯片中应用相关ARM技术。
在2001年基于ARM内核的处理器占市场份额的75%,成为业界的龙头。
Linux是免费发行的、快速高效的操作系统,Linux的出现在计算机世界引发了一场革命。
Linux操作系统以代码开放、功能强大又易于移植成为嵌入式操作新兴力量。
嵌人式Linux是按照嵌人式操作系统的要求设计的一种小型操作系统,由一个内核以及一些根据需要进行定制的系统模块组成。
其内核很小,一般只有几百kb,即使加上其他必要的模块和应用程序,所需的存储空间也很小。
它非常适合于移植到嵌入式系统中去,同时它具有多任务多进程的系统特征,有些还具有实时特征。
1 目标平台介绍文中使用的目标平台S3C2410是SAMSUNG公司使用920T处理器内核开发的一款嵌入式处理器。
S3C2410是Samsung公司专门为PDA、Intenet设备和手持设备等专门开发的微处理器。
该芯片还包含有16kB一体化的Cache/MMU,这一特性使开发人员能够将Linux和VXwork移植到基于该处理器的目标系统中。
该目标板的系统资源如下:(1)CPU:S3C2410微处理器,工作频率为200MHz。
(2)Flash:16MB。
(3)SDRAM:64MB SDRAM。
Linux系统在S3C2440上移植的分析与实现_李佳佳

2
搭建自己的交叉编译环境
本文选择通过 crosstool 工具来实现一次编译生成
交叉编译工具链 , 该方法相对于通过分布编译 , 或者 安装编译工具所需的库和源代码来生成交叉编译工具 链的方法 , 其实现过程更简单 , 耗时更少 . 然而直接 使用网上制作好的工具链, 虽然简单省事但其灵活性 远远不及自己定制的工具链, 甚至有时出现编译器版
首先在 crosstool-0.43 目录下编辑 arm.dat 和 gcc-4.
lib_arm 和 lib_generic; 删除 include 目录下 asm-XXX
的文件, 只留下 asm-arm; 删除 include/configs 目录下 除 smdk2410.h 以外的其它所有配置头文件[2].
#!/bin/sh set–ex TARBALLS_DIR=$HOME$/downloads #定义工具链所存放的位置 RESULT_TOP=/home/dejaneli/crosstool #定义工具链的安装目录 export TARBALLS_DIR RESULT_TOP GCC_LANGUAGES=”c,c++” #定义支持 c, c++语言 export GCC_LANGUAGES mkdir–p $RESULT_TOP #创建/home/dejaneli/crosstool 目录 Eval‘cat arm.dat gcc-4.3.3-glibc-2.8.dat’sh all.sh– notest #编译工具链 echo Done 2.3 建立配置文件
arm.dat 中 的 “TARGET=arm-none-unkonwn-linux” 为 “TARGET=arm-linux”, 而 gcc-4.3.3-glibc-2.8.dat 的内
linux 2.6.22.1内核在s3c2410平台的移植(完美版)

linux 2.6.22.1内核在s3c2410平台的移植(完美版)-------------------作者:无猫++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------bootloader编译环境:vivi版本:0.1.4交叉编译器(CROSS-COMPILE)版本:2.95.3(下载地址略:网上很多搜下。
)操作系统:Fedora 7======================================linux内核编译环境:内核版本:linux2.6.22.1交叉编译器(CROSS-COMPILE)版本:4.2.0(下载地址:/gnu_toolchains/arm/download.html)注意:下载选项,要选ARM EABI 的选项,和IA32 GNU/linux操作系统:Fedora 7======================================文件系统编译环境:busybox1.5.1,或1.4.2交叉编译器(CROSS-COMPILE)版本:3.3.2(下载地址:/pub/toolchain/)操作系统:Fedora 7----------------------------------------------硬件:板子是北京恒颐高科技术有限公司的H2410EB内存:64MB SDRAM(2×16M×16位);CPU:S3C2410 ARM处理器,Nor Flash:2MB的Nor Flash,用于固化测试程序(用来下载bootloader,内核,或文件系统);NANDflash: 64MB的Nand Flash,用于存储Bootloader、Linux内核及文件系统、应用程序和数据;++++++++++++++++++++++++++++++++++++++++++++++=================================================================== ===============================一:编译环境搭建=================================================================== ===============================一:搭建交叉编译环境说明:由于编译交叉编译环境比较繁琐,建议大家用已经编译好的交叉编译环境。
基于S3C2440的嵌入式Linux根文件系统构建

busybox 常被很形象 地 称 为嵌 入 式 Linux 系统 中 的 “瑞士
1 根文件
军刀”,因为它将许多常用的 UNIX 命令和工具结合到了 一 个 单独的可执行程序中。 虽然与相应的 GNU 工具比较,busybox
Linux 要 在 一 个 分 区 上 存 放 系 统 启 动 所 必 需 的 文 件 ,如 所提 供 的功 能 和 参数 略 少 ,但在 比 较 小的 系 统 或 者 嵌 入 式 系
基本的文件合称为根文件系统 ,它们存放在一个分区中[1]。
所有命令都通过“插件”的方式集中到一个可执行文件中,在
根文件系统一般包括:1) 基本的文件系统结构 , 包含一 实 际 应 用 过 程 中 通 过 不 同 的 符 号 链 接 来 确 定 到 底 要 执 行 哪
些必须的目录, 比如:/dev, /proc, /bin, /etc, /lib, /usr, /tmp; 个操作。 例如最终生成的可执行文件为 busybox,当为它建立
பைடு நூலகம்
在/home/work/rootby/etc 目录下存放各种配置文件。 这些
文件都是可选的, 它们依赖于系统中所拥有的应用程序,依
赖于 这 些程 序 是 否需 要 配 置文 件[4]。
4.1.1 创建 etc/inittab 文件
init 进 程 根 据/etc/inittab 文 件 来 创 建 其 他 子 进 程 , 比 如
方法具有很强的实用性,降低了嵌入式系统的开发门槛。
关键词: 根文件系统; Linux; S3C2440; busybox; ARM
中图分类号: TP316
文献标识码: A
文 章 编 号 :1674-6236(2010)06-0020-03
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
L i n u x内核移植和根文件系统制作第一章移植内核 (2)1.1 Linux内核基础知识 (2)1.1.1 Linux版本 (2)1.1.2 什么是标准内核 (2)1.1.3 Linux操作系统的分类 (3)1.1.4 linux内核的选择 (4)1.2 Linux内核启动过程概述 (5)1.2.1 Bootloader启动过程 (5)1.2.2 Linux启动过程 (7)1.3 Linux内核移植 (10)1.3.1 移植内核和根文件系统准备工作 (10)1.3.2 修改Linux源码中参数 (11)1.3.3 配置Linux内核 (15)1.3.4、编译内核 (17)第二章制作根文件系统 (19)2.1 根文件系统预备知识 (19)2.2、构建根文件按系统 (19)2.2.1、建立根文件系统目录 (19)2.2.2、建立动态链接库 (21)2.2.3 交叉编译Bosybox (21)2.2.4 建立etc目录下的配置文件 (24)2.2.5 制作根文件系统映像文件 (26)第三章启动系统 (27)第四章总结 (34)第一章移植内核1.1 Linux内核基础知识在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起。
1.1.1 Linux版本Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中:VERSION = 2PA TCHLEVEL = 6SUBLEVEL = 29EXTRA VERSION = .1其中的“VERSION”和“PA TCHLEVEL”组成主版本号,比如 2.4、2.5、2.6等,稳定版本的德主版本号用偶数表示(比如2.6的内核),开发中的版本号用奇数表示(比如2.5),它是下一个稳定版本内核的前身。
“SUBLEVEL”称为次版本号,它不分奇偶,顺序递增,每隔1~2个月发布一个稳定版本。
“EXTRA VERSION”称为扩展版本号,它不分奇偶,顺序递增,每周发布几次扩展本版号。
1.1.2 什么是标准内核按照资料上的习惯说法,标准内核(或称基础内核)就是指主要在/维护和获取的内核,实际上它也有平台属性的。
这些linux 内核并不总是适用于所有linux支持的体系结构。
实际上,这些内核版本很多时候并不是为一些流行的嵌入式linux系统开发的,也很少运行于这些嵌入式linux 系统上,这个站点上的内核首先确保的是在Intel X86体系结构上可以正常运行,它是基于X86处理器的内核,如对linux-2.4.18.tar.bz2的配置make menuconfig 时就可以看到,Processor type and features--->中只有386、486、586/K5/5x86/6x86/6x86MX、Pentium-Classic、Pentium-MMX、Pentium-Pro/Celeron/Pentium-II、Pentium-III/Celeron(Coppermine)、Pentium-4、K6/K6-II/K6-III 、Athlon/Duron/K7 、Elan 、Crusoe、Winchip-C6 、Winchip-2 、Winchip-2A/Winchip-3 、CyrixIII/C3 选项,而没有类似Samsun 2410等其他芯片的选择。
如果需要用在其他特定的处理器平台上就需要对内核进行打补丁,形成不同的嵌入式内核。
实际上,不同处理器系统的内核下载站点中提供的也往往是补丁patch而已,故原x86平台上的内核变成了基础内核,也被称为标准内核了。
1.1.3 Linux操作系统的分类第一层次分类:以主要功能差异和发行组织区分(基础linux系统/内核)。
1、标准linux2、μClinux无MMU支持的linux系统,运行在无MMU的CPU上。
3、Linux-RT是最早在linux上实现硬实时支持的linux发行版本。
4、Linux/RTAI支持硬实时的linux,于RT-linux最大的不同之处在于RTAI定义了RTHAL,它将RTAI需要在linux中修改的部分定义成一组API接口,RTAI只使用API 接口与linux交互。
5、Embedix由Lineo公司开发,基于PowerPC和x86平台开发的。
6、Blue Cat Linux7、Hard Hat Linux8、其他第二层分类:以应用的嵌入式平台区分(嵌入式linux系统/内核,使上面第一类中的各种linux系统扩展为对特定目标硬件的支持,成为一种具体的嵌入式linux 系统)由于嵌入式系统的发展与linux内核的发展是不同步的,所以为了要找一个能够运行于目标系统上的内核,需要对内核进行选择、配置和定制。
因为每一种系统都是国际上不同的内核开发小组维护的,因此选择linux内核源码的站点也不尽相同。
第二层分类中的linux系统/内核相对于第一层分类的标准内核来说,也可以称为嵌入式linxu系统/内核。
如应用在ARM平台上的嵌入式Linux系统通常有arm-linux(常运行在arm9平台上),μClinux(常用在arm7平台上),在标准linux 基础上扩展对其他的平台的支持往往通过安装patch实现,如armlinux就是对linux安装rmk补丁(如patch-2.4.18-rmk7.bz2)形成的,只有安装了这些补丁,内核才能顺利地移植到ARM Linux上。
也有些是已经安装好补丁的内核源码包,如linux-2.4.18-rmk7.tar.bz2。
不同处理器系统的内核/内核补丁下载站点:处理器系统适合的内核站点下载方式x86 / ftp, http, rsyncARM /developer/ ftp, rsyncPowerPC / ftp, http, rsync, BitKeeperMIPS / ftp, cvsSuperH / cvs, BitKeeperM68K / ftp, httpnon-MMU CPUs / ftp, http这些站点不仅仅是linux内核站点,它们可能直接提供了针对你的目标硬件系统的linux内核版本。
1.1.4 linux内核的选择选择内核版本是很困难的,应该与负责维护该内核的小组保持联系,方法是通过订阅一些合适的邮件列表(maillist)并查看邮件中相关的重要新闻,以及浏览一些主要站点,可以得到该内核的最新发展动态。
如针对ARM的Linux内核,可以访问/ 并订阅该网站上提供的maillist就可以了。
如果觉得查阅邮箱中的邮件列表耗费太多时间,那么至少每周访问所关心的内核网站,并阅读Kernel Traffic提供的过去一周中在内核邮件清单中发生的重要的摘要,网址为/kernel-traffic 这样就可以得到相关Linux内核的最新信息。
并不是Linux的每个版本都适合ARM-Linux的移植,可以加入其邮件列表(maillist)以获得内核版本所支持硬件的相关信息,表中列出的资源可以帮助你找到哪些没有列出的功能可以被你的系统支持。
ARM Linux的移植,建议使用2.4.x或 2.6.x版本。
Linux内核补丁可以到ARM Linux的ftp (ftp:// )下载。
1.2 Linux内核启动过程概述一个嵌入式Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序。
其中Bootloader是系统启动或复位以后执行的第一段代码,它主要用来初始化处理器及外设,然后调用Linux 内核。
Linux 内核在完成系统的初始化之后需要挂载某个文件系统做为根文件系统(Root Filesystem)。
根文件系统是Linux 系统的核心组成部分,它可以做为Linux 系统中文件和数据的存储区域,通常它还包括系统配置文件和运行应用软件所需要的库。
应用程序可以说是嵌入式系统的“灵魂”,它所实现的功能通常就是设计该嵌入式系统所要达到的目标。
如果没有应用程序的支持,任何硬件上设计精良的嵌入式系统都没有实用意义。
1.2.1 Bootloader启动过程Bootloader在运行过程中虽然具有初始化系统和执行用户输入的命令等作用,但它最根本的功能就是为了启动Linux 内核。
1 、Bootloader的概念和作用Bootloader是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序,其作用类似于PC 机上的BIOS。
在完成对系统的初始化任务之后,它会将非易失性存储器(通常是Flash或DOC等)中的Linux 内核拷贝到RAM 中去,然后跳转到内核的第一条指令处继续执行,从而启动Linux 内核。
由此可见,Bootloader 和Linux 内核有着密不可分的联系,要想清楚的了解Linux内核的启动过程,我们必须先得认识Bootloader的执行过程,这样才能对嵌入式系统的整个启动过程有清晰的掌握。
2 、Bootloader的执行过程不同的处理器上电或复位后执行的第一条指令地址并不相同,对于ARM 处理器来说,该地址为0x00000000。
对于一般的嵌入式系统,通常把Flash 等非易失性存储器映射到这个地址处,而Bootloader就位于该存储器的最前端,所以系统上电或复位后执行的第一段程序便是Bootloader。
而因为存储Bootloader的存储器不同,Bootloader的执行过程也并不相同,下面将具体分析。
嵌入式系统中广泛采用的非易失性存储器通常是Flash,而Flash 又分为Nor Flash 和Nand Flash 两种。
它们之间的不同在于:Nor Flash 支持芯片内执行(XIP,eXecute In Place),这样代码可以在Flash上直接执行而不必拷贝到RAM 中去执行。
而Nand Flash并不支持XIP,所以要想执行Nand Flash 上的代码,必须先将其拷贝到RAM中去,然后跳到RAM 中去执行。
3、Bootloader的功能实际应用中的Bootloader根据所需功能的不同可以设计得很复杂,除完成基本的初始化系统和调用Linux 内核等基本任务外,还可以执行很多用户输入的命令,比如设置Linux 启动参数,给Flash 分区等;也可以设计得很简单,只完成最基本的功能。
但为了能达到启动Linux 内核的目的,所有的Bootloader 都必须具备以下功能:(1)、初始化RAM因为Linux 内核一般都会在RAM 中运行,所以在调用Linux 内核之前bootloader 必须设置和初始化RAM,为调用Linux内核做好准备。