第5章 交叉开发环境_第1页
第5章 交叉开发环境_第2页
第5章 交叉开发环境_第3页
第5章 交叉开发环境_第4页
第5章 交叉开发环境_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 第第5章章 交叉开发环境交叉开发环境及及内核编译内核编译 5.1 交叉开发环境介绍交叉开发环境介绍 5.2 交叉开发工具链交叉开发工具链 5.3 主机开发环境配置主机开发环境配置 5.4 启动目标板启动目标板 5.5 应用程序的远程交叉调试应用程序的远程交叉调试 5.6 Bootloader介绍介绍 5.7 内核的编译内核的编译 2 5.1 交叉开发环境介绍交叉开发环境介绍 n5.1.1 交叉开发概念模型交叉开发概念模型 n绝大多数的应用软件开发都是以绝大多数的应用软件开发都是以本地本地方式进行的,即本机方式进行的,即本机 (HOST)开发、调试,本机运行的方式。这种方式通常)开发、调试,

2、本机运行的方式。这种方式通常 不适合于嵌入式系统的软件开发,因为对于嵌入式系统的不适合于嵌入式系统的软件开发,因为对于嵌入式系统的 开发,没有足够的资源在本机(即板子系统)运行开发工开发,没有足够的资源在本机(即板子系统)运行开发工 具和调试工具。具和调试工具。 3 下载内核镜像下载内核镜像 HOST 内核映像内核映像 根文件系统根文件系统 TARGET 内核映像内核映像 在主机上,可以安装开发工具,编辑、编译目标板的在主机上,可以安装开发工具,编辑、编译目标板的Linux 引导程序、内核和文件系统,然后在目标板上运行。引导程序、内核和文件系统,然后在目标板上运行。 通常这种在主机环境下开发,

3、在目标板上运行的开发模式叫通常这种在主机环境下开发,在目标板上运行的开发模式叫 做交叉开发。一方面开发者可以在熟悉的主机环境下进行程做交叉开发。一方面开发者可以在熟悉的主机环境下进行程 序开发;另一方面又可以在目标板上运行调试程序,可以避序开发;另一方面又可以在目标板上运行调试程序,可以避 免受到目标板硬件的限制。免受到目标板硬件的限制。 挂接挂接NFS文件系统文件系统 图图5-1 交叉开发模型交叉开发模型 各种连接方式各种连接方式 4 5.1.2 目标板与主机之间的连接目标板与主机之间的连接 n串口连接串口连接 q优点:使用简单优点:使用简单 q缺点:通讯速率慢,不适合大数据量传输缺点:通讯

4、速率慢,不适合大数据量传输 n以太网接口以太网接口 q优点:高度灵活,相对简单,易于实现优点:高度灵活,相对简单,易于实现 q缺点:驱动程序实现较麻烦缺点:驱动程序实现较麻烦 nUSB接口接口 q优点:即插即用,通讯速度快优点:即插即用,通讯速度快 q缺点:缺点:USB设备区分主从端,分别要有不同的驱动程序设备区分主从端,分别要有不同的驱动程序 nJTAG接口接口 q用于芯片内部的测试及对系统进行仿真测试用于芯片内部的测试及对系统进行仿真测试 5 5.1.3 文件传输文件传输 n串口传输方式串口传输方式 q通过通过minicom或或windows超级终端等工具都可以通过串口发送超级终端等工具都

5、可以通过串口发送 文件。通常波特率设置为:文件。通常波特率设置为:115200bit/s,8bit数据位,不带校数据位,不带校 验位。验位。 n网络传输方式网络传输方式 q一般是基于一般是基于TFTP协议,它是基于协议,它是基于UDP协议传输。协议传输。 nUSB接口传输方式接口传输方式 q分为主从设备,主机端为主设备端,目标板为从设备端。分为主从设备,主机端为主设备端,目标板为从设备端。 nJTAG接口传输方式接口传输方式 qJTAG仿真器与主机之间的连接通常通过串口、并口、以太网或仿真器与主机之间的连接通常通过串口、并口、以太网或 USB接口。接口。 n移动存储设备移动存储设备 q软盘、软

6、盘、CDROM、USB等存储介质。等存储介质。 6 5.1.4 网络文件系统网络文件系统 n网络文件系统(网络文件系统(NFS,Net File System)允许一个)允许一个 系统在网络上共享目录和文件。系统在网络上共享目录和文件。Linux支持支持NFS,并,并 且可以配置启动且可以配置启动NFS网络服务。网络服务。 NFS具有以下优点:具有以下优点: q本地工作站可以使用更少的磁盘空间;本地工作站可以使用更少的磁盘空间; q用户可以通过网络访问共享目录;用户可以通过网络访问共享目录; q软驱、软驱、CDROM等存储设备可以在网络上共享使用;等存储设备可以在网络上共享使用; qNFS至少

7、有一台服务器和一台客户端两部分。至少有一台服务器和一台客户端两部分。 nNFS的这些优点正好适合于嵌入式系统的开发。目的这些优点正好适合于嵌入式系统的开发。目 标板没有足够的存储空间,标板没有足够的存储空间,Linux内核挂接网络根文内核挂接网络根文 件系统可以避免使用本地存储介质,快速建立件系统可以避免使用本地存储介质,快速建立Linux 系统。系统。 7 5.2 交叉开发工具链交叉开发工具链 掌握嵌入式开发工具链的使用是进行嵌入式开发 的前提条件之一 与主流开发工具类似,嵌入式交叉开发工具也包 括 交叉编译器,编译器能够把一个源程序编译生成一个 由机器语言构成的可执行程序。虽然交叉编译器本

8、身 也在主机上运行,但编译生成的不是主机认识的机器 语言,而是目标机能够识别的机器语言。 调试工具,即能够对执行程序进行源码或汇编级调试 的软件 软件工程工具,用于协助多人开发或大型软件项目的 管理的软件 8 n5.2.1 相关工具链软件相关工具链软件 qGCC是编译器,不但支持是编译器,不但支持C/C+语言,而且支语言,而且支 持持FORTRAN、JAVA等语言,对于等语言,对于C/C+语语 言的完整支持,需要支持言的完整支持,需要支持glibc库;库; 9 qBINUTILS是二进制程序处理工具,包括链接器、是二进制程序处理工具,包括链接器、 汇编器等目标程序处理的工具;汇编器等目标程序处

9、理的工具; qGLIBC是应用程序编程的函数库软件包,可以是应用程序编程的函数库软件包,可以 编译生成静态库和共享库;编译生成静态库和共享库; qGDB是调试工具,对程序进行源码调试;是调试工具,对程序进行源码调试; qCrosstool软件实际上是一套脚本,用于编译软件实际上是一套脚本,用于编译 和测试大多数体系结构的各种和测试大多数体系结构的各种GCC和和glibc的版的版 本组合。本组合。 10 5.2.2 嵌入式系统开发的全过程嵌入式系统开发的全过程 11 q对于对于ARM体系结构的编译器,不少网站提供下载。体系结构的编译器,不少网站提供下载。 免费提供的工具链是包括免费提供的工具链是

10、包括Binutils和和GCC,但都不,但都不 提供提供gdb调试器。下面介绍几个调试器。下面介绍几个ARM Linux免费网免费网 站。站。 (1) .uk/(ARM Linux官方网官方网 站)站) ARM Linux工具链下载的工具链下载的HTTP和和FTP地址:地址: nhttp:/ .uk/pub/armlinux/toolchain nftp:/ .uk/pub/linux/arm/toolchain (2) http:/ (Montavista公司主页网公司主页网 站

11、)站) Montavista Linux能够支持各种体系结构的开发能够支持各种体系结构的开发 板,只对部分硬件平台提供预览版。板,只对部分硬件平台提供预览版。 5.2.3 获取交叉开发工具链获取交叉开发工具链 12 n以以ARM Linux站点提供的站点提供的cross-3.3.2.tar.bz2包包 为例:为例: qtar jxvf cross-3.3.2.tar.bz2 q这个工具链应该安装的路径是:这个工具链应该安装的路径是: /usr/local/arm/3.3.2 q然后在环境变量然后在环境变量PATH中添加路径,就可以直中添加路径,就可以直 接使用接使用arm-linux-gcc了

12、了 q$export PATH=$PATH:/usr/local/arm/3.3.2/bin 5.2.4 安装主机工具链安装主机工具链 13 5.3 主机开发环境配置主机开发环境配置 n5.3.1 主机环境配置主机环境配置 q$ ifconfig eth0 n5.3.2 串口控制串口控制 台工具台工具 14 n5.3.3 DHCP(动态主机配置协议动态主机配置协议)服务服务 q通过通过DHCP给目标板的给目标板的Bootloader或内核分配或内核分配IP地址地址; q需要配置需要配置dhcpd软件包中的软件包中的dhcpd.conf文件文件; n5.3.4 TFT

13、P服务服务 q简单的文件传输协议,适用于目标板简单的文件传输协议,适用于目标板Bootloader的使用,的使用, 但文件是基于但文件是基于UDP协议,文件传输是不可靠的。协议,文件传输是不可靠的。 n5.3.5 NFS服务服务 qNFS服务是通过服务是通过TCP/IP网络,用于文件共享的常用协议。它网络,用于文件共享的常用协议。它 提供了一种在提供了一种在UNIX和类和类UNIX系统间输出和挂载文件目录的系统间输出和挂载文件目录的 功能。它能很方便地将用户在宿主机功能。它能很方便地将用户在宿主机PC中的工作目录输出中的工作目录输出 到到ARM linux开发平台上(通俗地讲,即通过它可以在开

14、发开发平台上(通俗地讲,即通过它可以在开发 板上跑板上跑PC机上的程序)。机上的程序)。 q假设宿主机假设宿主机PC的的IP地址为地址为00,挂载,挂载NFS的方法的方法 如下:如下: qmount 00:/ /tmp (即即mount 宿主机的根目录宿主机的根目录 到开发板的到开发板的 /tmp) 15 5.4 启动目标板启动目标板 n5.4.1 系统引导过程系统引导过程 n多数内核多采用压缩格多数内核多采用压缩格 式,式,Linux系统的一般系统的一般 启动过程通常划分为内启动过程通常划分为内 核引导、内核启动和应核引导、内核启动和应 用程序启动

15、用程序启动3个阶段。个阶段。 Decompress Kernel Bootloader Initialize Hardware Initialize Device Driver Call Kernel Mount Root Filesystem Exicute /sbin/init Linux Kernel Login PromptStart Network ServicesStart X-windows User Program 图图5-2 Linux系统启动过程系统启动过程 16 n第一阶段是目标板硬件初始化,解压内核映像,再跳第一阶段是目标板硬件初始化,解压内核映像,再跳 转到内核映像入

16、口。这部分的工作一般由目标板的引转到内核映像入口。这部分的工作一般由目标板的引 导程序和内核映像的自引导程序完成。导程序和内核映像的自引导程序完成。 n第二阶段是内核的初始化,初始化设备驱动程序,挂第二阶段是内核的初始化,初始化设备驱动程序,挂 接根文件系统。这里是接根文件系统。这里是Linux内核通用的启动函数入内核通用的启动函数入 口。口。 n第三阶段是执行用户空间的第三阶段是执行用户空间的init程序,完成系统初始程序,完成系统初始 化、启动相关服务和管理用户登录等工作,这个阶段化、启动相关服务和管理用户登录等工作,这个阶段 也可以提供给用户交互界面,也可以自动执行应用程也可以提供给用户

17、交互界面,也可以自动执行应用程 序。序。 n在在Linux系统启动过程中,有两个关键点。一个是内系统启动过程中,有两个关键点。一个是内 核映像的解压启动,另一个是根文件系统的挂接。核映像的解压启动,另一个是根文件系统的挂接。 17 n5.4.2 内核解压启动内核解压启动 n目标板处理器上电或复位以后,首先执行引导程目标板处理器上电或复位以后,首先执行引导程 序(序(Bootloader),初始化内存等硬件,然后把),初始化内存等硬件,然后把 压缩的内核加载到内存中,最后跳转到内核映像压缩的内核加载到内存中,最后跳转到内核映像 入口执行。这样就把控制权完全交给内核映像。入口执行。这样就把控制权完

18、全交给内核映像。 n接下来内核继续执行,完成自解压或重定位,然接下来内核继续执行,完成自解压或重定位,然 后跳转到解压后的内核代码入口。这部分主要是后跳转到解压后的内核代码入口。这部分主要是 Linux内核的自引导程序,又叫内核的自引导程序,又叫Linux bootloader。相对比较简单,不可代替目标板上。相对比较简单,不可代替目标板上 的的Bootloader。 n目标板的目标板的Bootloader具有加载内核映像的功能。具有加载内核映像的功能。 在嵌入式在嵌入式Linux开发中,经常用到网络加载的方开发中,经常用到网络加载的方 式,就是通过式,就是通过TFTP协议把内核映像加载到目标

19、协议把内核映像加载到目标 板内存。板内存。 18 n5.4.3 挂接根文件系统挂接根文件系统 n由于文件和应用程序都要存储在文件系统中,所由于文件和应用程序都要存储在文件系统中,所 以以Linux 离不开文件系统。在内存启动的最后,离不开文件系统。在内存启动的最后, 必须挂接一个根文件系统。从文件系统的目录下必须挂接一个根文件系统。从文件系统的目录下 找到找到init程序,启动程序,启动init进程。进程。 n在交叉开发环境中,通常采用在交叉开发环境中,通常采用NFS文件系统。在文件系统。在 内核启动过程可以挂接内核启动过程可以挂接NFS根文件系统,这种方根文件系统,这种方 式可以极大地方便嵌

20、入式系统的开发。式可以极大地方便嵌入式系统的开发。 n要使目标板挂接要使目标板挂接NFS根文件系统,需要做两方面根文件系统,需要做两方面 的工作。一方面,是在主机端配置相应的网络服的工作。一方面,是在主机端配置相应的网络服 务;另一方面就是配置目标板的内核选项。务;另一方面就是配置目标板的内核选项。 19 5.5 应用程序的远程交叉调试应用程序的远程交叉调试 n对于交叉调试,交叉调试的对于交叉调试,交叉调试的gdb运行在开发主机上,而应运行在开发主机上,而应 用程序运行在目标板上。用程序运行在目标板上。 NFS 图图5-3 交叉调试模型交叉调试模型 gdbserver gdb 应用程序和 源码

21、 应用程序 HOST TARGET 以太网连接以太网连接 n在目标板上,通过在目标板上,通过 gdbserver控制要调控制要调 试的程序执行,同时试的程序执行,同时 与主机的与主机的gdb远程通远程通 讯,可以实现交叉调讯,可以实现交叉调 试的功能。这样,试的功能。这样, gdb交叉调试运行在交叉调试运行在 主机端,应用程序运主机端,应用程序运 行在目标板端。行在目标板端。 5.5.1 交叉调试模型交叉调试模型 20 5.5.2 交叉调试程序实例交叉调试程序实例 n1)、在主机上编译程序)、在主机上编译程序hello.c include void main(int argc, char *a

22、rgc) int i; for(i=0;i3;i+) printf(hello i=%dn”,i); n2)、交叉编译)、交叉编译 qarm-linux-gcc o hello hello.c n3)、把可执行程序复制到)、把可执行程序复制到NFS输出目录输出目录 qcp hello /usr/local/arm/3.3.2/rootfs 1、交叉编译、交叉编译 21 n4)、在目标板也可以访问同样的程序,执行)、在目标板也可以访问同样的程序,执行 n# ./hello hello i=1 hello i=2 hello i=3 n2、交叉调试、交叉调试 q1)在编译的时候加上)在编译的时候加

23、上 g 选项,使得包含调试信息选项,使得包含调试信息 n$ arm-linux-gcc g o hello hello.c q2)在目标板上启动)在目标板上启动gdbserver n# gdbserver :2345 hello q3)在主机端,启动)在主机端,启动DDD和和gdb调试程序调试程序 n$ ddd debugger arm-linux-gdb hello q4)在)在DDD下的窗口的下的窗口的GDB控制台下,建立连接控制台下,建立连接 n(gdb)target remote :2345 q5)设置断点,执行到断点)设置断点,执行到断点 n(gdb )b main 22 5.6 B

24、ootloader介绍介绍 nBootloader是操作系统运行之前执行的一小段程序是操作系统运行之前执行的一小段程序,通,通 过这段小程序,我们可以过这段小程序,我们可以初始化硬件设备、建立内存空初始化硬件设备、建立内存空 间的映射表,从而建立适当的软硬件环境间的映射表,从而建立适当的软硬件环境,为最终调用,为最终调用 操作系统内核做好准备。操作系统内核做好准备。 n对于嵌入式系统,对于嵌入式系统, Bootloader是基于特定硬件平台来实是基于特定硬件平台来实 现的。几乎不可能为所有嵌入式系统建立一个通用的现的。几乎不可能为所有嵌入式系统建立一个通用的 Bootloader,不同的处理器

25、架构有不同的,不同的处理器架构有不同的Bootloader。 Bootloader不仅依赖于不仅依赖于CPU的体系结构,而且依赖于嵌的体系结构,而且依赖于嵌 入式系统板级设备的配置。入式系统板级设备的配置。 n反过来,大部分反过来,大部分Bootloader仍然具有很多共性,某些仍然具有很多共性,某些 Bootloader也能够支持多种体系结构的嵌入式系统。也能够支持多种体系结构的嵌入式系统。 23 Bootloader的启动的启动 n系统加电或复位以后,所有系统加电或复位以后,所有CPU都会从某个地址开始执都会从某个地址开始执 行,这个是由处理器设计决定的。比如,行,这个是由处理器设计决定的

26、。比如,X86的复位向的复位向 量在高地址端,量在高地址端,CPU处理器在复位时从地址处理器在复位时从地址0 x00000000 取第一条地址取第一条地址。嵌入式系统的开发板要把板上。嵌入式系统的开发板要把板上ROM或或 Flash映射到这个地址。因此,必须把映射到这个地址。因此,必须把Bootloader程序程序 存储在相应的存储在相应的Flash位置。系统上电以后,位置。系统上电以后, CPU首先执首先执 行它。行它。 nBootloader可分为如下启动方式:可分为如下启动方式: q网络启动方式网络启动方式 q磁盘启动方式磁盘启动方式 qFlash启动方式启动方式 24 (1)网络启动方

27、式网络启动方式 n这种方式开发板不需要配置较大的存储介质,但在使用这种方式开发板不需要配置较大的存储介质,但在使用 这种方式之前,需要把这种方式之前,需要把Bootloader安装到板上的安装到板上的 EPROM或或Flash中,中,Bootloader通过以太网远程下载通过以太网远程下载 Linux内核映像或文件系统。内核映像或文件系统。 nDHCP/BOOTP服务为服务为Bootloader分配分配IP地址,配置网络地址,配置网络 参数,然后才能够支持网络服务。参数,然后才能够支持网络服务。 nTFTP服务为服务为Bootloader客户端提供文件下载功能,把内客户端提供文件下载功能,把内

28、 核映像和其他文件放在核映像和其他文件放在/tftpboot目录下,这样目录下,这样 Bootloader可以通过简单的可以通过简单的TFTP协议远程下载内核映像协议远程下载内核映像 到内存。到内存。 25 图图5-4 网络启动方式网络启动方式 NFS BIOS 内核映像 目标板文件 系统 启动内核 HOSTTARGET 以太网连接以太网连接 TFTP BOOTP 26 (2)磁盘启动方式)磁盘启动方式 n传统的传统的Linux 系统运行在台式或服务器上,一般系统运行在台式或服务器上,一般 使用使用BIOS引导,并且使用磁盘作为存储介质。可引导,并且使用磁盘作为存储介质。可 以配置以配置BIO

29、S从软盘、光驱或某块硬盘启动,而从软盘、光驱或某块硬盘启动,而 BIOS并不直接引导操作系统,在硬盘的主引导区,并不直接引导操作系统,在硬盘的主引导区, 还需要一个还需要一个Bootloader用于从磁盘文件系统把操用于从磁盘文件系统把操 作系统引导起来。作系统引导起来。 nLinux传统上是通过传统上是通过LILO(LInux LOader)引导的,引导的, 后来又出现了后来又出现了GNU的软件的软件GRUB(GRand Unified Bootloader)。GRUB能够使用能够使用TFTP和和BOOTP或或 DHCP通过网络启动。通过网络启动。 27 (3)Flash启动方式启动方式 n

30、大多数嵌入式系统都使用大多数嵌入式系统都使用Flash存储介质,存储介质, Bootloader 一般存储在一般存储在Flash中。通常需要把中。通常需要把Flash分区使用,每个分区使用,每个 区的大小应该是区的大小应该是Flash擦除块大小的整数倍。擦除块大小的整数倍。 文件系统内核映像 Bootloader参数参数 图图5-5 Flash存储示意图存储示意图 nBootloader一般放在一般放在Flash的底端或顶端,要使的底端或顶端,要使Bootloader 的入口位于处理器上电执行的第一条指令位置。的入口位于处理器上电执行的第一条指令位置。 n参数区可用作参数区可用作Bootloa

31、der的参数保存区域。的参数保存区域。 nBootloader从内核映像区把从内核映像区把Linux内核映像解压到内核映像解压到RAM中,中, 然后跳转到内核映像入口执行。然后跳转到内核映像入口执行。 n最后是文件系统区。最后是文件系统区。 28 5.7 Linux内核编译与运行内核编译与运行 目的目的 n 学习和掌握学习和掌握Linux Linux 编译的基本步骤;编译的基本步骤; n 掌握掌握Linux Linux 配置、编译过程和固化。配置、编译过程和固化。 内容内容 n对Linux 的内核及用户程序进行配置; n编译生成内核映象文件; n把编译的映象文件烧写到FALSH 中,查看运行结

32、果。 29 n内核是内核是Linux操作系统的核心,它管理所有的系统线程、操作系统的核心,它管理所有的系统线程、 进程、资源和资源分配。与其它操作系统不同的是,进程、资源和资源分配。与其它操作系统不同的是, Linux操作系统允许用户对内核进行重新设置。用户可以操作系统允许用户对内核进行重新设置。用户可以 对内核进行对内核进行瘦身,增加或消除对某些特定设备或子系瘦身,增加或消除对某些特定设备或子系 统的支持。在开发嵌入式系统时,开发人员经常会减少统的支持。在开发嵌入式系统时,开发人员经常会减少 系统对一些无用设备的支持,将节省下来的内存分配给系统对一些无用设备的支持,将节省下来的内存分配给 各

33、种应用软件。各种应用软件。 n Linux内核对各种硬件和端口的支持要靠各种硬件驱内核对各种硬件和端口的支持要靠各种硬件驱 动程序来实现。这些驱动程序可以被直接写入内核,也动程序来实现。这些驱动程序可以被直接写入内核,也 可以针对某些特定硬件在需要时自动加载。通常情况下,可以针对某些特定硬件在需要时自动加载。通常情况下, 可以被自动加载进内核的内核编码称为自动加载内核模可以被自动加载进内核的内核编码称为自动加载内核模 块。块。 30 n Linux内核的设置是通过内核设置编辑器完成的。内内核的设置是通过内核设置编辑器完成的。内 核设置编辑器可对每个内核设置变量进行描述,帮助用核设置编辑器可对每

34、个内核设置变量进行描述,帮助用 户决定哪些变量需要被清除,哪些需要写入内核,或者户决定哪些变量需要被清除,哪些需要写入内核,或者 编成一个可加载内核模块在需要时进行加载。编成一个可加载内核模块在需要时进行加载。 n 内核是为众多应用程序提供对计算机硬件的安全访内核是为众多应用程序提供对计算机硬件的安全访 问的一部分软件,这种访问是有限的,并且内核决定一问的一部分软件,这种访问是有限的,并且内核决定一 个程序在什么时候对某部分硬件操作多长时间。直接对个程序在什么时候对某部分硬件操作多长时间。直接对 硬件操作是非常复杂的,所以内核通常提供一种硬件抽硬件操作是非常复杂的,所以内核通常提供一种硬件抽

35、象的方法来完成这些操作。硬件抽象隐藏了复杂性,为象的方法来完成这些操作。硬件抽象隐藏了复杂性,为 应用软件和硬件提供了一套简洁,统一的接口,使程序应用软件和硬件提供了一套简洁,统一的接口,使程序 设计更为简单。设计更为简单。 用户可以根据自己的需要编译内核。用户可以根据自己的需要编译内核。 31 32 目录目录描述描述 arch特定体系结构的源码特定体系结构的源码 cryto常用的加密算法常用的加密算法 Documentation内核源码文档内核源码文档 Drivers设备驱动程序设备驱动程序 fsVFS和各种文件系统和各种文件系统 include内核头文件内核头文件 init内核引导和初始化

36、内核引导和初始化 ipc进程间通信代码进程间通信代码 kernel调度子系统这样的核心子系统调度子系统这样的核心子系统 lib通用内核函数通用内核函数 mm内存管理子系统与虚拟内存内存管理子系统与虚拟内存 net网络子系统网络子系统 scripts编译内核所用的脚本编译内核所用的脚本 securityLinux的安全模块的安全模块 sound语音子系统语音子系统 usr早期用户代码早期用户代码(initramfs) 33 硬件平台相关的硬件平台相关的 引导过程引导过程 平台无关的平台无关的 通用引导过程通用引导过程 arch/arm/kernel/head.S init/main.c中的 start_kernel() 函数 34 n1.1.正在使用的内核版本过旧、或是发行商提供的非标准正在使用的内核版本过旧、或是发行商提供的非标准 内核;内核; n2.2.正在使用的内核过于臃肿,需要进行裁剪;正在使用的内核过于臃肿,需要进行裁剪; n3.3.需要在一个新的嵌入式目标机上移植需要在一个新的嵌入式目标机上移植LinuxLinux(需要交叉(需要交叉 编译);编译); n4.4.开发嵌入式开发嵌入式LinuxLinux驱动时,必须首先在开发用宿主机上驱动时,必须首先在开发用宿主机上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论