我来说linux移植过程
基于ARM平台Linux内核移植论文
![基于ARM平台Linux内核移植论文](https://img.taocdn.com/s3/m/236c3f1b4431b90d6c85c784.png)
基于ARM平台的Linux内核移植中图分类号:tp 文献标识码:a 文章编号:1007-0745(2011)10-0204-01摘要:linux是一个可移植性非常好的操作系统,它广泛支持了许多不同体系结构的计算机。
可移植性是指代码从一种体系结构移植到另外一种不同的体系结构上的方便程度。
本文介绍了基于arm 开发板的linux内核移植过程,主要包括二方面的内容:交叉编译器的安装、内核的配置与移植。
本文要求读者具备一定的linux操作系统使用经验。
关键词:移植内核 linux一、概述一个嵌入式linux系统的启动顺序可以分为四步:1、引导加载程序(bootloader)。
2、加载linux内核。
3、挂载根文件系统。
4、运行应用程序。
所以要想使linux内核在开发板上运行,就必须对以上四步的相关源代码进行移植操作,使其可运行于嵌入式平台。
本文主要介绍内核移植部分,其余部分可参考相应书箱或文档。
二、开发环境的建立2.1、安装虚拟机、fedora13操作系统及相关的开发工具(gcc、gedit等),本文的所有操作均是在这种开发环境下进行,本文的工作目录为 \work,且都是在root权限下操作。
2.2、交叉编译器(arm-linux-gcc)的安装。
交叉编译器是嵌入式linux开发的基础,后续的移植过程都要用到此编译器,在linux pc平台下,利用arm-linux-gcc编译器可编译出针对arm linux平台的可执行代码。
安装过程如下:a、网上获取arm-linux-gcc-4.3.2.tgz源代码包并保存于/work 目录中。
b、解压命令(tar xvzf arm-linux-gcc-4.3.2.tgz -c /)注意上面的命令必须是大写c且后面有个空格,这样将源代码解压至目录/usr/local/arm/4.3.2中。
c、配置编译环境路径。
输入命令(gedit /root/.bashrc)打开.bashrc文件,在最后一行加入如下内容:exportpath=/usr/local/arm/4.3.2/bin:$path保存关闭文件,用root重新登录系统,输入命令:(arm-linux-gcc –v)如果安装成功将会显示arm-linux-gcc的版本号。
Linux内核配置移植及编译实验
![Linux内核配置移植及编译实验](https://img.taocdn.com/s3/m/48f051bb65ce050876321390.png)
return platform_driver_register(&dm9k_driver); } 7.添加 YAFFS 文件系统支持 将我们提供的 YAFFS 的源代码 yaffs2.tar.gz 拷贝到 linux-2.6.24.4 的同 级目录下,解压该源码包,获得 YAFFS 源码: # pwd /root/2410-s # cp /mnt/hgfs/e/yaffs2.tar.gz ./ # tar zxvf yaffs2.tar.gz 然后进入 yaffs2 目录,运行./patch-ker.sh 给内核打上补丁: # cd yaffs2 # ./patch-ker.sh c ../linux-2.6.24.4/ 这样打好补丁以后,再做正确的配置,内核就可以支持 YAFFS 文件系统了。 8.配置和编译内核 到现在,一个简单的内核就准备好了,我们还需要做一些配置,然后编译, 内核才能正常使用。 在内核源代码的根目录下运行 make menuconfig 命令,进入配置界面: # make menuconfig (1)选择硬件系统 做如下选择: System Type --->
S3C2410 Machines ---> [*] SMDK2410/A9M2410 [ ] IPAQ H1940 [ ] Acer N30 [ ] Simtec Electronics BAST (EB2410ITX) [ ] NexVision OTOM Board [ ] AML M5900 Series [ ] Thorcom VR1000
.size = SZ_4M, }, [3] = {
.name = "User Space", .offset = 0x680000, .size = 0x1980000, }, }; 这样就把我们的 64M 的 NAND Flash 分为四个区: 第一个区从 0x00000000 到 0x00080000,大小为 0.5M 第二个区从 0x00080000 到 0x00280000,大小为 2M 第三个区从 0x00280000 到 0x00680000,大小为 4M 第四个区从 0x00680000 到 0x02000000,大小为 25.5M 5.添加 LCD 支持 我们的开发平台上配置有 640*480 的液晶屏,我们来为它加上驱动支持。 需要在 arch/arm/mach-s3c2410/mach-smdk2410.c 中添加一些内容。 # vi arch/arm/mach-s3c2410/mach-smdk2410.c 首先要包含我们的 LCD 使用的数据结构的头文件,增加如下内容: #include <asm-arm/arch-s3c2410/fb.h> #include <linux/platform_device.h> 然后添加如下内容: static struct s3c2410fb_display up2410_fb[] __initdata = { { .lcdcon5 = (1<<12)|(1<<11)|(1<<9)|(1<<8)|(1<<0), .type = (3<<5), .width = 640, .height = 480, .pixclock = 39721,
第8章 基于ARM的Linux内核移植
![第8章 基于ARM的Linux内核移植](https://img.taocdn.com/s3/m/918b347da417866fb84a8eab.png)
(2)编译测试参考板的Linux内核 为了测试Linux对参考板的支持情况,最好配置编 译Linux内核,在目标参考板上运行测试一下。 对于交叉开发来说,首先应在顶层Makefile中设置 ARCH、CROSS_COMPILE和EXTRA_VERSION 变量,然后才能选择配置指定的体系结构平台。 ARM平台的例子如下 ARCH := arm CROSS_COMPILE := arm-linuxEXTRA_VERSION :=
8.1.2 开发板内核移植 对于内核移植工作来说,主要是添加开发板初始 化和驱动程序的代码。这部分代码大部分跟体系 结构相关,在arch目录下按照不同的体系结构管理 ,下面以ARM S3C2410平台为例,分析内核代码 移植过程。 Linux2.6内核已经支持S3C2410处理器的多种硬件 板,我们可以参考SMDK2410参考板,来移植开 发板的内核
真正系统平台号的定义位置在arch/arm/tools/mach-types 文件。 #machine_is_xx CONFIG_xx MACH_TYPE_xx number smd2410 ARCH_SMDK2410 SMDK2410 193 arch/arm/tools/mach-types中每一行定义一个系统平台号 。“machine_is_xxx”是用来判断当前的平台号名称 ;CONFIG_xxxx是在内核配置时生成的; MACH_TYPE_xxx是系统平台号的定义;number是系 统平台的值。
#include/asm/mach/arch.h
#define MACHINE_START(_type,_name) const struct machine_desc _mach_desc_##_type \ _attribute_((_section_(“.init”))) = { \ .nr = MACH_TYPE_##_type,\ .name = name, … #define MACHINE_END };
第4章 Linux内核裁剪与移植 Linux系统移植(第2版) 教学课件
![第4章 Linux内核裁剪与移植 Linux系统移植(第2版) 教学课件](https://img.taocdn.com/s3/m/b9e85fd0ec3a87c24128c43f.png)
4.1 Linux内核结构 4.2 内核配置选项 4.3 内核裁剪及编译 4.4 内 核 升 级
4.1.2 内核源码目录介绍
Linux内核代码以源码树的形式存放,如 果在安装系统的时候已经安装了源码树, 其源码树就在/usr/src/linux下。
1.arch目录
禁用随机heap(heap堆是一个应用层的概念,即堆对CPU是不可见的,它 的实现方式有多种,可以由OS实现,也可以由运行库实现,也可以在一个 栈中来实现一个堆)
Choose SLAB allocator Profiling support Kprobes
选择内存分配管理器,建议选择 支持系统评测,建议不选 探测工具,开发人员可以选择,建议不选
5.init目录
init子目录包含核心的初始化代码(注意, 不是系统的引导代码)。它包含两个文件 main.c和version.c,这是研究核心如何工 作的一个非常好的起点。
6.ipc目录
ipc子目录包含核心进程间的通信代码。 Linux下进程间通信机制主要包括管道、 信号、消息队列、共享内存、信号量、套 接口。
Physical 选择XIP后,内核存放的物理地址
Kexec system call
Kexec系统调用
4.2.4 网络协议支持相关选项
菜单选项(Networking Support)的子菜 单中包含一些网络协议支持的选项。
选项名 Networking options Amateur Radio support
arch子目录包括了所有和体系结构相关的 核心代码。它的每一个子目录都代表一种 支持的体系结构,例如arm子目录是关于 ARM平台下各种芯片兼容的代码。
linux系统迁移流程
![linux系统迁移流程](https://img.taocdn.com/s3/m/ad7e22ae03d276a20029bd64783e0912a2167c2d.png)
linux系统迁移流程
1. 收集系统信息
在迁移系统之前,首先要收集系统信息。
包括:
(1)硬件清单和设置,如处理器、存储介质、网络,硬件间的互连接细节,如接口卡以及相应的号码;
(2)系统软件,包括操作系统、基础软件,如语言运行时环境、软件编译器及其他基础设施;
(3)应用软件的详细信息,包括应用软件版本号、功能、安装方式以及与其他应用软件的交互细节;
(4)系统的当前状态,包括系统上的数据、目前的登录用户状态等。
2. 迁移方案开发
具体的迁移方案开发,可以采用系统流程文档的方式,或是绘制流程图的方式,都可以,通常如果迁移系统较复杂,则可以采用流程文档的方式,而在系统迁移的过程中,建议收集系统中的相关信息。
3. 确定迁移期程
确定系统的实际迁移期程。
考虑到系统安装、运行及应用软件的部署时间,需要把握好每个步骤的时间顺序,加以安排。
在确定迁移期程时,要注意系统稳定性,故障开发时间以及整体工期质量。
4. 准备移植软件
在确定迁移期程以后,再根据迁移期程以及系统收集的信息,准备移植软件。
准备移植软件时,要考虑两点:一是要选择正确的操作系统和应用软件;二是对于操作系统的软件语言的的移植,要确保系统的功能没有受影响。
5. 测试系统
完成系统移植后,就要进行系统测试,测试的内容有:操作系统的安装,检查系统性能以及软件数据与原系统及恢复数据的正确性。
6. 文档处理
最后,在系统迁移流程完成以后,要编写系统的相关安装文档,记录迁移过程中可能的偏差,并且要收集相应的历史记录,以便进行完善。
Tiny-S3C6410_Linux下LED灯驱动移植过程
![Tiny-S3C6410_Linux下LED灯驱动移植过程](https://img.taocdn.com/s3/m/79c4f1ed6294dd88d0d26b18.png)
UT-S3C6410 ARM11 Linux 下的LED驱动一、实验环境操作系统:fedora13交叉编译环境:arm-Linux-gcc 或以上,6410板子内核源码路径在:忘了,需要厂家给的内核源代码硬件平台:S3C6410开发板(其他类型的开发板也可以注意配置GPIO)注:交叉编译环境一定要装好,一般的开发板给的配套资料中都会有,安装过程也都有详细的过程,如果没有,亲,你只有自己解决了。
也可以联系我(****************),泪奔支持你们。
二、实验原理控制LED是最简单的一件事情,就像学C语言时候写的“hello world”程序一样,是一个入门的程序。
首先来了解一下相关的硬件知识:UT-S3C6410LED原理图UT-S3C6410LED外部引脚图从上面的原理图可以得知,LED与CPU引脚的连接方法如下,高电平点亮。
LED1 -GPM0LED2 -GPM1LED3 -GPM2LED4 -GPM3从数据手册可以找到相应的控制方法。
这里我们以LED1为例,介绍一下LED1的操作方法,其他的类似,请大家自行分析。
通过上面可以得知,需要先将GPM0设置为输出方式。
将寄存器GPMCON低四位配置成0001。
然后将GPMDAT寄存器的第0位置1灯亮,置LED0灯亮,开发板上有四个LED所以要对GPMDAT的低四位进行操作,就可以实现对灯的亮灭操作了。
三、实验步骤1、编写驱动程序mini6410_leds.c#include <linux/miscdevice.h>#include <linux/delay.h>#include <asm/irq.h>//#include <mach/regs-gpio.h>#include <mach/hardware.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/mm.h>#include <linux/fs.h>#include <linux/types.h>#include <linux/delay.h>#include <linux/moduleparam.h>#include <linux/slab.h>#include <linux/errno.h>#include <linux/ioctl.h>#include <linux/cdev.h>#include <linux/string.h>#include <linux/list.h>#include <linux/pci.h>#include <asm/uaccess.h>#include <asm/atomic.h>#include <asm/unistd.h>#include <mach/map.h>#include <mach/regs-clock.h>#include <mach/regs-gpio.h>#include <plat/gpio-cfg.h>#include <mach/gpio-bank-e.h>#include <mach/gpio-bank-k.h>#define DEVICE_NAME "leds"static long sbc2440_leds_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) {switch(cmd) {unsigned tmp;case 0:case 1:if (arg > 4) {return -EINVAL;}tmp = readl(S3C64XX_GPKDAT);tmp &= ~(1 << (4 + arg));tmp |= ( (!cmd) << (4 + arg) );writel(tmp, S3C64XX_GPKDAT);//printk (DEVICE_NAME": %d %d\n", arg, cmd); return 0;default:return -EINVAL;}}static struct file_operations dev_fops = {.owner = THIS_MODULE,.unlocked_ioctl = sbc2440_leds_ioctl,};static struct miscdevice misc = {.minor = MISC_DYNAMIC_MINOR,.name = DEVICE_NAME,.fops = &dev_fops,};static int __init dev_init(void){int ret;{unsigned tmp;tmp = readl(S3C64XX_GPKCON);tmp = (tmp & ~(0xffffU<<16))|(0x1111U<<16); writel(tmp, S3C64XX_GPKCON);tmp = readl(S3C64XX_GPKDAT);tmp |= (0xF << 4);writel(tmp, S3C64XX_GPKDAT);}ret = misc_register(&misc);printk (DEVICE_NAME"\tinitialized\n");return ret;}static void __exit dev_exit(void){misc_deregister(&misc);}module_init(dev_init);module_exit(dev_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("FriendlyARM Inc.");(1)把Hello,Module 加入内核代码树,并编译一般编译2.6 版本的驱动模块需要把驱动代码加入内核代码树,并做相应的配置,如下步骤(注意:实际上以下步骤均已经做好,你只需要打开检查一下直接编译就可以了):Step1:编辑配置文件Kconfig,加入驱动选项,使之在make menuconfig 的时候出现打开linux-2.6.38/drivers/char/Kconfig 文件,添加如图所示:#====================cgf add===================================== config MINI6410_LEDStristate "LED Support for Mini6410 GPIO LEDs"depends on CPU_S3C6410default yhelpThis option enables support for LEDs connected to GPIO lineson Mini6410 boards.#================================================================== 保存退出,这时在linux-2.6.38 目录位置运行一下make menuconfig 就可以在DeviceDrivers Character devices 菜单中看到刚才所添加的选项了,按下空格键将会选择为<M>,此意为要把该选项编译为模块方式;再按下空格会变为<*>,意为要把该选项编译到内核中,在此我们选择<M>,如图,如果没有出现,请检查你是否已经装载了缺省的内核配置文件,(2)Makefile文件Step2:通过上一步,我们虽然可以在配置内核的时候进行选择,但实际上此时执行编译内核还是不能把mini6410_leds.c编译进去的,还需要在Makefile 中把内核配置选项和真正的源代码联系起来,打开linux-2.6.38-cgf/drivers/char/Makefile,obj-$(CONFIG_MINI6410_LEDS) += mini6410_leds.o添加并保存退出Step3:这时回到linux-2.6.38 源代码根目录位置,执行make modules,就可以生成我们所需要的内核模块文件drivers/char/mini6410_leds.ko 了,注意:执行make modules 之前,必须先执行make zImage,只需一次就可以了。
基于三星S5PV210上的LinuxKernel的移植
![基于三星S5PV210上的LinuxKernel的移植](https://img.taocdn.com/s3/m/76b2b4d7ce2f0066f53322ba.png)
5.2 Linux系统启动流程分析Ubuntu的启动过程主要包括四个步骤:BIOS自检:识别主机上可以启动的设备,一次只能从一个设备上启动,如果一个启动设备失效,就可以使用下一个候选启动设备。
通常是硬盘启动。
启动驻留在硬盘主引导记录MBR中的引导程序Grub或lilo。
Grub/lilo引导启动:如果主机中安装多个操作系统,用户通过Grub或lilo,引导启动Ubuntu Linux系统。
此时操作系统还没有装入内存,引导程序只是将控制权转移给内核。
装载Linux内核:在最初的引导过程完成之后,引导程序开始加载Linux内核,Ubuntu 将Linux内核置于/boot目录下。
系统初始化:内核的初始化阶段将启动系统进程和脚本,init进程是系统开始的第一个工作,它是其他所有进程的父进程,并一直处于运行状态。
使用top命令查看进程,可以发现init进程id号永远是第一个。
init进程读取初始化脚本,完成系统相关的管理任务。
图 5-1 linux系统启动流程6 基于S5PV210的linux内核移植6.1 交叉开发环境的搭建在自己的linux中建立交叉开发环境:安装交叉编译工具链:a 解压“Linux-Android\toolchain”目录下的“arm-none-eabi-4.2.2.tgz”到根“/usr/local”目录下,在“/usr/local”目录下会生成“arm”目录:执行命令:#tar zxvf arm-none-eabi-4.2.2.tgzb 修改环境变量“PATH”:$ sudo vim /etc/environment将路径(下面的红色字体,不加引号)添加到PATH变量的最后面,省略号代表原来PATH的值:PATH=……:/usr/local/arm/4.2.2-eabi/usr/bin”c 保存退出后执行:$ source /etc/ environment这样修改的环境变量会立即生效,于是我们就得到交叉编译工具:6.2 Boot Loader移植Bootloader引导程序在操作系统内核运行之前运行一个程序,一般应被写入为0x00开始的物理地址。
三步将数据从Windows全盘移植到Linux-电脑资料
![三步将数据从Windows全盘移植到Linux-电脑资料](https://img.taocdn.com/s3/m/208ca7efc0c708a1284ac850ad02de80d5d80672.png)
三步将数据从Windows全盘移植到Linux-电脑资料你想要从Windows转换到Linux上去吗?你想要从Windows转换到Linux上去吗? 好的,。
就像其他已经走过这一步的用户和企业一样,你可能也是出于Linux的稳定性和开源标准的可靠性而转换系统。
现在你所要做的一切就是仔细地准备好这次转换。
在这里,仔细准备不仅仅意味着在你的系统上装上Linux-不管是你现有的还是一台全新的电脑-它也包括了你的文件、书签、参数和系统设置等。
并且在某些情况下需要去找到一款和你以前所使用的Windows应用所相当的开源应用。
Linux安装过程的本身会因发行版本的不同而各有差异,因此你如果事先没有掌握一定的知识,那就先放下这篇文章,先去熟悉一下安装流程再说。
尽管现在的安装流程要比以前简便很多,但尽可能的去熟悉它对你总会有所帮助。
这个方法能够让你就如何移植你的数据和用户设置做出最佳计划,并且防止意外情况的发生。
数据移植的三种方法有三种基本方法可以将你的用户设置和数据从Windows移植到Linux中:让Ubuntu Linux替你去做。
Ubuntu是目前市面上最为流行的一个Linux发行套件,也是在安装过程中唯一带有内建移植工具的发行套件。
使用第三方应用。
自己动手。
很明显,第三种方法对专业知识的要求是三个方法中最高的,但是它也可以提供给你最大程度上的灵活性,因为你是在自行建立和定制你的系统。
说到灵活性最大化,相比在你现有的电脑上改换操作系统,在一台已装有Linux的新电脑上进行移植将会来的更容易些。
在有一台新电脑的情况下,你可以将那些不确定的东西原封不动的留在旧电脑的系统里。
如果你不得不在你目前装有Windows的电脑上安装运行Linux,那么切记要在移植前备份好你所有的数据。
首先,做备份不管你采用的是哪一种方法,在移植之前最最首要的事情就是将你无法恢复的所有数据做一个完整的备份。
如果你选择将文件移植成新的格式,那么你要保留好原来的那些文件-如果有某个文件在目前无法被正确转换,你始终有原文件在手里。
WiFi驱动移植到Linux
![WiFi驱动移植到Linux](https://img.taocdn.com/s3/m/d268e30a03d8ce2f006623ec.png)
linux下移植之WIFI驱动2010-05-14 22:271.前言硬件平台: imx27+sd8686软件平台: linux内核: 2.6.272.移植思想1, WIFI 模块本身和 cpu 之间的接口;我们的模块和 cpu 之间的接口是 sdio 的,也就是说必须要先保证SDIO 本身是工作的,与SD卡,MMC属于同类型。
主要用到这几个GPIO引脚SD0...SD3,SD2_CMD,SD2_CLK,以及复位引脚PB24.2, WIFI 模块本身的上电时序;模块都有它自己的规律,所以必须要根据 spec 了解它本身的上电过程,严格遵守;3,以太网接口的创建;我们的 WIFI 模块本身是建立在 SDIO 口之上的,而对上都是提供以太网接口的,所以必须要保证这个接口以及创建;4,特殊处理;不同的模块都有它特别的地方,比如我们用的是 8686 和 compo 也就是说它和蓝牙共用天线,所以需要在初始化的时候做特殊的处理,发送特殊的命令,才能工作;3.移植过程1,sdio本身是通过gpio口模拟的,所以需要对gpio口进行配置;static mfp_cfg_t littleton_mmc3_pins[] = {GPIO7_2_MMC3_DAT0,GPIO8_2_MMC3_DAT1,GPIO9_2_MMC3_DAT2,GPIO10_2_MMC3_DAT3,GPIO103_MMC3_CLK,GPIO105_MMC3_CMD,};2,wifi模块本身的初始化;#define MFP_WIFI_V18_ENABLE (GPIO26_GPIO)#define MFP_WLAN_RESETN (GPIO99_GPIO)#define WIFI_WAKEUP_HOST (GPIO104_GPIO) /*error must be changed*/#define WLAN_ENABLE_PIN 26#define WLAN_RESET_PIN 99#define M200_B#ifdef M200_B#define BT_RESET_PIN EXT1_GPIO(1)#define BT_RESET_GPIO (GPIO1_2_GPIO)#else#define BT_RESET_GPIO (GPIO6_2_GPIO)#define BT_RESET_PIN EXT1_GPIO(6)#endifstatic mfp_cfg_t lin2008_wifibt_pins[] = {MFP_WIFI_V18_ENABLE,MFP_WLAN_RESETN,WIFI_WAKEUP_HOST,/*wakeup host*/};static mfp_cfg_t lin2008_wifibt_pins2[] = {MFP_WIFI_V18_ENABLE,};static int wifibt_power_status;int lin2008_poweron_wifibt_board(void){if (!wifibt_power_status) {mxc_mfp_config(ARRAY_AND_SIZE(lin2008_wifibt_pins)) ;gpio_direction_output(WLAN_ENABLE_PIN, 1);gpio_direction_output(WLAN_RESET_PIN, 1);gpio_direction_output(BT_RESET_PIN,1);mdelay(10);gpio_direction_output(BT_RESET_PIN, 0);gpio_direction_output(WLAN_RESET_PIN, 0);// bt need > 5 ms to resetmdelay(5);gpio_direction_output(BT_RESET_PIN, 1);gpio_direction_output(WLAN_RESET_PIN, 1);wifibt_power_status++;return 0;}wifibt_power_status++;return 1;}int lin2008_poweroff_wifibt_board(void){wifibt_power_status--;if (!wifibt_power_status) {mxc_mfp_config(ARRAY_AND_SIZE(lin2008_wifibt_pins2) );gpio_direction_output(WLAN_ENABLE_PIN, 0);return 0;}return 1;}3,以太网接口的创建这里在 android 平台上要做特殊的处理,也就是 firmware 的位置要放好,否则加载 firmware 始终不成功,那么以太网接口就不会被创建了;需要把 helper_sd.bin 放在 /lib/firmware/mrvl 下面(若没有,则创建一个);把 sd8686.bin 放在 /lib/firmware/mrvl 下面(同上);4,特殊的处理对于 8686 模块需要做特殊的处理,在注册完以太网接口以后,需要添加下面这段话 :{#define BCA_CFG_NUM_OF_MODES 4#define BCA_CFG_SINGLE_ANT_WITH_COEX 0#define BCA_CFG_DUAL_ANT_WITH_COEX 1#define BCA_CFG_SINGLE_ANT_FOR_BT_ONLY 2#define BCA_CFG_MRVL_DEFAULT 3#define BCA_CONFIG BCA_CFG_SINGLE_ANT_WITH_COEXstatic u32 BCACfgTbl[BCA_CFG_NUM_OF_MODES][3] = {//0xA5F0, 0xA58C, 0xA5A0{ 0xa027181c, 0x40214, 0xd24d}, //Mode 0: Single ANT with COEX enable{ 0xa027181c, 0x40211, 0xd24d}, //Mode 1: Dual ANT with COEX enable{ 0xa027181c, 0x40222, 0xd21c}, //Mode 2: single ANT for BT only{ 0xa027801d, 0x18000, 0xd21c}, //Mode 3: Marvell default};wlan_offset_value RegBuffer;RegBuffer.offset = (0xA5F0);RegBuffer.value = BCACfgTbl[BCA_CONFIG][0];wlan_prepare_cmd(priv,HostCmd_CMD_MAC_REG_ACCESS,HostCmd_ACT_GEN_SET,HostCmd_OPTION_WAITFORRSP,0,&RegBuffer);RegBuffer.offset =(0xA58C);RegBuffer.value = BCACfgTbl[BCA_CONFIG][1];wlan_prepare_cmd(priv,HostCmd_CMD_MAC_REG_ACCESS,HostCmd_ACT_GEN_SET,HostCmd_OPTION_WAITFORRSP,0,&RegBuffer);RegBuffer.offset = (0xA5A0);RegBuffer.value = BCACfgTbl[BCA_CONFIG][2];wlan_prepare_cmd(priv,HostCmd_CMD_MAC_REG_ACCESS,HostCmd_ACT_GEN_SET,HostCmd_OPTION_WAITFORRSP,0,&RegBuffer);}基本上这样就可以工作了;4.其它问题Sdio 口默认是用的 3.2V 这里需要修改相关的地方强制设成是1.8V ,否则 SDIO 接口将无法工作;Linux平台上需要移植一些上层软件才能验证,比如iwconfig , iwlist 等。
uclinux移植教程
![uclinux移植教程](https://img.taocdn.com/s3/m/a2acc6270722192e4536f6b9.png)
学习开发套件V3.0中嵌入Uclinux的步骤和方法在学习开发套件V3.0中嵌入Uclinux的步骤和方法,硬件系统为EP1C6,2Mflash,8Msdram.开发环境:SOPC学习开发套件V3.0,型号EP1C6。
QII5.1+SP2,NiosII IDE5.1+SP1。
一 .安装nios2linux开发包nios2linux-1.4二 .建立硬件系统1. QII中建一工程linux_nios,并添加NIOSII CPU,QII工程和平常的建立并没有什么区别,只要得加上flash和sdram,因为这里只是对linux的简单调试,所以SOPC中只添加LED和UART等几个简单外设。
如下图:注意为防止不必要的麻烦,这里尽量使用默认名字。
如果想用USB连接电脑,在QII中把串口连接到USB线的IO管脚上即可。
我们的工程中是两个口都接了,使用串口或者USB口都行。
三.建立软件环境打开NIOSII IDE3.1 建立linux内核file-> new-> project 后如下图:注意:在安装Microtronix_uclinux_nios2开发包后在IDE中分增加出如上图的Microtronix NiosII选项如果没有可以按下面方法解决:1)、打开cmd,在 开始->运行 那里输入cmd2)、cd到你的NiosII的工作目录下面,我的NiosII安装在D盘,如下:3)、在这里输入命令nios2-ide.exe –clean,进入NiosII IDE的clean模式,选择workspace:这是在New->Other那里你就可以看到那个linux的目录项了。
关了IDE窗口和cmd窗口,这样就可以正常看到Microtronix_linux了。
3.2 输入内核名字按next:finish完成四. 构建内核:4.1 右键内核名,在弹出菜单中选择Configure Kernel如下:后进入如下界面:因为flash只有2M因此构造的内核应尽可能的小,其大小不能超过1M。
描述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移植之子目录下的built-in.o生成过程分析
![Linux移植之子目录下的built-in.o生成过程分析](https://img.taocdn.com/s3/m/4ac3f60554270722192e453610661ed9ad515589.png)
Linux移植之⼦⽬录下的built-in.o⽣成过程分析在中罗列出了最后链接⽣成vmlinux的过程。
可以看到在每个⼦⽬录下都有⼀个built-in.o⽂件。
对于此产⽣了疑问built-in.o⽂件是根据什么产⽣的。
arm-linux-ld -EL -p --no-undefined -X -o vmlinux -T arch/arm/kernel/vmlinux.ldsarch/arm/kernel/head.o arch/arm/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/arm/kernel/built-in.oarch/arm/mm/built-in.o arch/arm/common/built-in.o arch/arm/mach-s3c2410/built-in.o arch/arm/mach-s3c2400/built-in.oarch/arm/mach-s3c2412/built-in.o arch/arm/mach-s3c2440/built-in.o arch/arm/mach-s3c2442/built-in.o arch/arm/mach-s3c2443/built-in.oarch/arm/nwfpe/built-in.o arch/arm/plat-s3c24xx/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.osecurity/built-in.o crypto/built-in.o block/built-in.o arch/arm/lib/lib.a lib/lib.a arch/arm/lib/built-in.o lib/built-in.odrivers/built-in.o sound/built-in.o net/built-in.o --end-group .tmp_kallsyms2.o1、测试,在linux⽬录下添加⼀个test⽂件夹,在⽂件夹⾥⾯添加了test.c 和 Makefile。
linux移植的一般过程
![linux移植的一般过程](https://img.taocdn.com/s3/m/2ea1383ef02d2af90242a8956bec0975f465a4c1.png)
linux移植的一般过程
1.硬件平台的分析:对要移植的硬件平台进行分析,了解其处理器架构、内存结构、设备接口等硬件特性。
2. 内核选择和配置:根据硬件平台的特性选择相应的Linux内核版本,并进行配置,包括启用或禁用某些功能、添加驱动程序等。
3. 引导程序开发:根据硬件平台的启动方式,开发或适配引导程序(bootloader),负责加载内核和设备驱动程序。
4. 设备驱动程序的开发或适配:根据硬件平台的设备特性,开发或适配相应的设备驱动程序,使其能够被内核识别和使用。
5. 文件系统的制作:根据硬件平台的存储设备特性,制作相应的文件系统,包括文件系统类型、文件系统结构、文件系统大小等。
6. 应用程序的移植:根据硬件平台的特性,移植相应的应用程序,确保其能够正常运行。
7. 调试和优化:进行测试和调试,解决可能出现的问题,并优化系统性能。
8. 发布和维护:完成移植后,进行发布和维护工作,包括文档编写、系统更新等。
- 1 -。
linux上移植qt经验分享
![linux上移植qt经验分享](https://img.taocdn.com/s3/m/e5de69253169a4517723a395.png)
//公司ARM9平台
Linux version 2.6.39 (root@ubuntu) (gcc version 4.3.5 (Buildroot 2011.05) ) #74 Tue Jan 8 19:35:16 CST 2013
//虚拟机上的x86平台
libtool: Version mismatch error. This is libtool 2.2.6b, but the
libtool: definition of this LT_INIT comes from libtool 2.2.10.
libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6b
/* Define to rpl_malloc if the replacement function should be used. */
#define malloc rpl_malloc
把上面的几句话删掉后重新编译,就正常了,交叉编译時autotools认为我的工具链的libc中不包含malloc和realloc,然后擅自做主张地替换成了rpl_malloc
此处显示gcc version 4.2.4 但实际中需要用 gcc version 4.3.5交叉编译才能运行,与系统移植时的命名有关。
液晶屏:10.4寸(800×600)
---------------------------------------------------------------------
export set TSLIB_CONSOLEDEVICE=none
嵌入式linux内核移植步骤
![嵌入式linux内核移植步骤](https://img.taocdn.com/s3/m/85c3f3851b37f111f18583d049649b6648d709bd.png)
嵌入式linux内核移植步骤嵌入式Linux内核移植步骤嵌入式Linux内核移植是将Linux内核移植到特定的硬件平台上的过程。
在进行嵌入式Linux内核移植之前,需要先了解目标硬件平台的相关信息,包括处理器架构、硬件接口、设备驱动等。
本文将介绍嵌入式Linux内核移植的主要步骤,以帮助读者了解移植的过程。
1. 获取源代码需要从官方或其他可靠的渠道获取Linux内核的源代码。
可以选择下载最新版本的稳定内核,也可以根据需要选择特定版本的内核。
获取源代码后,解压到本地目录。
2. 配置内核在进行内核配置之前,需要根据目标硬件平台选择适当的配置文件。
内核配置文件包含了编译内核所需的各种选项和参数。
可以使用make menuconfig或make defconfig命令进行内核配置。
在配置过程中,需要根据目标硬件平台的特点进行相应的配置,如选择正确的处理器类型、设备驱动等。
3. 编译内核配置完成后,可以使用make命令编译内核。
编译过程可能会比较耗时,需要根据计算机性能进行相应的等待。
编译完成后,会生成vmlinuz和相关的模块文件。
4. 编译设备树设备树是描述硬件平台的一种数据结构,用于在内核启动时传递硬件信息给内核。
如果目标硬件平台需要使用设备树,需要将设备树源文件编译为二进制文件。
可以使用device tree compiler(dtc)工具来编译设备树。
5. 烧录内核内核编译完成后,需要将生成的vmlinuz文件烧录到目标硬件平台上。
根据硬件平台的不同,可以使用不同的烧录工具,如dd命令、fastboot等。
烧录完成后,可以通过串口或其他方式查看内核启动信息。
6. 配置文件系统内核烧录完成后,需要为目标硬件平台配置文件系统。
可以选择使用已有的文件系统,如busybox、buildroot等,也可以根据需求自行定制文件系统。
配置文件系统包括选择合适的文件系统类型、添加必要的应用程序和驱动、配置网络等。
Linux内核移植与根文件系统构建
![Linux内核移植与根文件系统构建](https://img.taocdn.com/s3/m/ef6bb54633687e21af45a920.png)
Linux内核移植
10、SCSI device support
如果有SCSI 设备(SCSI 控制卡,硬盘或光驱等)则选上这项。目前SCSI 设备类型已经比较多,要具体区分它们你得先了解他们所使用的控制 芯片类型。2.6.X 内核中对各类型SCSI设备已经有更具体详细的支持。 <*> scsi support; <*>scsi disk support;
Linux内核移植
5、Networking option
网络选项,它主要是关于一些网络协议的选项。Linux 功能也就是在于 对网络功能的灵活支持。这部分内容相当多,根据不同情况,一般我 们把以下几项选上。 5.1、 packet socket 包协议支持,有些应用程序使用Packet 协议直接同网络设备通讯, 而不通过内核中的其它中介协议。同时它可以让你在TCP 不能用时找 到一个通讯方法。 5.2、 unix domain socket 对基本UNIX socket 的支持 5.3、 TCP/IP networking 对TCP/IP 协议栈的支持,当然要。如果你的内核很在意大小,而且 没有什么网络要就,也不使用类似X Window 之类基于Unix Socket 的应用那你可以不选,可节省大约144K 空间。
二、内核与根文件系统实验
• • • • 安装完成后依次执行以下命令: [root# root] Make dep [root# root] Make [root# root] Make PREFIX=./root install
由于根文件系统是内核启动时挂载的第一个文件系统那么根文件系统就要包括linux启动时所必须的目录和关键性的文件例如linux启动时都需要有init目录下的相关文件在linux挂载分区时linux一定会找etcfstab这个挂载文件等根文件系统中还包括了许多的应用程序bin目录等任何包括这些linux系统启动所必须的文件都可以成为根文件系统
LINUX系统VPN(L2TPIPSec)模块移植——IPSec模块设计毕业论文
![LINUX系统VPN(L2TPIPSec)模块移植——IPSec模块设计毕业论文](https://img.taocdn.com/s3/m/08d35c7cdd3383c4ba4cd281.png)
本科毕业论文题目:LINUX系统VPN(L2TP+IPSec)模块移植——IPSec模块设计姓名:学院:软件学院系:软件工程专业:软件工程年级:学号:指导教师:职称:年月LINUX系统VPN(L2TP+IPSec)模块移植—— IPSec模块设计[摘要]虚拟专网是指在公共网络中建立专用网络,数据通过安全“管道”在公共网络中传播。
使用VPN有节省成本、提供远程访问、扩展性强、便于管理和实现全面控制等好处,是目前和今后网络服务的重点项目。
因此必须充分认识虚拟专网的技术特点,建立完善的服务体系。
目前建造虚拟专网的国际标准有IPsec和L2TP。
其中L2TP是虚拟专用拨号网络协议,是IETF根据各厂家协议进行起草的,目前尚处于草案阶段。
IPSEC是一系列基于IP网络(包括Intranet、Extranet和Internet)的,由IETF正式定制的开放性IP安全标准,是虚拟专网的基础,已经相当成熟可靠。
L2TP协议草案中规定它(L2TP标准)必须以IPSEC为安全基础。
IPSec在Linux支持方面有两个主要的分类,一为Frees/WAN,已经分裂为两个项目,Openswan与 Strongswan。
本文使用Frees/WAN实现IPSec的功能,并详细分析了IPSec的工作原理,配置方法以及配置过程。
最终把Frees/WAN移植到路由器的μCLINUX系统中,使得移植后的系统稳定、功能完善,并且和LINUX操作系统以及CISCO的路由器VPN(L2TP+IPSEC)相兼容。
最终保证通信加密,实现网络通信安全。
[关键字]虚拟专用网;IPSec;Frees/WAN;μCLINUXLINUX system VPN (L2TP + IPSec) module transplant—— IPSec module design[Abstract]Virtual Private Network is the private network that established in the public network, data is transmitting through the channel in the public network. There are advantages of cost savings, providing remote access, strong expansion, convenient to control, and other benefits when using a VPN. It is the key projects for current and future network services. Therefore we must fully understand the technical characteristics of virtual private network, establish, and improve the service system.At present, IPsec and L2TP are two international standards of constructing a virtual private network. L2TP, which is a virtual private dial-up network protocols and drafted according to the agreement of the manufacturers by IETF, is now at a draft stage. IPSEC is a series of open standard that for IP security basing on IP network (including the Intranet, Extranet and Internet), and is drafted by IETF. IPSEC is the foundation of virtual private network, and is quite mature and reliable. L2TP must be based on IPSEC ordained by L2TP draft agreement.There are two main classifications of IPSec supporting on LINUX. One is Frees / WAN, divided into two projects, Openswan and Strongswan. In this paper, we use Frees/WAN to realize IPSec, and furthermore it will analyze through about the working principle, the targeting methods and configuration process about IPSec. Frees/WAN will be eventually migrated to μCLINUX system of the router. After the transplant, system should be stable, comprehensive, and make LINUX operating systems, routers and CISCO VPN (L2TP + IPSEC) compatible. Eventually make sure that the communication is encrypted, the network is secure.[Key words] Virtual Private Network; IPSec; Frees/WAN; μCLINUX目录引言 (1)第一章 IPSec基本思想 (2)IPSec基本原理 (2)1.1.1 IPSec基本组件 (2)1.1.2 IPSec概念划分 (3)1.1.3 IPSec保护机制 (4)1.1.4 IPSec加密技术 (4)IPSec工作模式 (6)IPSec体系模型 (7)IPSec 配置步骤 (7)IPSec工作过程 (7)第二章 Openswan 构建思想 (10)Openswan 概述 (10)Openswan 的连接方式 (10)Openswan 的认证方式 (10)Openswan 的环境配置 (11)2.4.1安装内核源代码 (11)2.4.2下载Openswan及相关补丁 (11)2.4.3选择需要的内核选项 (11)2.4.4编译安装内核 (12)第三章 Openswan 构建过程 (13)安装Openswan (13)NET-TO-NET方式配置Openswan (13)Road Warrior方式配置Openswan (15)安装监听网络 (16)几种捕获包格式 (17)第四章建立编译环境与内核移植 (20)建立编译环境 (20)BLOB移植 (21)uClinux针对硬件的改动 (22)uClinux的移植 (24)网络监听分析 (30)结论 (34)致谢 (35)参考文献 (37)Contents引言 (1)第一章 IPSec基本思想 (2)IPSec基本原理 (2)1.1.1 IPSec基本组件 (2)1.1.2 IPSec概念划分 (3)1.1.3 IPSec保护机制 (4)1.1.4 IPSec加密技术 (4)IPSec工作模式 (6)IPSec体系模型 (7)IPSec 配置步骤 (7)IPSec工作过程 (7)第二章 Openswan 构建思想 (10)Openswan 概述 (10)Openswan 的连接方式 (10)Openswan 的认证方式 (10)Openswan 的环境配置 (11)2.4.1安装内核源代码 (11)2.4.2下载Openswan及相关补丁 (11)2.4.3选择需要的内核选项 (11)2.4.4编译安装内核 (12)第三章 Openswan 构建过程 (13)安装Openswan (13)NET-TO-NET方式配置Openswan (13)Road Warrior方式配置Openswan (15)安装监听网络 (16)几种捕获包格式 (17)第四章建立编译环境与内核移植 (20)建立编译环境 (20)BLOB移植 (21)uClinux针对硬件的改动 (22)uClinux的移植 (24)网络监听分析 (30)结论 (34)致谢 (35)参考文献 (37)引言IPSec(IP Security)是一种较老的也是采用的最为广泛的VPN技术,IPSec可以让我们在不改变外部防火墙规则的情况下,在内核级别相当容易地做出安全处理,确保什么能通过隧道或什么不能;其在实现NET-TO-NET以及HOST-TO-NET的配置方面也表现出了很大的灵活性。
linux物理服务器到虚拟机的整机迁移教程
![linux物理服务器到虚拟机的整机迁移教程](https://img.taocdn.com/s3/m/77c21514f705cc17552709fb.png)
在本文中,学习如何使用开源的 Clonezilla Live 克隆软件将物理服务器转换成虚拟服务器。
具体而言,就是如何使用基于映像的方法将物理服务器迁移到虚拟服务器。
如今,驱动数据中心的两大概念 — 经济和环保 — 使服务器虚拟化成为 IT 世界的 一个热门话题。
许多硬件和软件供应商都提供了解决方案。
虚拟解决方案可以带来这些优势: 您可以在服务器之间轻松地迁移虚拟机,虚拟机可以配置为克隆映像以供复制使用(例如, 在软件开发和测试期间使用)。
实现虚拟化服务器整合的具体过程取决于您的起点:• 如果您是从零开始设计系统,那么也将从头实现虚拟化。
• 如果您的系统已经拥有物理状态,那么将从物理环境迁移到虚拟环境中。
我将这第二个过程称为物理 -虚拟迁移,即 PV2 ,并且这正是本文要论述的主题。
在 实施 P2V 迁移的过程中,有一些(手动和自动)方法通常可以提供帮助。
我将介绍这些方 法,并向您展示如何使用Clonezilla Live ,这是一种基于映像的解决方案,它能将物理服 务器转换为虚拟机。
使用 Clonezilla Live ,首先从物理服务器创建一个系统映像,然后使用启动 CD 将 映像恢复到虚拟机的硬盘中。
Clonezilla Live 使用起来非常便捷,并且可以为软件开发人 员、系统管理员以及希望在维护初始副本的同时分析系统副本 (并避免可能的硬件组配不当 问题)的工程师提供帮助。
注意:虚拟和物理系统的硬件和软件跨越的范围很广,因此本文介绍的步骤仅作为一 个参考。
您可能需要调整这些步骤,以使它们匹配您的迁移。
Clonezilla Live 简介Clonezilla 是一个开源的与 Norton Ghost 类似的复制和克隆解决方案,可以使用它Live.Clonezilla SE 最适合跨越网络同步备份和恢复多个服务器。
独机器克隆的更加轻量级的构建。
Clonezilla Live 是 Debian Live 和 Clonezilla 的结合;它提供以下特性和优点:• 它只克隆硬盘中被使用的块。
ARM-Linux移植之(三)——init进程启动流程分析
![ARM-Linux移植之(三)——init进程启动流程分析](https://img.taocdn.com/s3/m/f99d13ecb8f67c1cfad6b87f.png)
ARM-Linux移植之(三)——init进程启动流程分析Y-Kee转载请注明来自于衡阳师范学院08电2 Y-Kee /ayangke, QQ:843308498我们通常使用Busybox来构建根文件系统的必要的应用程序。
Busybox通过传入的参数来决定执行何种操作。
当init进程启动时,实际上调用的是Busybox的init_main()函数,下面我们来分析这个函数,看init进程究竟是怎样一个流程。
我分析的Busybox源码是1.7.0版本的,其他版本会略有不同。
部分代码省略我们只看关键性代码。
首先看init_main函数int init_main(int argc, char **argv);int init_main(int argc, char **argv){……………………………..……………………………..//初始化控制台console_init();………………………………if (argc > 1&& (!strcmp(argv[1], "single") || !strcmp(argv[1], "-s") || LONE_CHAR(argv[1], '1'))) {new_init_action(RESPAWN, bb_default_login_shell, "");} else {//因为我们启动的init进程没有任何参数,所有argc==1,执行的是这一句parse_inittab();}……………………………………………………………………………………run_actions(SYSINIT);run_actions(WAIT);run_actions(ONCE);………………………………………………while (1) {run_actions(RESPAWN);run_actions(ASKFIRST);wpid = wait(NULL);while (wpid > 0) {a->pid = 0;}wpid = waitpid(-1, NULL, WNOHANG);}}parse_inittab实际上对/etc/inittab文件里面的配置进行解释,如果没有,则设置一些默认设置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我对linux移植过程的整体理解
首先,要开始移植一个操作系统,我们要明白为什么要移植。
因为我们要在另外一个平台上用到操作系统,为什么要用操作系统,不用行不行?这个问题的答案不是行或不行来回答。
单片机,ARM7都没有操作系统,我们直接对寄存器进行操作进而实现我们需要的功能也是可以。
但是,一些大型的项目设计牵涉很多到工程的创建,单纯对裸机进行操作会显得杂乱庞大这时候需要一个操作系统。
操作系统的功能能。
我们用到操作系统,一方面可以控制我们的硬件和维护我们的硬件,另一方面可以为我们得应用程序提供服务。
呵呵,这样说还是很抽象,具体到项目中就可以感受到操作系统的好处。
Linux操作系统的移植说白了总共三大部分:一,内核的重新编译。
二,bootloader的重新编译。
三,文件系统的制作。
在这里要解释这些名词也很不好说的明白,首先,一个完整的操作系统是包括这三大部分的,内核、Bootloader、文件系统。
我们知道Linux有很多版本,不同的版本只是文件系统不一样而内核的本质都是一样的。
那么,我们开始进行移植。
首先是内核。
1.我们需要下载一个内核源码,这个在网上很好下载,下载后,保存下。
2.把这个压缩包复制到ubuntu(我用的版本)里,一般复制到/home/dong/SoftEmbed(我的目录,呵呵),然后呢,我们需要对这个内核进行修改重新编译,为什么要这样做,因为我们要让内核为我们的ARM服务,所以需要修改一些东西的。
至于具体如何修改,我已经写在另外一个文档里了。
3.修改的内容主要是 Makefile(设置体系架构为arm,设置交叉编译器)、时钟频率(我们板子的频率)、内核配置(进入内核配置主要是设置一些选项以适合我们的开发板)。
具体设置步骤我会另加说明。
4.设置好后我们需要重新编译内核,用的是make zImage命令。
编译后就生成了我们自己编译好的内核,呵呵。
接下来,进行文件系统的移植。
我们需要一个Yaffs2文件系统压缩包。
1.复制这个压缩包到/home/dong/SoftEmede(我自己在ubuntu里建的目录,呵呵),2.解压,会生成一个文件夹。
3.给内核打补丁,通过执行 ./patsh-ker.sh c /内核目录。
呵呵4.进入 make menuconfig中配置选项,要选择对yaffs2的支持,具体怎么设置我写在另一个文档。
接下来,我们进行根文件制作,需要一个制作工具 mkyaffs2image.taz.还是复制到我自己的目录下,解压,安装。
接着,我们需要对Busybox的移植、配置,具体移植、配置步骤我另写,呵呵。
最后是构建我们自己的文件系统,到此我们已经完成了内核移植和文件系统的制作。
准备移植,呵呵。
今天先写到这里,累了。