实验1 Linux系统的移植
- 格式:doc
- 大小:564.50 KB
- 文档页数:9
Linux 系统移植:裸板开发:没有操作系统的支持,没有任何库支持,包括硬件的驱动和上层应用程序都是自己开发的,若是实现相对简单的程序,容易实现复杂一些的程序,对程序员来说,需要懂硬件,懂软件,难度相对较大。
基于操作系统开发:操作系统为我们提供了很多资源,提供了大量封装好的接口函数,共程序员使用,包括已经实现好的硬件驱动程序。
如何在一个裸板上部署一个操作系统将是在以下几天的主要内容:::为TPAD部署系统需要:1,引导程序(bootloader) u-boot.bin2,操作系统内核 Image3,文件系统 rootfs.cramfs4,应用程序移植课:1,基于移植前的软件经过移植成为可以运行的软件(掌握原理和方法)2,部署到开发板(熟练操作)一,引导程序boot+loader1,在操作系统运行之前运行的一段代码Boot:初始化硬件设备,建立内存空间映射图,将系统的软硬环境带到一个合适的状态loader:将内核映像文件加载到内存(nand,tftp),之后跳转至内核处执行2,操作系统内核linux:Linux内核的本质:从c语言的角度,内核就是c语言函数的集合。
从硬件的角度,内核就是管理者。
从应用程序的角度,内核就是服务的提供者。
Linux内核的功能:进程管理,内存管理,设备管理,文件系统,网络协议。
3,文件系统是一种对存储设备上的数据进行组织和控制的机制,是操作系统的一部分,负责管理和存储文件信息。
TFTP:简单的网络传输协议NFS :网络文件系统嵌入式bootloader的操作模式:启动加载模式下载模式U-boot 最新的源代码:ftp://ftp.denx.de/pub/u-boot分析U-boot源码:u-boot根目录下共有26个目录,可以分为四类:●Cpu相关的或者开发板相关的目录:◆board,cpu●通用的函数目录:◆include,lib_arm ,lib_i386,lib_generic,common●通用的设备驱动程序目录:◆disk,driver,fs,nand_sal,net,post,rtc●U-boot工具,示例程序,文档目录:◆tools,examples,doc1.与硬件无关2.与硬件相关(需要根据不同的硬件更改的代码)CPU:包含CPU架构相关的代码, uboot支持的每一款cpu在此目录下都有一个对应的文件夹Board:包含和开发板相关的文件,每一个开发板都以一个子目录出现在当前目录中。
Linux移植之移植步骤在这⾥总结⼀下我在移植Linux2.6.22.6内核过程时的步骤。
移植成功后最终能挂接做好的根⽂件系统,并且启动第⼀个init程序。
移植的步骤如下:1、将⽹上下载的内核源码⽂件linux-2.6.22.6.tar.bz2放⼊/work/system路径下。
2、切换到/work/system,使⽤tar xjf linux-2.6.22.6.tar.bz2解压缩内核源码⽂件得到⼀个名为linux-2.6.22.6的⽂件夹3、cd linux-2.6.22.6切换到内核⽂件夹4、修改顶层Makefile⽂件使得 ARCH ?= arm;CROSS_COMPILE ?= arm-linux-5、执⾏make s3c2410_defconfig修改内核配置,最终会⽣成⼀个.confg⽂件6、执⾏make menuconfig配置内核,会读取.confg⽂件然后根据这个⽂件的基础上更改配置,这⾥配置先不⽤更改,直接退出7、make uImage之后,将产⽣的uImage⽂件通过UBOOT的usb下载功能下载到指定地址,内核分区8、在uboot界⾯执⾏boot启动内核,可以看到内核启动之后出现⼀⽚乱码9、更改CPU的时钟晶振,找到 (arch\arm\mach-s3c2440\Mach-smdk2440.c)⽂件,将327⾏的s3c24xx_init_clocks函数⾥的16934400改为12000000,代表12M晶振324static void __init smdk2440_map_io(void)325 {326 s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));327 s3c24xx_init_clocks(12000000);//将16934400改为12000000328 s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));329 }10、将更改过的代码继续编译make uImage,重复第7步骤。
实验四 Linux-2.6.14内核移植--网卡驱动的添加【实验目的】本实验通过在上个实验结果的linux2.6.14内核上移植CS89900A网卡驱动,使其可以通过网络nfs的方式挂载在ubantu主机环境上的文件系统,从而实现linux系统的完全启动。
【实验环境】1、Ubuntu 7.0.4发行版2、GEC2410平台以及开发板中移植好的u-boot3、交叉编译器arm-linux-gcc【实验步骤】(1) 下载linux内核/pub/linux/kernel/v2.6/linux-2.6.14.1.tar.bz2 ,下载linux2.6.14内核致/source/kernel目录,如果没有/source/kernel目录,自行建立目录。
root@:/source/kernel# cd /source/kernel/root@:/source/kernel# tar -xjvf linux-2.6.14.tar.bz2root@:/source/kernel/linux-2.6.14# pwd/source/kernel/linux-2.6.14root@:/source/kernel# cd linux-2.6.14进入内核解压后的目录,以后示例中,只要是相对路径全部是相对于/source/kernel/linux-2.6.14这个目录。
(2) 修改Makefile文件修改内核目录树根下的的Makefile,指明交叉编译器:root@:/source/kernel/linux-2.6.14# vim Makefile找到ARCH和CROSS_COMPILE,修改ARCH = armCROSS_COMPILE = arm-softfloat-linux-gnu-保存退出,然后设置你的PATH环境变量,使其可以找到你的交叉编译工具链:root@:/source/kernel/linux-2.6.14# echo $PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games如果第一个路径为/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin,则不用再进行设置,如果不是则进行下面步骤进行设置:root@:/source/kernel/linux-2.6.14#export PA TH=$PA TH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:(动态加载环境变量,终端关闭后,自己所加载的环境变量立即消失)。
linux 2.6内核的移植实验概述:对于嵌入式linux系统来说,有各种体系结构的处理器和硬件平台,用户根据自己的需要定制的硬件平台,只要是硬件平台有一点点变化,就需要做一些移植工作,linux内核移植是嵌入式linux系统中最常见的一项工作。
由于linux内核具备可移植性的特点,并且已经支持了很多种目标板,这样,用户很容易从中找到跟自己硬件平台类似的目标板,参考内核已经支持的目标板来进行移植工作。
linux-2.6内核已经支持S3C2410处理器的多种硬件板,我们可以参考SMDK2410参考板来移植开发板的内核。
实验步骤:(1)准备工作(2)修改顶层Makefile(3)添加分区(4)添加devfs(5)配置编译内核一、准备工作建立工作目录,下载源码,安装交叉工具链,步骤如下。
mkdir /root/build_kernelcd /root/build_kernelwget -c /pub/linux/kernel/v2.6/linux2.6.14.1.tar.bz2tar jxvf linux2.6.14.1.tar.bz2export PATH=/usr/local/arm/3.3.2/binPATH二、修改顶层Makefile修改内核目录树根下的的Makefile,指明体系结构是arm,交叉编译工具是arm-linux-。
vi Makefile找到ARCH和CROSS_COMPILE,修改ARCH ?= armCROSS_COMPILE ?= arm-linux-保存退出。
三、设置flash分区此处一共要修改3个文件,分别是:arch/arm/mach-s3c2410/devs.c ;指明分区信息arch/arm/mach-s3c2410/mach-smdk2410.c ;指定启动时初始化drivers/mtd/nand/s3c2410.c ;禁止Flash ECC校验3.1指明分区信息在arch/arm/mach-s3c2410/devs.c文件中:vi arch/arm/mach-s3c2410/devs.c在arch/arm/mach-s3c2410/devs.c文件添加的内容包括:(1)添加包含头文件。
linux移植的一般过程
Linux移植是将Linux操作系统移植到特定平台的过程。
一般来说,Linux移植的过程包括以下几个步骤:
1. 确定目标平台的处理器架构:确定目标平台的处理器架构是非常重要的,因为Linux内核需要针对不同的处理器架构进行编译。
2. 准备移植工具链:移植工具链包括编译器、链接器、调试器等,需要根据目标平台的处理器架构来选择相应的工具链。
3. 选择适合的内核版本:选择适合目标平台的内核版本是非常重要的,需要根据目标平台的处理器架构、硬件设备等来选择合适的内核版本。
4. 配置内核:根据目标平台的硬件设备和需求来配置内核,包括选择驱动程序、文件系统等。
5. 编译内核:使用移植工具链编译内核源代码。
6. 移植文件系统:根据目标平台的文件系统来移植相应的文件系统。
7. 测试:进行测试以确保Linux操作系统在目标平台上的正常运行。
总的来说,Linux移植是一个非常复杂的过程,需要对目标平台的硬件设备、处理器架构、文件系统等有深入的了解。
同时,需要具备一定的编译、调试等技能。
- 1 -。
我对linux移植过程的整体理解首先,要开始移植一个操作系统,我们要明白为什么要移植。
因为我们要在另外一个平台上用到操作系统,为什么要用操作系统,不用行不行?这个问题的答案不是行或不行来回答。
单片机,ARM7都没有操作系统,我们直接对寄存器进行操作进而实现我们需要的功能也是可以。
但是,一些大型的项目设计牵涉很多到工程的创建,单纯对裸机进行操作会显得杂乱庞大这时候需要一个操作系统。
操作系统的功能能。
我们用到操作系统,一方面可以控制我们的硬件和维护我们的硬件,另一方面可以为我们得应用程序提供服务。
呵呵,这样说还是很抽象,具体到项目中就可以感受到操作系统的好处。
Linux操作系统的移植说白了总共三大部分:一,内核的重新编译。
二,bootloader的重新编译。
三,文件系统的制作。
在这里要解释这些名词也很不好说的明白,首先,一个完整的操作系统是包括这三大部分的,内核、Bootloader、文件系统。
我们知道Linux有很多版本,不同的版本只是文件系统不一样而内核的本质都是一样的。
那么,我们开始进行移植。
首先是内核。
1.我们需要下载一个内核源码,这个在网上很好下载,下载后,保存下。
2.把这个压缩包复制到ubuntu(我用的版本)里,一般复制到/home/dong/SoftEmbed(我的目录,呵呵),然后呢,我们需要对这个内核进行修改重新编译,为什么要这样做,因为我们要让内核为我们的ARM服务,所以需要修改一些东西的。
至于具体如何修改,我已经写在另外一个文档里了。
3.修改的内容主要是 Makefile(设置体系架构为arm,设置交叉编译器)、时钟频率(我们板子的频率)、内核配置(进入内核配置主要是设置一些选项以适合我们的开发板)。
具体设置步骤我会另加说明。
4.设置好后我们需要重新编译内核,用的是make zImage命令。
编译后就生成了我们自己编译好的内核,呵呵。
接下来,进行文件系统的移植。
我们需要一个Yaffs2文件系统压缩包。
Linux系统移植Linux系统移植序该文档的目的是总结我们在工作中的一些经历,并把它们分享给喜欢ARM和Linux的朋友, 如有错误之处,请大家多多指点. 同样, 我们也希望更多人能把自己的工作经历和体会参加该文档,让大家共同进步. 该文档是一份交流性文档, 只供个人学习与交流,不允许公司和企业用于商业行为.第一局部前言1硬件环境1.1主机硬件环境开发机:Pentium-4 CPU内存: 512MB硬盘: 60GB1.2目标板硬件环境CPU: S3C2410SDRAM: HY57V561620Nand flash: K9F1208U0B〔64MB〕以太网芯片:CS8900A 〔10M/100MB〕1.3工具介绍仿真器:Dragon-ICE电缆:串口线,并口线2软件环境2.1主机软件环境2.1.1 Windows操作系统ADS编译工具:ADS1.2仿真器软件: Dragon-ICE daemon程序2.1.2 Linux操作系统GNU穿插编译工具:2.95.3:作用:编译u-boot3.3.2, 3.4.4:作用:编译内核和应用程序其它工作:tree工具:作用:查看文件目录树下载:从ftp:///linux/tree/下载编译2.1.3目标板最后运行的环境启动程序:u-boot-1.1.4内核:linux-2.6.14.1应用程序:1. busybox-1.1.32. TinyLogin-1.43. T d-2.252.2 Linux下工作用户及环境2.2.1穿插工具的安装工具链的编译过程请参考第三局部.1. 下载穿插工具2.95.3 下载地址:ftp:///pub/armlinux/toolchain/cross2.95.3.tar.bz23.3.4 下载地址:2. 编译穿插工具[rootlocalhost ~]mkdir /usr/local/arm[rootlocalhost ~]cd /usr/local/arm把cross-2.95.2.tar.bz2, cross-3.4.4.tar.gz 拷贝到/usr/local/arm目录中。
防灾科技学院防灾仪器系
综合性、设计性实验报告
专业:测控技术与仪器班级:1350331/2
姓名:学号:
实验项目名称: Linux系统移植
实验项目类型:综合性设计性□
实验课程名称:嵌入式仪器课程代码: 2010024 实验室名称:工程振动实验室
指导教师:吴燕雄梁慧敏
实验完成时间:年月日 / 2015 ~2016 学年Ⅰ学期
实验成绩给定说明
1.综合性实验:
实验成绩总分以100分计,其中实验准备占10%,实验操作占40%,实验结论(数据或图表、程序等)占30%,实验报告占10%、考勤及其它占10%。
2.设计性实验:
实验成绩总分以100分计,其中实验设计(方案制订)占20%,实验准备占10%,实验操作占20%,实验结论(数据或图表、程序等)占30%,实验报告占10%、考勤及其它占10%。
3.实验报告评分参考标准:
1.实验准备充分(10分,设计性无此项)
2.实验操作(或过程)完整,对步骤及实验中间产生的实验现象有详细描述(20分,综合性实验此项40分)。
3.实验结论有原始数据或图表、程序等,且结论准确(30分)
4.实验设计方案或流程等合理,方案制订详细清晰(20分,综合性无此项)5.实验报告内容完整,无空白,能独立完成报告、书写工整、认真(10分)。
6、考勤及其它(10分)
(2)图表及程序等,请以附录形式出现在实验报告后面。
(3)专业主干(核心)课程请在封面用“★”标注清楚。
描述Linux内核的移植过程
Linux内核的移植过程可以分为以下几个步骤:
1. 确定目标平台:首先需要确定要将Linux内核移植到哪个目标平台上,这个平台可以是嵌入式设备、服务器、桌面电脑等。
2. 获取源代码:从Linux官网或其他开源代码库获取Linux内核的源代码。
3. 配置内核:根据目标平台的硬件特性和需求,对内核进行配置。
可以使用make menuconfig、make xconfig或make config等命令进行配置。
4. 编译内核:使用交叉编译工具链对内核进行编译。
交叉编译工具链是一组针对特定平台的编译器、链接器、调试器等工具,可以在开发主机上编译生成目标平台上的可执行文件。
5. 生成镜像文件:将编译生成的内核、设备树、启动程序等文件打包成一个镜像文件。
镜像文件的格式可以是uImage、zImage、vmlinux等。
6. 烧录镜像文件:将生成的镜像文件烧录到目标平台的存储设备上,例如闪存、SD卡、硬盘等。
可以使用dd、fastboot、flash等命令进行烧录。
7. 启动内核:将目标平台连接到开发主机,通过串口或网络连接进行调试和启动。
可以使用bootloader或者直接从存储设备启动内核。
8. 调试内核:在目标平台上运行内核时,可能会遇到各种问题,例如驱动不兼容、内存泄漏、死锁等。
需要使用调试工具对内核进行调试,例如gdb、kgdb、strace等。
以上就是Linux内核的移植过程,需要根据具体的目标平台和需求进行调整和优化。
linux的移植、内核、文件系统的生成与下载一、实验目的1.了解内核编译过程2.了解linux移植的基本过程,掌握内核和文件系统的下载方法。
3.掌握嵌入式主机运行环境的配置。
二、实验内容1. 学习内核编译的过程2. 学习linux移植的基本过程2. 学习内核和文件系统的生成与下载方法三、实验设备1. PentiumII以上的PC机、EL-ARM860实验箱四、linux的移植说明1.内核编译1)内核的结构本实验系统运行的linux版本是针对linux-2.6.28进行移植的,其组成结构如下图所示:图linux-2.6.28的目录结构图Linux内核非常庞大,包括驱动程序在内有上百兆。
如下图示其主要结构目录:/arch子目录包含了所有与硬件体系结构相关的内核移植代码。
其中每一个目录都代表一种硬件平台,对于每种平台都应该包括:boot: 包括启动内核所使用的部分或全部平台的相关代码。
kernel:包括支持体系结构特有的特征代码lib:包括存放体系结构特有的通用函数的实现代码mm:包括存放体系结构特有的内存管理程序的实现mach-xxx:包括存放该处理器的移植代码/Documentation子目录包含有关内核的通用解释和注释。
/drivers子目录包含内核中所有的设备驱动程序,每个不同的驱动占用一个子目录,如char、block、net、mtd、i2c等。
/fs 子目录包含了所支持的文件系统的代码,如EXT、FAT、NTFS、JFFS2等。
/include 子目录包含了建立内核代码时所需的大部分库文件的头文件,该模块利用其他模块重建内核。
同时,它也包括不同平台需要的库文件,被放置在include/linux 子目录下。
/init子目录包含了内核的初始化代码,内核从此目录下开始工作。
/ipc 子目录包含了内核的进程间通讯的代码。
/kernel 子目录是内核的最核心部分,包含了进程调度、定时器等,而和平台相关的一部分代码放在arch/*/kernel目录下。
linux移植的一般过程
1.硬件平台的分析:对要移植的硬件平台进行分析,了解其处理器架构、内存结构、设备接口等硬件特性。
2. 内核选择和配置:根据硬件平台的特性选择相应的Linux内核版本,并进行配置,包括启用或禁用某些功能、添加驱动程序等。
3. 引导程序开发:根据硬件平台的启动方式,开发或适配引导程序(bootloader),负责加载内核和设备驱动程序。
4. 设备驱动程序的开发或适配:根据硬件平台的设备特性,开发或适配相应的设备驱动程序,使其能够被内核识别和使用。
5. 文件系统的制作:根据硬件平台的存储设备特性,制作相应的文件系统,包括文件系统类型、文件系统结构、文件系统大小等。
6. 应用程序的移植:根据硬件平台的特性,移植相应的应用程序,确保其能够正常运行。
7. 调试和优化:进行测试和调试,解决可能出现的问题,并优化系统性能。
8. 发布和维护:完成移植后,进行发布和维护工作,包括文档编写、系统更新等。
- 1 -。
UT-S3C6410 User ManualVersion:urbetter_linux-2.6.24_v0.18Linux主机环境:ubuntu-9.04一. 安装Cross-compile1.打开linux-2.6.24_v0.18\cross_compile\目录,将该目录下arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2、cross-4.2.2-eabi.tar.bz2、cross-3.3.2.tar.bz2、cross-3.4.1.tar.bz2拷贝至linux 机工作目录,这里以/home/fusq/test作为工作目录(fusq是linux机user name)。
2.安装arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2至/usr/local/arm/下。
执行命令:fusq@fusq-urbetter:~/test$ tar jxvf arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 注:默认路径为/usr/local/arm/,无需指定3.安装cross-4.2.2-eabi.tar.bz2 至/usr/local/arm/下。
执行命令:fusq@fusq-urbetter:~/test$ tar jxvf cross-4.2.2-eabi.tar.bz2 -C /usr/local/arm/4.安装cross-3.3.2.tar.bz2 至/usr/local/arm/下。
执行命令:fusq@fusq-urbetter:~/test$ tar jxvf cross-3.3.2.tar.bz2 -C /usr/local/arm/5.安装cross-3.4.1.tar.bz2 至/usr/local/arm/下。
4 LINUX内核移植实验4.1 资源1.linux-2.6.24.4.tar.bz2 (Linux内核源码的压缩包,下载地址)2.yaffs2.tar.gz (yaffs文件系统源码的压缩包)3.dm9000.h和dm9000.c (dm9000网卡驱动程序)4.2 解压源码包1.在XP中,把“04/下午/src”文件夹拷贝到“//192.168.1.12”的共享文件夹uptech内,并把uptech中的“src”更名为“04 linux”2.在Linux虚拟机中进入该文件夹“cd /home/uptech/04 linux”ls可见4个文件:“linux-2.6.24.4.tar.bz2”、“yaffs2.tar.gz”、“dm9000.h”、“dm9000.c”◆bz2压缩包用“tar jxvf”解压◆gz压缩包用“tar zxvf”解压3.解压Linux源码压缩包,即输入命令“tar jxvf linux-2.6.24.4.tar.bz2”4.解压YAFFS源码压缩包,即输入命令“tar zxvf yaffs2.tar.gz”4.3 修改Makefile文件,支持交叉编译1.cd /home/uptech/04 linux/linux-2.6.24.2,该目录下就是linux的内核源码2.修改Makefile文件,使之支持交叉编译,也就是在Linux上编译出ARM开发板上运行的内核程序。
ARCH ?= arm (目标平台是arm)CROSS_COMPILE ?= arm-linux-(交叉编译器的前缀是arm-linux-) 4.4 得到.config文件1.得到.config文件将“/home/uptech/04 linux/linux-2.6.24.2/arch/arm/configs/s3c2410_defconfig”文件拷贝成“/home/uptech/04 linux/linux-2.6.24.2/.config”cp arch/arm/configs/s3c2410_defconfig .config2.对内核进行裁剪(此时暂时不做裁剪,仅是看看)make menuconfig4.5 修改Nand Flash分区修改“/home/uptech/04 linux/linux-2.6.24.2/arch/arm/plat-s3c24xx/common-smdk.c”文件中的“struct mtd-partition smdk_default_nand_part[]”这个结构体:第一个分区从0x0000 0000 到0x0008 0000,大小为0.5M第二个分区从0x0008 0000 到0x0028 0000,大小为2M第三个分区从0x0028 0000 到0x0068 0000,大小为4M第四个分区从0x0068 0000 到0x0400 0000,大小为57.5M具体做法:(1) vi arch/arm/plat-s3c24xx/common-smdk.c(2)修改分区信息结构体static struct mtd_partition smdk_default_nand_part[] = {[0] = {.name = "Bootloader",.size = 0x80000,.offset = 0,},[1] = {.name = "Linux Kernel",.offset = 0x80000,.size = SZ_2M,},[2] = {.name = "Root File System",.offset = 0x280000,.size = SZ_4M,},[3] = {.name = "User Space",.offset = 0x680000,.size = 0x3980000,},};4.6 添加LCD支持修改“/home/uptech/04 linux/linux-2.6.24.2/arch/arm/mach-s3c2410/mach-smdk2410.c”。
Linux移植教程移植环境:PC主机一台:windows XP+SP3,虚拟机平台Vmware6.5,Linux平台:CentOS5.3操作系统,并且linux虚拟机可以访问互联网。
对于其它Linux操作系统,可能需要安装其它一些库文件,移植方法也大致相同。
Linux移植教程与uClinux移植基本相同,只是要修改编译器而已,客户可能先了解一下uClinux的移植,这样更有助于理解。
或者先做一下uClinux的移植(本对应例子工程为Examples\linux_web_server_mmu,以及同目录下的linux_mmu文件夹)注意:当前linux对niosII驱动还很不完善,LCD显示,网络等都还不能支持。
这还不如uClinux。
步骤如下:1).安装EPEL开发包使用管理员帐号登陆CentOS5.3,下载安装EPEL开发包[root@localhost ~]#-Uvh /pub/epel/5/i386/epel-release-5-3.noarch.rpm[root@localhost ~]#yum install git-all git-gui make gcc ncurses-devel bison byacc flex \gawk gettext ccache zlib-devel gtk2-devel lzo-devel pax-utilslibglade2-devel完成后,会在linux机上装上gcc编译器(4.1版本),以及git server等其它工具。
2).检测cc编译器是否链接到gcc上[root@localhost ~]# which gcc[root@localhost ~]# gcc –v以及[root@localhost ~]# which cc[root@localhost ~]# cc -v如果两者内容相同,则已链接好。
如果不是:[root@localhost ~]# cd /usr/bin[root@localhost bin]# ln -s gcc cc3). 安装nios2-linux-20090929.tar开发包下载地址: /pub/linux/nios2-linux-20090929.tar可以在windows下下载,下载完后复制到linux的root根目录下。
实验1 Linux系统的移植
1.开发前软硬件连接设置
在开发之前可能需要进行一些硬件的连接。
1)跳线设置:默认出厂跳线,BOOT 跳线(NAND Flash 启动模式)。
2)电源连接:
可通过实验箱配件提供电源线接到220V 交流电源插座上(接口为箱体左侧电源插口)。
3)USB线连接:
将实验箱配件提供的Mini USB线插到EMBV210 实验平台USB OTG接口,另一端接在PC 机USB 接口上,主要用于系统映像的固化、Android下USB ADB功能和应用程序调试。
4)网络连接:
通过实验箱配件提供的交叉网线将EMBV210 实验平台的100M 网卡接口与PC 端的网络接口进行连接。
5)串口连接:
通过实验箱配件提供的交叉串口线实现EMBV210实验平台的COM0与PC机上的串口连接。
6)超级终端设置:
Windows XP:在PC机上运行超级终端串口通信程序(开始→所有程序→附件→通讯→超级终端),选择所用到的串口并设置如下参数(设定状态:波特率115200,数据位8位,停止位1位,校验位无,数据流控制无)
软件:Android 2.3版本(u-boot.bin,zImage,embv210_root.img),dnw软件
2.linux系统的固化与使用
EMBV210实验平台Android映像固化在Nand Flash中,具体存储分配图如下:
系统移植前的准备工作:
1)安装DNW的usb驱动(参照附录DNW的USB驱动安装)。
2)如果启动系统可以在超级终端看到uboot 的启动信息,则可进行Android 系统映像的固化,否则先进行uboot的恢复,再进行烧写步骤。
3. ANDROID 系统固化
以下步骤将通过USB 方式固化Android 系统映像,固化前请先确认EMBV210实验平台上面的BOOT 跳线处于Nand Flash 启动方式:
1)正确设置超级终端并打开(开始→所有程序→附件→通讯→超级终端),打开DNW工具;
2)给EMBV210 实验平台上电,在超级终端可以看到uboot 的启动信息,按下PC 的空格键(速度要快)进入到uboot的命令行模式:
3)在超级终端的uboot命令行模式窗口输入以下命令进行Nand Flash 的格式化:
4)在超级终端的uboot命令行模式窗口输入以下命令开始传输新的uboot文件:
命令:dnw 30000000(激活USB传输)
切换到DNW软件界面,此时DNW 标题状态栏会显示“USB:OK”(没有提示,请检查USB驱动是否安装正确, 安装参照附录DNW的USB 驱动)。
在DNW 标题栏选择“USB Port -> Transmit -> Transmit”,弹出窗口选择要传送的文件u-boot.bin(在/2.3目录下)。
传送完毕,在超级终端可以看到传送的信息:
5)接下来在超级终端的uboot 命令行模式窗口输入以下命令开始将传送的文件固化到Nand Flash 中,固化完毕会提示成功:
6)接下来将固化Android 内核映像文件zImage,可以参考u-boot的固化步骤(步骤4)~5)):
7)接下来将固化Android 文件系统映像文件embv210_root.img,可以参考u-boot 的固化步骤(步骤4)~5)):
8)这样整个Android 系统映像即固化完毕,这时候可以重启EMBV210实验平台启动Android系统了。
附录DNW 的USB 驱动的安装
EMBV210实验平台通过DNW 固化系统映像时需要安装USB驱动,安装步骤如下:
1)在第一次提示安装DNW驱动时会弹出对话框,要求安装SEC S3C6400X Test B/D的驱动:
2)在接下来会弹出对话框指定驱动的位置(..\dnw)。
3)选择好驱动后,点击下一步系统将会自动安装驱动。
4)验证驱动安装是否争取,可以右键单击“我的电脑→管理→设备管理器”,可以看到出现SEC SOC SMDK Board 的驱动设备,即表示驱动安装成功。
补充:Android系统的编译
●源码的部署
EMBV210开发平台的Linux系统底层源码的编译,Android的编译,制作Android的文件系统。
涉及
U-boot、Kernel的编译,Android的编译,制作Android的文件系统,可以生成u-boot.bin、zImage三个映像和embv210_root.img根文件系统映像。
安装完Ubuntu虚拟机后,默认实验环境设置如下:
Ubuntu虚拟机默认已将这些源码解压到目录/usr/local/src/EMobile/EMBV210下。
●配置交叉编译工具链
EMBV210开发平台的Linux开发使用的是arm-2009q3编译器,Ubuntu虚拟机默认已经安装,在工作目录/usr/local/src/EMobile/EMBV210/arm-2009q3下。
在做下面几个实验之前,需要设置编译器环境:
1)在Ubuntu中单击菜单“应用程序->附件->终端”,打开终端。
2)每次在终端编译代码之前,需要设置一下环境变量:
3)可以通过查看编译器信息来看看编译器的环境变量是否设置成功:
如果打印消息为arm-none-linux-gnueabi-gcc找不到,则表示交叉编译工具链没有设置成功。
●编译Uboot
1)输入cd /usr/local/src/EMobile/EMBV210进入EMBV210源码目录:
2)在ubuntu开发环境下运行终端,执行以下命令来编译U-boot源码生成u-boot.bin
编译成功后,将会在/usr/local/src/EMobile/EMBV210/uboot-embv210目录下看到编译生成的映像文件u-boot.bin。
●编译Linux内核
1)输入cd /usr/local/src/EMobile/EMBV210进入EMBV210源码目录:
2)在ubuntu嵌入式开发环境下运行终端,执行以下命令来编译内核kernel源码生成uImage映像:
编译成功后,将会在/usr/local/src/EMobile/EMBV210/kernel-embv210/arch/arm/boot目录下看到编译生成的映像文件zImage
●编译Android源码
配置并编译Android源码:
编译成功后出现:
整个编译过程大约3-6小时。
制作Android文件系统
Android编译完成后,可执行以下命令生成embv210_root.img根文件系统映像:
执行成功后,即可在/usr/local/src/EMobile/EMBV210/froyo-embv210生成embv210_root.img根文件系统映像。