linux arm 移植手册(分享)

合集下载

arm-linux下usb转串口移植手册

arm-linux下usb转串口移植手册

arm-linux下usb转串口移植手册:讲述在嵌入式平台上,移植usb转串口的步骤:1、配置Kernel2、文件系统配置等。

Kernel:在配置内核时:加入usb转串口的支持、加入usb转串口器件的支持。

不同厂家的usb转串口工具需要的驱动可能不一样。

Device Drivers --->USB support --->--- USB port driversUSB Serial Converter support ---><*> USB Serial Converter support[*] USB Serial Console device support[*] USB Generic Serial drivert< > USB AIRcable Bluetooth Dongle Driver (EXPERIMENTAL)<*> USB FTDI Single Port Serial Driver (EXPERIMENTAL)本次实验才用的是FTDI的usb转串口工具在配置Kernel时,还可以加入对其他厂家的驱动支持。

文件系统:1、在/dev目录下建立设备文件/dev/ttyUSB0mknod /dev/ttyUSB0 c 188 02、在运行/sbin/getty登陆命令之前要先设置好:usb转串口对应端口的波特率、停止位等。

int usb_to_serial_init(viod){iUSBTORS232 = open( "/dev/ttyUSB0", O_RDWR);if (iUSBTORS232 iRS232 < 0){printf("Can't open device dev/ttyUSB00");return -1;}set_speed(iUSBTORS232 iRS232,BAUDRA TE);set_Parity(iUSBTORS232 iRS232,8,1,'n');close(iRS232);}3、在/etc/inittab 加入如下命令。

Linux内核移植到ARM

Linux内核移植到ARM

Linux内核移植到ARM在Linux内核移植到ARM处理器时,有一个问题不能忽视,那就是移植Boot-loader,Linux内核启动部分的代码需要判断从Boot-loader传递过来的寄存器值。

为什么需要Boot-loader呢?这与硬件本身的启动方式有关,有了Boot-loader可以方便系统的开发。

通过这段Boot-loader小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

(1)Boot-loader所支持的CPU和嵌入式板每种不同的CPU体系结构都有不同的Boot-loader,有些Boot -loader 也支持多种体系结构的CPU,如U-Boot。

除了依赖于CPU 的体系结构外,Boot-loader实际上也依赖于具体的嵌入式板级设备的配置。

这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,要想让运行在一块板子上的Boot-loader程序也能运行在另一块板子上,通常也都需要修改Boot-loader的源程序。

(2)Boot-loader的安装媒介系统加电或复位后,所有的CPU通常都从某个预先安排的地址上取指令。

比如,基于ARM内核的CPU在复位时通常都从地址Ox00000000取它的第一条指令。

而基于CPU构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM或Hash等)被映射到这个预先安排的地址上。

因此在系统加电后,CPU将首先执行Boot-loader程序。

如图所示就是一个同时装有Boot-loader、内核的启动参数、内核映像和根文件系统映像的固态存储设备的典型空间分配结构图。

图固态存储设备的典型空间分配结构(3)用来控制Boot-loader的设备或机制主机和目标机之间一般通过串口建立连接,Boot-loader软件在执行时通常会通过串口来进行I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。

嵌入式Linux在ARM上的移植

嵌入式Linux在ARM上的移植

Linux在ARM上的移植摘要:本文是基于ARM的平台上进行嵌入式操作系统LINUX的移植,其中ARM选S3C2410。

文中首先对Linux操作系统内核进行了介绍,然后对系统引导程序(BootLoader)进行了设计,最后给出了Linux在ARM上的移植过程。

关键字:Linux、ARM、BootLoader、移植一、Linux操作系统内核Linux作为一种优秀的操作系统,近几年在嵌入式领域成为了极具潜力的嵌入式操作系统。

本文的主要内容是将Linux系统的内核移植到ARM(基于ARM9S3C2410)上。

Linux操作系统主要由内核、Shell、文件结构组成。

其中内核是系统的心脏,是运行程序和管理磁盘、打印机等硬件设备的核心程序。

(1)Linux内核结构Linux内核是整个Linux系统的灵魂,负责整个系统的内存管理、进程调度和文件管理。

Linux内核与大部分UNIX内核一样是单内核体系结构的,能够根据需要定制内核映像的尺寸,具有很大灵活性,不需要重新编译内核和引导就能检验新的内核组件,这个特性对于嵌入式而言是非常有好处的,方便用户构筑自己的个人内核。

Linux内核由5个主要的子系统组成:进程调度、内存管理、虚拟文件系统、网络接口和进程间通信。

(2)Linux内核代码组织结构本文将对LINUX进行内核移植,其内核代码分布如图所示。

下面分别对其进行说明:/arch目录包含了目前Linux支持的硬件结构,如i386、alpha、arm等的内核代码;/drivers目录包含了内核中所有的设备驱动程序;/fs目录包含了所有的文件系统的代码;/include目录包含了建立内核代码所需的大部分库文件,这个模块利用其它模块重建内核;/init目录包含了内核的初始化代码,内核从此处工作;/ipc目录包含了进程间通信代码;/kernel子目录包含了主内核代码;/mm目录包含所有独立于CPU体系结构的内存管理代码;/net目录包含了和网络相关的代码,如ipv4、ipv6等。

ARM-Linux移植

ARM-Linux移植

ARM-Linux内核移植之(一)——内核启动流程分析转载请注明来自于衡阳师范学院08电2 K-Style /ayangke,QQ:843308498 邮箱:yangkeemail@内核版本:2.6.22 为什么要采用这样一个较低的版本进行移植了,因为韦东山大牛说了,低版本的才能学到东西,越是高版本需要移植时做的工作量越少,学的东西越少。

内核启动分为三个阶段,第一是运行head.S文件和head-common.S,第三个阶段是允许第二是运行main.c文件对于ARM的处理器,内核第一个启动的文件是arc/arm/kernel下面的head.S文件。

当然arc/arm/boot/compress下面也有这个文件,这个文件和上面的文件略有不同,当要生成压缩的内核时zImage时,启动的是后者,后者与前者不同的时,它前面的代码是做自解压的,后面的代码都相同。

我们这里这分析arc/arm/kernel下面的head.S文件。

当head.S 所作的工作完成后它会跳到init/目录下跌的main.c的start_kernel函数开始执行。

第一阶段:首先截取部分head.S文件ENTRY(stext)msr cpsr_c,#PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode@ andirqs disabledmrc p15,0, r9, c0, c0 @ get processor idbl __lookup_processor_type @ r5=procinfo r9=cpuidmovs r10,r5 @ invalidprocessor (r5=0)?beq __error_p @ yes, error 'p'bl __lookup_machine_type @ r5=machinfomovs r8,r5 @ invalidmachine (r5=0)?beq __error_a @ yes, error 'a'bl __create_page_tables/**The following calls CPU specific code in a position independent*manner. See arch/arm/mm/proc-*.S fordetails. r10 = base of*xxx_proc_info structure selected by __lookup_machine_type*above. On return, the CPU will be readyfor the MMU to be*turned on, and r0 will hold the CPU control register value.*/ldr r13,__switch_data @ address to jump toafter@ mmuhas been enabledadr lr,__enable_mmu @ return (PIC)address第一步,执行的是__lookup_processor_type,这个函数是检查处理器型号,它读取你的电路板的CPU型号与内核支持的处理器进行比较看是否能够处理。

基于ARM9嵌入式Linux内核的移植

基于ARM9嵌入式Linux内核的移植
码 进行裁 减移植 。

ห้องสมุดไป่ตู้
I 在 相 关 地 方 增 加 修改根 目录中的 Ma ef 文件。这个 j“ CONFI ARCH— 3 4 0 = kfe l ¥ G— S C2 1 ”
Ma e l  ̄ kfe 件的任务有两个 : i3 产生v iu  ̄ i“ ml x n y”一 这个语句。 。 件 和 产 生 内 核模 块 。为 了达 到 此 目的 , 1 关键点: of 文件决定了m ncni cn g i euof g Ma ei 将递 归进入内核的各个子 目录中, 菜单的 内容 。把使 用的平 台加在需要的地 kf e l 分别调用位于这些子 目录中的 Ma ef 。 k f e j l 方,这样在配置Ln x时就能够选择是否 iu 打开最上 层目录下的 Ma ei 文 件, 1 k fl e 支持 你的 平台 了。 这个文件 中修改后 的内容如 下所示 : 1 4 . 改ac / r b o )修 r h a m/ o t目录下的 ( )指定 目标平台 :ARCH:= a m Ma ei 文件 1 r kfe l (2 ) 指 定 交 叉 编 译 器 : { 编译出来的内核是存放在 ac / r r am/ h
解压到 目标板的地址 :修改 b o 目录下的 ot 2. )根据电路设置T XT DD E A R { kfe Mael文件 ; i 修改 cm r s / kfe o pe e Mael sd i 因为 2. 1 4. 8版本 的内核还没有包含 1文 件 。
¥C 40 3 2 1X处理器 ,所以要手动增加下面内 } 5. ac /r / e e 目 ) 修改 r am kr l 录下的文 h n 容 『 件 i q¥C FG AR H_ 3 2 1)y f ((ON I_ C S C 40,) e

Linux系统在ARM上的内核移植资料

Linux系统在ARM上的内核移植资料

物理与电子工程学院《嵌入式系统设计》课程小论文课题题目 Linux系统在ARM上的内核移植系别物理与电子工程学院年级专业电子科学与技术学号学生姓名日期 2012.6.1目录摘要 (2)1.课题要求 (3)1.1 课题目的 (3)1.2 课题背景 (3)2. Linux系统及Linux内核以及移植简介 (4)2.1 Linux系统简介 (4)2.2 Linux内核简介 (4)2.3 内核移植简介 (6)2.3.1 移植的基本概念 (6)2.3.2 内核移植的准备 (6)3.内核移植 (7)3.1 内核移植基本流程 (7)3.2 内核配置 (7)3.2.1 修改Makefile (7)3.2.2 设置NAND Flash分区 (7)3.2.3 配置内核选项 (9)3.3 内核编译 (10)3.3.1 交叉编译环境的建立 (10)3.3.2 交叉编译 (11)3.4 内核下载 (11)4.技术实现问题 (13)5. 结束语 (14)参考文献 (15)设计性实验报告成绩:指导教师签名: (16)摘要随着计算机技术、通信技术以及Internet的飞速发展。

嵌入式系统已得到越来越广泛的应用。

与此同时,嵌入式系统的复杂性也在不断增加,嵌入式操作系统已经成为其中最重要的组成部分。

本文是基于ARM 的平台上进行嵌入式操作系统LINUX 的移植,其中ARM 选用S3C2410。

文中首先对内核移植的背景以及Linux 操作系统内核进行了介绍, 然后对移植的步骤及要点做了详细的介绍, 最后实现编译的过程。

操作系统移植是嵌人式系统开发的前提和基础,对嵌入式系统的开发具有重要意义1.课题要求1.1 课题目的1. 了解移植的基本概念;2. 熟悉Linux内核的配置过程;3. 熟悉Linux内核的编译过程;4. 了解根文件系统的作用;5. 学会BusyBox工具的使用;6. 学会构建Cramfs文件系统。

1.2 课题背景Linux内核发展速度迅猛,是目前市场上唯一可以挑战Windows 的操作系统。

ARM开发教程之ARM Linux系统移植步骤

ARM开发教程之ARM Linux系统移植步骤


千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开发教程之LINUX简介 LINUX简介 LINUX
在众多嵌入式操作系统中,Linux目前发展最快、应用最为 广泛[1]。性能优良、源码开放的Linux具有体积小、内核可 裁减、网络功能完善、可移 植性强等诸多优点,非常适合 作为嵌入式操作系统。一个最基本的Linux操作系统应该包 括:引导程序、内核与根文件系统三部分。 与Linux2.4内核相比,2.6内核吸收了最新的技术,在 性能、可测量性、器件支持和可用性方面有了大幅度提高; 支持更多的体系结构、处理器、总线、接口和设备;标准 化了内部接口;简化了扩展或添加新设备的步骤等。 本文着重介绍如何制作一个基于linux-2.6.19内核的小 型Linux操作系统,并将它移植到S3C2410开放板上。内容 包括交叉编译环境的建立,引导程序、2.6.19内核、根文 件系统的修改、配置、编译、移植等。

千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
org内核吸收了最新的技术在?千锋3g嵌入式移动互联网技术研发中心arm开发教程之系统的制作移植建立交叉编译环境?要移植开发小型linux系统首先要在安装了redhat9或更高版本linux操作系统的主机上配置交叉开发环境
千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G

千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开发教程之根文件系统 根文件系统
Linux系统中的文件和设备是通过文件系统来组织的。 文件系统的存在使得数据和设备可以被有效而透明地 存取访问。一个linux的最简根文件系统应该包括支持 linux系统正常运行的基本内容,包括系统使用的软件 和库,以及所有用来为用户提供基本支持的架构和指 令。 在根文件目录rootfs下建立bin、dev、etc、lib、 proc、sbin、root、tmp等一系列必备的目录,把所需 的配置文件、动态 函数库放到相应的目录。采用 BusyBox是缩小根文件系统的好办法。BusyBox以很小 的体积集成了最常用的linux命令和应用程序,大大简 化了制 作linux根文件系统的过程。

linux移植过程手册

linux移植过程手册

一、移植环境主机:VMWare-Ubuntu开发板:TOP6410, Kernel:2.6.36.2编译器:arm-linux-gcc-4.3.2.tgz二、源码获得内核源码到/下载;三、移植步骤:1.将Linux2.6.34.2内核源码放到工作目录文件夹下,并解压。

#tar xzvf linux2.6.36.2.tar.gz –c /#pwd/# cd linux2.6.36.22. 修改内核源码根目录下的Makefile文件(CROSS_COMPILE =的值因个人情况而定,其他可以照做,蓝色部分为修改部分。

)#geditMakefile......#SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \# -e s/arm.*/arm/ -e s/sa110/arm/ \# -e s/s390x/s390/ -e s/parisc64/parisc/ \# -e s/ppc.*/powerpc/ -e s/mips.*/mips/ )......#ARCH ?= $(SUBARCH)#CROSS_COMPILE ?=ARCH = armCROSS_COMPILE = /usr/local/arm/usr/local/arm/4.3.2/bin/arm-none-linux- gnueabi-3添加NandFlash分区信息.修改arch/arm/mach-s3c64xx/mach-smdk6410.c文件,添加Nand Flash的分区信息和Nand Flash的硬件信息。

(蓝色字体为添加部分)#pwd#gedit mach-smdk6410.c //add here 注意:此处的nandflash分区信息是内核设置,由于此处要用到uboot一致,所以分区信息也要按uboot的来添加头文件#include <plat/nand.h>#include <linux/mtd/partitions.h>#include <mtd/mtd-abi.h>#include <asm/mach/flash.h>structmtd_partition s3c_partition_info[] = {{.name = "Bootloader",.offset = 0,.size = (256*SZ_1K),.mask_flags =MTD_CAP_NANDFLASH,},{.name = "Kernel",.offset = (256*SZ_1K),.size = (4*SZ_1M) - (256*SZ_1K),.mask_flags = MTD_CAP_NANDFLASH,},#if defined (CONFIG_SPLIT_ROOT_FILESYSTEM){.name = "Rootfs",.offset = (4*SZ_1M),.size = (80*SZ_1M),//},#endif{.name = "File System",.offset = MTDPART_OFS_APPEND,.size = MTDPART_SIZ_FULL,}};staticstruct s3c2410_nand_set s3c_nandset[]={[0]= {.name ="s3c24xx-nand",.nr_chips = 1,.nr_partitions =ARRAY_SIZE(s3c_partition_info),.partitions =s3c_partition_info,}};staticstruct s3c2410_platform_nand s3c_platform={.tacls =25,.twrph0 =55,.sets = &s3c_nandset,.nr_sets =ARRAY_SIZE(s3c_nandset),};//add here…static structplatform_device *smdk6410_devices[] __initdata = { #ifdef CONFIG_SMDK6410_SD_CH0&s3c_device_hsmmc0,#endif#ifdef CONFIG_SMDK6410_SD_CH1&s3c_device_hsmmc1,#endif&s3c_device_i2c0,&s3c_device_i2c1,&s3c_device_fb,&s3c_device_ohci,&s3c_device_usb_hsotg,&s3c64xx_device_iisv4,//add here&s3c_device_nand,//add here…}static void __init smdk6410_map_io(void){u32tmp;//add heres3c_device_ = "s3c6410-nand";//add here……}static void __init smdk6410_machine_init(void){u32 cs1;s3c_i2c0_set_platdata(NULL);s3c_i2c1_set_platdata(NULL);s3c_fb_set_platdata(&smdk6410_lcd_pdata);//add heres3c_nand_set_platdata(&s3c_platform);////add here…}5.配置内核。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux系统移植目 录第一部分 前言 (8)1 硬件环境 (8)1.1主机硬件环境 (8)1.2 目标板硬件环境 (8)1.3工具介绍 (8)2软件环境 (8)2.1主机软件环境 (8)2.1.1 Windows 操作系统 (8)2.1.2 Linux操作系统 (8)2.1.3 目标板最后运行的环境 (9)2.2 Linux下工作用户及环境 (9)2.2.1 交叉工具的安装 (9)2.2.2 u­boot移植工作目录 (9)2.2.3 内核及应用程序移植工作 (9)2.3 配置系统服务 (10)2.3.1 tftp服务器的配置 (10)2.4 工具使用 (12)2.4.1 minicom的使用 (12)3 作者介绍 (13)3.1 策划, 组织, 指导, 发布者 (13)3.2 ADS bootloader部分 (13)3.3 交叉工具部分 (13)3.4 uboot部分 (13)3.5 内核部分 (13)3.6 应用程序部分 (13)3.7 网卡驱动部分 (13)3.8 Nand Flash 驱动部分 (13)第二部分 系统启动bootloader的编写(ADS) (14)1 工具介绍 (14)1.1 ADS 命令行命令介绍 (14)1.1.1 armasm (14)1.1.2 armcc, armcpp (14)1.1.3 armlink (14)2 基本原理 (15)2.1 可执行文件组成及内存映射 (15)2.1.1 可执行文件的组成 (15)2.1.3 启动过程的汇编部分 (17)2.1.4 启动过程的C部分 (17)3 AXD的使用以及源代码说明 (18)3.1 源代码说明 (18)3.1.1 汇编源代码说明 (18)3.1.2 C语言源代码说明 (23)3.1.3 源代码下载 (23)3.2 AXD的使用 (23)3.2.1 配置仿真器 (23)3.2.2 启动AXD 配置开发板 (23)第三部分 GNU交叉工具链 (25)1 设置环境变量,准备源码及相关补丁 (25)1.1 设置环境变量 (25)1. 2 准备源码包 (25)1.2.1 binuils (25)1.2.2 gcc (25)1.2.3 glibc (25)1.2.4 linux kernel (26)1.3 准备补丁 (26)1.3.1 ioperm.c.diff (26)1.3.2 flow.c.diff (26)1.3.3 t­linux.diff (26)1.4 编译 GNU binutils (26)1.5 准备内核头文件 (26)1.5.1 使用当前平台的gcc编译内核头文件 (26)1.5.2 复制内核头文件 (27)1.6 译编glibc头文件 (27)1.7 编译gcc第一阶段 (27)1.8 编译完整的glibc (27)1.9 编译完整的gcc (28)2 GNU交叉工具链的下载 (28)2.1 ARM官方网站 (28)2.2 本文档提供的下载 (28)3 GNU交叉工具链的介绍与使用 (29)3.1 常用工具介绍 (29)3.2.1 arm­linux­gcc的使用 (29)3.2.2 arm­linux­ar 和 arm­linux­ranlib的使用 (30)3.2.3 arm­linux­objdump的使用 (30)3.2.4 arm­linux­readelf的使用 (31)3.2.6 arm­linux­copydump的使用 (32)4 ARM GNU常用汇编语言介绍 (32)4.2 ARM GNU专有符号 (33)4.3 操作码 (33)5 可执行生成说明 (33)5.1 lds文件说明 (33)5.1.1 主要符号说明 (33)5.1.2 段定义说明 (34)第四部分 u­boot的移植 (35)1 u­boot的介绍及系统结构 (35)1.1 u­boot介绍 (35)1.2 获取u­boot (35)1.3 u­boot体系结构 (35)1.3.1 u­boot目录结构 (35)2 uboot的启动过程及工作原理 (36)2.1 启动模式介绍 (36)2.2 阶段1介绍 (36)2.2.1 定义入口 (36)2.2.2 设置异常向量 (37)2.2.3 设置CPU的模式为SVC模式 (37)2.2.4 关闭看门狗 (37)2.2.5 禁掉所有中断 (37)2.2.6 设置以CPU的频率 (37)2.2.7 设置CP15 (37)2.2.8 配置内存区控制寄存器 (38)2.2.9 安装U­BOOT使的栈空间 (38)2.2.10 BSS段清0 (38)2.2.11 搬移Nand Flash代码 (39)2.2.12 进入C代码部分 (39)2.3 阶段2的C语言代码部分 (39)2.3.1调用一系列的初始化函数 (39)2.3.2 初始化网络设备 (41)2.3.3 进入主UBOOT命令行 (41)2.4 代码搬运 (41)3 uboot的移植过程 (42)3.1 环境 (42)3.2 步骤 (42)3.2.1 修改Makefile (42)3.2.2 在board子目录中建立crane2410 (42)3.2.3 在include/configs/中建立配置头文件 (42)3.2.4 指定交叉编译工具的路径 (42)3.2.5 测试编译能否成功 (42)3.2.6 修改lowlevel_init.S文件 (43)3.2.9 把u­boot烧入flash (45)4 U­BOOT命令的使用 (46)4.1 U­BOOT命令的介绍 (46)4.1.1 获得帮助信息 (46)4.2 常用命令使用说明 (47)4.2.1 askenv(F) (47)4.2.2 autoscr (47)4.2.3 base (47)4.2.4 bdinfo (47)4.2.5 bootp (47)4.2.8 tftp(tftpboot) (48)4.2.9 bootm (48)4.2.10 go (48)4.2.11 cmp (48)4.2.12 coninfo (48)4.2.13 cp (48)4.2.14 date (49)4.2.15 erase(F) (49)4.2.16 flinfo(F) (49)4.2.17 iminfo (49)4.2.18 loadb (49)4.2.19 md (49)4.2.20 mm (50)4.2.21 mtest (50)4.2.22 mw (50)4.2.23 nm (50)4.2.24 printenv (50)4.2.25 ping (51)4.2.26 reset (51)4.2.27 run (51)4.2.28 saveenv(F) (51)4.2.29 setenv (51)4.2.30 sleep (51)4.2.31 version (51)4.2.32 nand info (51)4.2.33 nand device <n> (51)4.2.34 nand bad (51)4.2.35 nand read (52)4.2.36 nand erease (52)4.2.37 nand write (52)5 参考资料 (53)第五部分 linux 2.6内核的移植 (53)1 内核移植过程 (53)1.1 下载linux内核 (53)1.2 修改Makefile (53)1.3 设置flash分区 (54)1.3.1指明分区信息 (54)1.3.2 指定启动时初始化 (56)1.3.3 禁止Flash ECC校验 (56)1.4 配置内核 (56)1.4.1 支持启动时挂载devfs (56)1.4.2配置内核产生.config文件 (57)1.4.3编译内核 (58)1.4.4 下载zImage到开发板 (58)2 创建uImage (61)2.1 相关技术背景介绍 (61)2.2 在内核中创建uImage的方法 (61)2.2.1 获取mkimage工具 (61)2.2.2 修改内核的Makefile文件 (61)3追加实验记录 (62)3.1移植linux­2.6.15.7 (62)3.2移植linux­2.6.16.21 (62)3.3 移植linux­2.6.17 (62)4 参考资料 (62)第六部分 应用程序的移植 (63)1构造目标板的根目录及文件系统 (63)1.1 建立一个目标板的空根目录 (63)1.2 在my_rootfs中建立Linux目录树 (63)1.3 创建linuxrc文件 (63)2 移植Busybox (64)2.1 下载busybox (64)2.3 编译并安装Busybox (65)3 移植TinyLogin (66)3.1 下载 (66)3.2 修改tinyLogin的Makefile (66)3.3 编译并安装 (66)4 相关配置文件的创建 (66)4.1 创建帐号及密码文件 (66)4.2 创建profile文件 (67)4.5 创建inetd.conf配置文件 (67)5 移植inetd (67)5.1 inetd的选择及获取 (67)5.1.1 获取inetd (67)5.2 编译inetd (67)5.2.1 修改configure文件 (67)5.2.2 编译 (68)5.3 配置inetd (68)5.3.1 拷贝inetd到根文件系统的usr/sbin目录中 (68)6 移植thttpd Web服务器 (69)6.1 下载 (69)6.2 编译thttpd (69)6.3 配置 (69)6.3.1 拷贝thttpd二进制可执行文件到根文件系统/usr/sbin/目录中 (69)6.3.2 修改thttpd配置文件 (69)6.3.3 转移到根文件系统目录,创建相应的文件 (69)7 建立根目录文件系统包 (70)7.1 建立CRAMFS包 (70)7.1.1 下载cramfs工具 (70)7.1.2 制作cramfs包 (70)7.1.3 写cramfs包到Nand Flash (70)8 参考资料 (70)第七部分 Nand flash驱动的编写与移植 (71)1 Nand flash工作原理 (71)1.1 Nand flash芯片工作原理 (71)1.1.1 芯片内部存储布局及存储操作特点 (71)1.1.2 重要芯片引脚功能 (71)1.1.3 寻址方式 (71)1.1.4 Nand flash主要内设命令详细介绍 (72)1.2 Nand Flash 控制器工作原理 (72)1.2.1 Nand Flash控制器特性 (72)1.2.2 Nand Flash控制器工作原理 (72)1.3 Nand flash 控制器中特殊功能寄存器详细介绍 (72)1.4 Nand Flash 控制器中的硬件ECC介绍 (73)1.4.1 ECC产生方法 (73)1.4.2 ECC生成器工作过程 (74)1.4.3 ECC的运用 (74)2 在ADS下flash烧写程序 (74)2.1 ADS下flash烧写程序原理及结构 (74)2.2 第三层实现说明 (74)2.1.1 特殊功能寄存器定义 (74)2.1.2 操作的函数实现 (74)2.3 第二层实现说明 (75)2.3.1 Nand Flash 初始化 (75)2.3.3 获取Nand flash ID (75)2.3.4 Nand flash写入 (76)2.3.5 Nand flash读取 (77)2.3.6 Nand flash标记坏块 (78)2.3.7 Nand Flash检查坏块 (79)2.3.8 擦除指定块中数据 (79)2.4 第一层的实现 (80)3 在U­BOOT对Nand Flash的支持 (82)3.1 U­BOOT对从Nand Flash启动的支持 (82)3.1.1 从Nand Flash启动U­BOOT的基本原理 (82)3.1.2 支持Nand Flash启动代码说明 (82)3.2 U­BOOT对Nand Flash命令的支持 (84)3.2.1 主要数据结构介绍 (84)3.2.2 支持的命令函数说明 (85)4 在Linux对Nand Flash的支持 (87)4.1 Linux下Nand Flash调用关系 (87)4.1.1 Nand Flash设备添加时数据结构包含关系 (87)4.1.2 Nand Flash设备注册时数据结构包含关系 (87)4.2 Linux下Nand Flash驱动主要数据结构说明 (88)4.2.1 s3c2410专有数据结构 (88)4.2.2 Linux 通用数据结构说明 (89)4.3.1 注册driver_register (94)4.3.2 探测设备probe (94)4.3.3 初始化Nand Flash控制器 (94)4.3.4 移除设备 (94)4.3.5 Nand Flash芯片初始化 (94)4.3.6 读Nand Flash (95)4.3.7 写Nand Flash (95)第八部分 Cs8900a网卡驱动的编写与移植 (95)1 Cs8900a工作原理 (95)2 在ADS下cs8900a的实现 (95)2.1 在cs8900a下实现的ping 工具 (95)3 在u­boot下cs8900a的支持 (96)3.1 u­boot下cs8900a的驱动介绍 (96)3.2 u­boot下cs8900a的移植说明 (96)4 在linux下cs8900a驱动的编写与移植 (96)4.1 Linux下cs8900a的驱动说明 (96)4.2 Linux 下cs8900a的移植说明 (96)4.2.1 为cs8900a建立编译菜单 (96)4.2.2 修改S3C2410相关信息 (97)序该文档的目的是总结我们在工作中的一些经验,并把它们分享给喜欢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. Thttpd-2.252.2 Linux下工作用户及环境2.2.1 交叉工具的安装工具链的编译过程请参考第三部分.1. 下载交叉工具2.95.3 下载地址:ftp:///pub/armlinux/toolchain/cross-2.95.3.tar.bz23.3.4 下载地址:2. 编译交叉工具[root@localhost ~]mkdir /usr/local/arm[root@localhost ~]cd /usr/local/arm把cross-2.95.2.tar.bz2, cross-3.4.4.tar.gz 拷贝到/usr/local/arm目录中。

相关文档
最新文档