实验1 Linux系统的移植

合集下载

Linux 系统移植

Linux 系统移植

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移植之移植步骤

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系统移植实验手册

实验四 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内核+根文件系统的移植实验

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移植是将Linux操作系统移植到特定平台的过程。

一般来说,Linux移植的过程包括以下几个步骤:
1. 确定目标平台的处理器架构:确定目标平台的处理器架构是非常重要的,因为Linux内核需要针对不同的处理器架构进行编译。

2. 准备移植工具链:移植工具链包括编译器、链接器、调试器等,需要根据目标平台的处理器架构来选择相应的工具链。

3. 选择适合的内核版本:选择适合目标平台的内核版本是非常重要的,需要根据目标平台的处理器架构、硬件设备等来选择合适的内核版本。

4. 配置内核:根据目标平台的硬件设备和需求来配置内核,包括选择驱动程序、文件系统等。

5. 编译内核:使用移植工具链编译内核源代码。

6. 移植文件系统:根据目标平台的文件系统来移植相应的文件系统。

7. 测试:进行测试以确保Linux操作系统在目标平台上的正常运行。

总的来说,Linux移植是一个非常复杂的过程,需要对目标平台的硬件设备、处理器架构、文件系统等有深入的了解。

同时,需要具备一定的编译、调试等技能。

- 1 -。

我来说linux移植过程

我来说linux移植过程

我对linux移植过程的整体理解首先,要开始移植一个操作系统,我们要明白为什么要移植。

因为我们要在另外一个平台上用到操作系统,为什么要用操作系统,不用行不行?这个问题的答案不是行或不行来回答。

单片机,ARM7都没有操作系统,我们直接对寄存器进行操作进而实现我们需要的功能也是可以。

但是,一些大型的项目设计牵涉很多到工程的创建,单纯对裸机进行操作会显得杂乱庞大这时候需要一个操作系统。

操作系统的功能能。

我们用到操作系统,一方面可以控制我们的硬件和维护我们的硬件,另一方面可以为我们得应用程序提供服务。

呵呵,这样说还是很抽象,具体到项目中就可以感受到操作系统的好处。

Linux操作系统的移植说白了总共三大部分:一,内核的重新编译。

二,bootloader的重新编译。

三,文件系统的制作。

在这里要解释这些名词也很不好说的明白,首先,一个完整的操作系统是包括这三大部分的,内核、Bootloader、文件系统。

我们知道Linux有很多版本,不同的版本只是文件系统不一样而内核的本质都是一样的。

那么,我们开始进行移植。

首先是内核。

1.我们需要下载一个内核源码,这个在网上很好下载,下载后,保存下。

2.把这个压缩包复制到ubuntu(我用的版本)里,一般复制到/home/dong/SoftEmbed(我的目录,呵呵),然后呢,我们需要对这个内核进行修改重新编译,为什么要这样做,因为我们要让内核为我们的ARM服务,所以需要修改一些东西的。

至于具体如何修改,我已经写在另外一个文档里了。

3.修改的内容主要是 Makefile(设置体系架构为arm,设置交叉编译器)、时钟频率(我们板子的频率)、内核配置(进入内核配置主要是设置一些选项以适合我们的开发板)。

具体设置步骤我会另加说明。

4.设置好后我们需要重新编译内核,用的是make zImage命令。

编译后就生成了我们自己编译好的内核,呵呵。

接下来,进行文件系统的移植。

我们需要一个Yaffs2文件系统压缩包。

Linux系统移植

Linux系统移植

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系统移植实验

本文由我司收集整编,推荐下载,如有疑问,请与我司联系
Ø 配置内核时按“空 ”选择,配置完成后保存退出 $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 源代码如下:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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根文件系统映像。

相关文档
最新文档