实验二(内核移植).

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2020/1/2实验二Linux内核的编译与文件系统的构建2提纲13245基础知识实验目的实验内容预备知识实验设备6实验过程7实验报告要求31实验目的掌握交叉编译环境的设置掌握嵌入式Linux内核编译方法掌握嵌入式Linux文件系统编译方法掌握嵌入式Linux文件加载及启动的方法42实验内容设置嵌入式Linux的交叉编译环境编译Linux内核及文件系统加载、运行嵌入式Linux系统53预备知识掌握虚拟机及Linux系统的安装方法掌握Linux系统的常用命令掌握vi编辑器的使用方法掌握make工具的使用方法掌握Linux内核的构成掌握Busybox文件的用途64实验设备JXARM9-2440教学实验箱ADT2000仿真器和ADTIDE集成开发环境串口连接线、网络连接线75基础知识•Linux映像由内核(kernel)和文件系统(fs)组成。•可将kernel和fs统一编译到一个映像(image)文件中,也可以将kernel和fs独立地放置于不同的映像文件中(烧写到FLASH的不同区域),这需要通过修改Makefile文件和内核中的文件系统加载代码实现。•本系统中kernel和fs分别位于不同的映像文件中。分别为(ramdisk.gz和zImage)。•Linux支持压缩核心(zImage),它是对原核心映像文件(linux.bin)进行压缩,并在压缩后的文件头部添加一段解压缩代码。在zImage运行时,先运行这段解压缩代码将程序解压缩到Linux核心运行地址,完成后,跳转到核心运行。Linux开发过程•BOOTLOADER开发•Linux开发环境建立•Linux内核移植•应用程序开发5基础知识•引导Linux•烧写Linux内核映像和文件系统•初始化硬件5基础知识支持Linux开发的BOOTLOADER•GNU的交叉编译器,包括以下组件:1.Gcc交叉编译器,即在宿主机上开发编译目标上可运行的二进制文件;2.Binutils辅助工具,包括objdump、objcopy等;3.Gdb调试器。•对于ARM可以采用如下两个版本的编译器:•arm-elf-•arm-linux-5基础知识GNU交叉编译•arm-linux-gccGNUC编译器•arm-linux-ld连接器•arm-linux-as编译gcc输出的汇编文件•arm-linux-objdump显示目标文件信息•arm-linux-objcopy复制目标文件内容•arm-linux-ar建立、修改、提取归档文件5基础知识arm-linux-交叉编译器(推荐使用)•Windows环境+Cygwin•Windows环境+VMWare虚拟机(安装RedHat9.0)•Linux环境,推荐RedHat9.0•单机模式(一台计算机)•双机模式(两台计算机)•Windows+Linux5基础知识Linux开发环境建立•必须采用支持GDB的调试器(如ADT1000A)才能进行调试,否则只能通过BOOTLOADER进行简单的程序烧写运行等•调试信息的打印可以通过串口完成,使用linux下的minicom超级终端程序(类似于Windows上的超级终端工具)接收并显示目标板传送的打印信息•Linux串口驱动完成后,可以通过内核打印函数printk向串口打印信息,这是Linux内核调试过程中最有效的手段5基础知识在linux环境下进行Linux开发•Linux内核配置和编译等在Cygwin环境下运行,程序编辑和调试都在Windows环境下进行,必须采用支持Windows下进行linux调试的调试器(如ADT1000A)才能进行调试,否则只能通过BOOTLOADER进行简单的程序烧写运行等•调试信息的打印可以通过串口完成,使用Windows上的超级终端工具接收并显示目标板传送的打印信息•Cygwin是运行于Windows中的一个应用程序,它可以使得Linux环境下的应用程序可以在Cygwin环境下进行编译,即可以在Windows进行编译。5基础知识在Windows+Cygwin环境下进行Linux开发•如果需要使用在Windows环境下调试的调试器,可通过在VMWare中安装linux虚拟机,在虚拟机中进行编辑、编译Linux,然后通过网络(ftp、nfs、ssh)等手段传送到Windows中,进行调试,这样编译和调试可以分别在linux和windows环境下但是是在一台电脑中完成,它的缺点是系统要求较高,运行速度慢。•也可以在两台电脑中分别安装linux和windows,分别实现编译和调试。•VMWare是运行于Windows中的一个应用程序,是一个虚拟机,可以在其上安装多个操作系统,相当于在Windows上安装一个虚拟的操作系统。5基础知识在Windows+VMWare虚拟机环境下进行Linux开发•Linux内核的移植可以分为板级移植和片级移植。•对于Linux发行版本中已经支持的CPU通常只需要针对板级硬件进行适当的修改即可,这种移植叫做板级移植。•而对于Linux发行版本中没有支持的CPU则需要添加相应CPU的内核移植,这种移植叫做片级移植。•片级移植相对板级移植来说要复杂许多,本系统采用的Linux发行版本中已经包含S3C2440XARM920T处理器的移植包,因此,只需要在其上进行Linux板级移植的基本过程和方法。5基础知识Linux内核移植linuxDocumentationarchdriversfsincludeinitmmlibnetscript帮助文档体系结构相关源代码驱动程序文件系统头文件kernel初始化Linux内存管理常用函数网络协议源代码脚本文件5基础知识Linux内核的目录结构armbootkernellibmach-s3c2440vmlinux.lds压缩内核启动引导代码内核起始代码常用函数s3c2440平台相关代码核心的连接脚本文件•与架构和平台相关的源代码都放在arch目录下,对于ARM的Linux,包含于arch目录下的arm子目录中。5基础知识Linux内核的arch目录•配置内核•编译内核•下载、运行、调试内核5基础知识Linux内核移植配置Linux内核•makeconfig•makemenuconfig•makexconfig5基础知识配置Linux内核•系统及其存储器配置•网络支持•显示器支持•触摸屏支持5基础知识Linux常用配置选项•在‘SystemType’菜单中中进行配置选择系统类型处理器型号选择处理器其它特性(USB支持等)5基础知识系统及其存储器配置•在’Networkingoptions’以及’Networkdevicesupport’中进行配置选择支持TCP/IP协议5基础知识网络支持•在’Networkdevicesupport’配置中,添加选项’Networkdevicesupport’,并在’Ethernet(10or100Mbit)’中选择’OtherISAcards’,如下图所示选择NE2000/NE1000support采用RTL8019网卡芯片,为NE2000兼容网卡芯片,因此,选择该网卡5基础知识网络支持•在’Characterdevices’以及’Consoledrivers’中进行配置。•在’Characterdevices’配置中,添加选项’Virtualterminal’配置,如下图所示。Virtualterminal支持5基础知识显示器支持•在’Consoledrivers’中添加’SupportFramebufferdevices’配置采用256色STN显示器,因此必须选择8bpp支持5基础知识显示器支持•在’Characterdevices’的’SupportS3C2440TouchScreen’子菜单中进行配置选择s3c2440触摸屏支持5基础知识触摸屏支持编译Linux内核•建立依赖关系makedep•编译内核make编译内核makezImage编译压缩核心zImage编译生成的Linux映像文件zImage通常保存在arch/arm/boot/目录下5基础知识编译Linux内核•通过调试器下载内核并运行•通过BOOTLOADER下载内核到SDRAM中运行•通过BOOTLOADER将内核烧写到FLASH中,然后运行Linux5基础知识下载、运行和调试内核•在Linux开发中,由于可能没有标准键盘和显示器支持,因此,通常通过串口将显示信息发送到主机,由主机端超级终端工具接收,以完成显示功能。同时在超级终端中可以输入数据,然后由Linux接收,以完成标准键盘功能。•调试过程中也可以通过串口将调试信息打印到超级终端,这是Linux最有效和最简单的方法。5基础知识Linux调试手段•对于板级移植,内核移植主要包括如下几个部分:•内核配置,包括板级包配置,如S3C44B0X-MBA44•体系结构相关代码修改,根据板级包的配置,修改相应的体系结构相关代码,包括:压缩核心启动代码:linux/arch/arm/boot/内核启动代码:linux/arch/arm/kernel/板级相关代码:linux/arch/arm/mach-s3c2440/5基础知识Linux内核移植主要过程•对于板级移植,内核移植主要包括如下几个部分:•连接脚本核心连接脚本:linux/arch/arm/vmlinux.lds压缩核心连接脚本:linux/arch/arm/boot/compressed/linux.lds5基础知识Linux内核移植主要过程•加载文件系统ramdisk•编写驱动程序驱动程序目录:linux/drivers/网卡驱动程序:linux/drivers/net/ne.cLCD驱动程序:linux/drivers/video/s3c2440fb.c触摸屏驱动程序:linux/drivers/char/s3c2440-ts.c5基础知识Linux内核移植主要过程解压缩核心核心打印信息内核命令行存储器5基础知识Linux启动过程IIC总线初始化FrameBuffer显示初始化5基础知识Linux启动过程Linux控制台5基础知识Linux启动过程•文件系统指文件存在的物理空间。在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。•Linux的最重要特征之一就是支持多种文件系统,这样它更加灵活,并可以和许多其它种操作系统共存。5基础知识Linux文件系统•VirtualFileSystem(虚拟文件系统)使得Linux可以支持多个不同的文件系统。由于系统已将Linux文件系统的所有细节进行了转换,所以Linux核心的其它部分及系统中运行的程序将看到统一的文件系统。•Linux的虚拟文件系统允许用户同时能透明地安装许多不同的文件系统。虚拟文件系统是为Linux用户提供快速且高效的文件访问服务而设计的。5基础知识Linux文件系统•Linux系统核心可以支持十多种文件系统类型:•JFS、•ext、ext2、ext3、•ISO9660、XFS、Minx、MSDOS、UMSDOS、•VFAT、NTFS、•HPFS、•NFS、SMB、SysV、PROC、•romfs等。5基础知识常用Linux文件系统406实验过程安装Vmware安装Linux配置交叉编译环境配置内核编译Linux内核及文件系统下载映像文件运行嵌入式Linux系统41主机:RedLinux目标机:S3C2440安装Linux安装交叉编译器配置Linux内核编译内核zImage启动U-BOOT下载映像文件运行Linux42解压交叉编译工具链43拷贝交叉编译工具链44修改环境变量45修改环境变量46运行文件查看环境变量47484950关闭防火墙51525354测试tftp555657配置内核5859606162编译内核6364关闭虚拟机配置串口6566676869启动虚拟机配置minicom7071对应串口com17273目标机上电74装载映像文件757677启动787实验报告要求

1 / 78
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功