实验1 Linux系统的移植
Linux 系统移植
![Linux 系统移植](https://img.taocdn.com/s3/m/5d5ffe3867ec102de2bd8914.png)
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移植之移植步骤
![Linux移植之移植步骤](https://img.taocdn.com/s3/m/50747095b8d528ea81c758f5f61fb7360b4c2b00.png)
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系统移植实验手册
![linux系统移植实验手册](https://img.taocdn.com/s3/m/7e4da30d02020740be1e9b79.png)
实验四 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 2.6内核+根文件系统的移植实验](https://img.taocdn.com/s3/m/3c49280b581b6bd97f19eaa3.png)
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移植的一般过程](https://img.taocdn.com/s3/m/01d2de132e60ddccda38376baf1ffc4ffe47e2e5.png)
linux移植的一般过程
Linux移植是将Linux操作系统移植到特定平台的过程。
一般来说,Linux移植的过程包括以下几个步骤:
1. 确定目标平台的处理器架构:确定目标平台的处理器架构是非常重要的,因为Linux内核需要针对不同的处理器架构进行编译。
2. 准备移植工具链:移植工具链包括编译器、链接器、调试器等,需要根据目标平台的处理器架构来选择相应的工具链。
3. 选择适合的内核版本:选择适合目标平台的内核版本是非常重要的,需要根据目标平台的处理器架构、硬件设备等来选择合适的内核版本。
4. 配置内核:根据目标平台的硬件设备和需求来配置内核,包括选择驱动程序、文件系统等。
5. 编译内核:使用移植工具链编译内核源代码。
6. 移植文件系统:根据目标平台的文件系统来移植相应的文件系统。
7. 测试:进行测试以确保Linux操作系统在目标平台上的正常运行。
总的来说,Linux移植是一个非常复杂的过程,需要对目标平台的硬件设备、处理器架构、文件系统等有深入的了解。
同时,需要具备一定的编译、调试等技能。
- 1 -。
我来说linux移植过程
![我来说linux移植过程](https://img.taocdn.com/s3/m/46a7d6bac77da26925c5b063.png)
我对linux移植过程的整体理解首先,要开始移植一个操作系统,我们要明白为什么要移植。
因为我们要在另外一个平台上用到操作系统,为什么要用操作系统,不用行不行?这个问题的答案不是行或不行来回答。
单片机,ARM7都没有操作系统,我们直接对寄存器进行操作进而实现我们需要的功能也是可以。
但是,一些大型的项目设计牵涉很多到工程的创建,单纯对裸机进行操作会显得杂乱庞大这时候需要一个操作系统。
操作系统的功能能。
我们用到操作系统,一方面可以控制我们的硬件和维护我们的硬件,另一方面可以为我们得应用程序提供服务。
呵呵,这样说还是很抽象,具体到项目中就可以感受到操作系统的好处。
Linux操作系统的移植说白了总共三大部分:一,内核的重新编译。
二,bootloader的重新编译。
三,文件系统的制作。
在这里要解释这些名词也很不好说的明白,首先,一个完整的操作系统是包括这三大部分的,内核、Bootloader、文件系统。
我们知道Linux有很多版本,不同的版本只是文件系统不一样而内核的本质都是一样的。
那么,我们开始进行移植。
首先是内核。
1.我们需要下载一个内核源码,这个在网上很好下载,下载后,保存下。
2.把这个压缩包复制到ubuntu(我用的版本)里,一般复制到/home/dong/SoftEmbed(我的目录,呵呵),然后呢,我们需要对这个内核进行修改重新编译,为什么要这样做,因为我们要让内核为我们的ARM服务,所以需要修改一些东西的。
至于具体如何修改,我已经写在另外一个文档里了。
3.修改的内容主要是 Makefile(设置体系架构为arm,设置交叉编译器)、时钟频率(我们板子的频率)、内核配置(进入内核配置主要是设置一些选项以适合我们的开发板)。
具体设置步骤我会另加说明。
4.设置好后我们需要重新编译内核,用的是make zImage命令。
编译后就生成了我们自己编译好的内核,呵呵。
接下来,进行文件系统的移植。
我们需要一个Yaffs2文件系统压缩包。
Linux系统移植
![Linux系统移植](https://img.taocdn.com/s3/m/b54df6db5727a5e9856a61e3.png)
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目录中。
【IT专家】Linux系统移植实验
![【IT专家】Linux系统移植实验](https://img.taocdn.com/s3/m/8560eb1658fb770bf78a5565.png)
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
Ø 配置内核时按“空 ”选择,配置完成后保存退出 $make menuconfig Device Drivers -- Character devices -- * FS4412 LED Device Support Ø 保存退出,重新编译后把 uImage 拷贝到 tftpboot 下 $ makeuImage $ cparch/arm/boot/uImage/tftpboot 重新启动开发板,加载内核并运行。在终端下执行下面操作 Ø 创建设备节点 # mknod/dev/ledc5000 Ø 运行测试程序并观察现象 #./fs4412_led_app 6.编译 LED 驱动为模块 Ø 配置内核时按“空 ”选择,配置完成后保存退出 $ make menuconfig Device Drivers -- Character devices -- M FS4412 LED DeviceSupport Ø 保存退出,重新编译后把 zImage 拷贝到 tftpboot 下,把驱动模块拷贝到 /source/rootfs 下 $ makeuImagemodules $ cparch/arm/boot/uImage/tftpboot/ $ cpdrivers/char/fs4412_led_drv.ko/source/rootfs/ 重新启动开发板,linux 运行起来后在终端下操作 Ø 创建设备节点
# mknod/dev/ledc5000
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
Ø 加载 LED 驱动模块
#insmod fs4412_led_drv.ko
Ø 运行测试程序并观察现象
#./fs4412_led_app
fs4412_led_drv.c 源代码如下:
综合性设计性实验报告(Linux系统移植)
![综合性设计性实验报告(Linux系统移植)](https://img.taocdn.com/s3/m/951710d29ec3d5bbfd0a7423.png)
防灾科技学院防灾仪器系
综合性、设计性实验报告
专业:测控技术与仪器班级: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系统的移植](https://img.taocdn.com/s3/m/049f4831f68a6529647d27284b73f242336c31cf.png)
嵌入式系统设计
Linux 内核的编译菜单有几个版本,运行:
1)基于字符界面的config: make config进 入命令行,可以一行一行的配置;
2)基于图形界面的menuconfig:make menuconfig 进入menuconfig 菜单。(稳定且用得最多)
建议经常使用的部分直接编译到内核中,比如网卡。
嵌入式系统设计
内核源码结构
(存放目录:/usr/src/Linux-)
Linux2.4.18
/arch /drivers
/arm
sparc
/m68k
/kernel /lib /init
/boot mach-s3c2410 /kernel /lib
/ipc /fs
嵌入式系统设计
Network firewalls: 是否让内核支持采用网络防火墙。如果计算机想当 firewalls server或者是处于TCP/IP 通信协议网络的网路结构 下,这一项就选上。 Packet socket mmapped IO : 选该项则Packet socket可以利用端口进行快速通讯。 IP advanced router : 如果你想把自己的Linux 配成路由器功能这项肯定要选。 选上后会带出几个子项。这些子项可以更精确配置相关路由功能。
3)基于图形界面的xconfig: make xconfig 进入xconfig菜单。
嵌入式系统设计
嵌入式系统设计 基于字符界面的make config
嵌入式系统设计 基于图形界面的menuconfig 配置菜单
嵌入式系统设计 基于图形界面的xconfig 配置菜单
描述Linux内核的移植过程
![描述Linux内核的移植过程](https://img.taocdn.com/s3/m/ff5b1a5fae1ffc4ffe4733687e21af45b307fec6.png)
描述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的移植
![linux的移植](https://img.taocdn.com/s3/m/7a4dc03b3169a4517723a326.png)
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移植的一般过程
![linux移植的一般过程](https://img.taocdn.com/s3/m/2ea1383ef02d2af90242a8956bec0975f465a4c1.png)
linux移植的一般过程
1.硬件平台的分析:对要移植的硬件平台进行分析,了解其处理器架构、内存结构、设备接口等硬件特性。
2. 内核选择和配置:根据硬件平台的特性选择相应的Linux内核版本,并进行配置,包括启用或禁用某些功能、添加驱动程序等。
3. 引导程序开发:根据硬件平台的启动方式,开发或适配引导程序(bootloader),负责加载内核和设备驱动程序。
4. 设备驱动程序的开发或适配:根据硬件平台的设备特性,开发或适配相应的设备驱动程序,使其能够被内核识别和使用。
5. 文件系统的制作:根据硬件平台的存储设备特性,制作相应的文件系统,包括文件系统类型、文件系统结构、文件系统大小等。
6. 应用程序的移植:根据硬件平台的特性,移植相应的应用程序,确保其能够正常运行。
7. 调试和优化:进行测试和调试,解决可能出现的问题,并优化系统性能。
8. 发布和维护:完成移植后,进行发布和维护工作,包括文档编写、系统更新等。
- 1 -。
linux系统移植
![linux系统移植](https://img.taocdn.com/s3/m/e9e69a02bed5b9f3f90f1cfb.png)
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/下。
LINUX内核移植实验
![LINUX内核移植实验](https://img.taocdn.com/s3/m/f7abe4f9c8d376eeaeaa31a7.png)
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移植教程
![linux移植教程](https://img.taocdn.com/s3/m/befd4085ec3a87c24028c4f5.png)
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根目录下。
Linux文件系统移植及编译实验
![Linux文件系统移植及编译实验](https://img.taocdn.com/s3/m/c828d07d7fd5360cba1adb93.png)
# cd .. # cp -Rfv /opt/develop/lyj/common/porting/rootfs/busybox-1.12.2/
_install/* ./ OK,以上用 busybox 创建了一个基本的文件系统。 PS: 如果编译 busybox 时选择动态库方式编译,则需要查看生成的 busybox 使用
哪些动态库,然后把它们拷贝到 rootfs/lib 目录下。 # arm-linux-readelf -d ../bin/busybox Dynamic section at offset 0xc1014 contains 21 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libm.so.6] 0x00000001 (NEEDED) Shared library: [libc.so.6] 0x0000000c (INIT) 0xc2ec 0x0000000d (FINI) 0xa96b8 0x00000004 (HASH) 0x80e8 0x00000005 (STRTAB) 0xa4c4 0x00000006 (SYMTAB) 0x8b64 0x0000000a (STRSZ) 3505 (bytes) 0x0000000b (SYMENT) 16 (bytes) 0x00000015 (DEBUG) 0x0 0x00000003 (PLTGOT) 0xd10e4 0x00000002 (PLTRELSZ) 3112 (bytes) 0x00000014 (PLTREL) REL 0x00000017 (JMPREL) 0xb6c4 0x00000011 (REL) 0xb674 0x00000012 (RELSZ) 80 (bytes) 0x00000013 (RELENT) 8 (bytes) 0x6ffffffe (VERNEED) 0xb5a4 0x6fffffff (VERNEEDNUM) 2 0x6ffffff0 (VERSYM) 0xb276 0x00000000 (NULL) 0x0
第十章_Linux的移植
![第十章_Linux的移植](https://img.taocdn.com/s3/m/9595f9203169a4517723a3d3.png)
一、Bootloader的移植
vivi的软件架构
vivi的软件架构分为 三个层次:vivi配置、 bootloader stage1、 bootloader stage2。 另外,Vivi还提供了测试 程序和工具,并且有简明 的文档。 具体如图:
一、Bootloader的移植
ห้องสมุดไป่ตู้
vivi的软件架构
一、Bootloader的移植
size: flag: },{ name: offset: size: flag: "kernel", 0x00030000, 0x00200000, 0 "root", 0x00230000, 0x01400000, 0x00010000, 0
}, {
name: offset: size:
一、Bootloader的移植
Makefile Makefile.newSDK Rules.make:工程管理。Linux下用
make来进行工程管理,对Makefile应该不会陌生。读源代码,首先了解 Makefile的内容,会很有帮助。我们在下面会修改到此文件。
arch:处理器架构相关的核心代码。我们仅包含arm架构,这也是vivi
一、Bootloader的移植
1.
2.
3. 4. 5. 6. 7. 8.
打印版本,内存清零 开发板初始化 建立页表,启动MMU 堆栈初始化 MTD设备初始化 私有数据初始化 内置命令初始化 Boot-or-vivi()函数
一、Bootloader的移植
vivi移植步骤: 1. 移植交叉编译器 2.下载&解压vivi 3.修改文件 4.配置启动参数: 5.编译 6.烧写下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验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根文件系统映像。