好文档 - 专业文书写作范文服务资料分享网站

linux操作系统在ARM平台上的移植毕业论文

天下 分享 时间: 加入收藏 我要投稿 点赞

U-Boot的目录结构

下面的表格列出U-Boot下的子目录及其内容,移植过程中需要修改其中的部分文件。

表3-2 U-Boot的目录结构及内容

board cpu 该目录包含一些对特定板子的初始化和操作代码 该目录下是针对特定处理器的初始化和操作代码,启动代码.S文件也在这里 common 此目录存放独立于处理器体系结构的通用代码,如内存大小探测与故障检测,且该目录下main.c可以看作是Linux中 的的主函数,负责接受用户输入并送给相应的处理函数执行 driver doc examples fs include lib 此目录下放的是各种驱动,如以太网驱动、LCD屏驱动 U-Boot的说明文档 目录下放的是可在U-Boot下运行的例子,相当于Linux中应用程序 目录下文件系统 目录下存放各种头文件和配置文件 处理器体系相关的文件,如lib/arm目录就包含ARM体系结构相关的文件 net post Rtc tools 与网络功能相关的文件目录,如bootp、nts、tftp 上电自检文件目录 RTC驱动程序 目录下的代码都是可供使用的“工具”。用于创建U-Boot的bin镜像文件。因为是在宿主机上跑的,需使用gcc编译 3.2.1U-Boot移植分析

大多数BootLoader都分为stagel和Stage2两部分,U-Boot也不例外。依赖于CPU体系结构的代码通常放在stagel并用汇编语言来实现,而Stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。

Stage1功能分析

U-Boot的Stagel代码通常放在Start.s文件中,U-Boot是从cpu/ARM920t /start.s开始执行的,这个文件的任务是设置处理器状态、初始化中断和内存时序等,并确定是否需要对整个U-Boot代码重定位,最终从Flash中跳转到定位好的内存地址执行。

其主要代码功能如下。

1)定义入口。由于一个可执行的uImage必须有一个入口点,并且只能有一个全局入口,通常这个入口放在Flash的0x00000000地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。

2)设置异常向量 (Exception vector)。

3)设置CPU的速度、时钟频率及中断控制寄存器。 4)初始化内存控制器。

5)将Flash中的程序复制到RAM中。 6)初始化堆栈。 7)转到RAM中执行。 Stage2功能分析

lib-arm/board.c中的start_armboot是C语言开始的函数,也是整个启动代码中C语言的主函数,同时还是整个U-Boot的主函数,该函数主要完成如下操作:

1)调用一系列的初始化函数。

cpu_init(); //片级初始化代码 board_init(); //板级初始化相关代码 interrupt_init(); //中断初始化 env_inito; //事件初始化 init_baudrate(); //初始化波特率 Serial_init(); //串口初始化 2)初始化Flash设备。

初始化Flash是指提供Flash的各bank的情况,是否擦写,是否上锁等信息,为以后Flash相关命令使用。

3)初始化系统内存分配函数。

4)如果目标系统有NAND设备,则初始化NAND设备。 5)如果目标系统有显示设备,则初始化该类设备 6)初始化相关网络设备,填写IP、MAC地址等。

7)进入命令循环,接受用户从串口输入的命令,然后进行相应的工作。

3.2.2 U-Boot从NOR Flash启动的研究实现

从NOR Flash启动U-Boot的基本原理

如果S3C2410A被配置成从NOR Flash启动,在S3C241OA上电后,NOR FLASH会执行U-Boot启动。

具体实现

本文将移植U-Boot1.1.6到嵌入式系统硬件平台上。U-Bootl.1.6已经支持

了S3C241OA处理器,并且对一些开发板己经有了板级支持,如smdk241O开发板,但由于嵌入式硬件平台种类繁多,嵌入式产品层出不穷,U-Boot无法支持新的嵌入式硬件平台。因此在新的硬件平台上移植U-Boot的难点在于在U-Boot源码中编写对硬件平台的板级支持,使硬件平台上的FLASH、SRAM、串口控制芯片、网络控制芯片以及其他芯片可以正常工作。研究中使用的开发板和smdk2410开发板相近,所以这里直接在smdk2410目录上修改,根据你的需求配置好U-Boot然后执行make生成可以移植的U-Boot.bin。

移植U-Boot到开发板上只需要修改和硬件相关的代码即可。主要修改的文件有:Makefile文件、include目录下的目标板.h头文件(smdk2410.h),board目录下的目标板smdk2410.c文件,nand_flash.c文件,U-Boot.lds链接文件,以及cpu目录下的串口驱动文件。

具体修改如下:

1) 告诉Makefile,我们需要编译的是什么硬件平台。

# make smdk6410_config

2)编写Makefile 修改我们使用的是什么编译环境。

Make是用来自动编译、链接程序的实用工具,Make命令将根据 Makefile文件的规则来决定如何编译和连接程序。Makefile文件描述程序之间的依赖关系,以及提供更新文件的命令。Makefile文件贯穿内核代码目录,所有Makefile中的CROSS_COMPILE关键字用于指定要进行交叉编译工具链,ARCH关键字用于指定目标平台,所以这里改为:

ARCH = arm

CROSS_compile = /usr/local/arm/usr/bin/arm-linux-

3)编写 include/configs/smdk2410.h,该文件主要设置目标板的硬件配置,包括设置一些关键寄存器的值,设置FLASH及RAM的起始地址以及片选,设置串口波特率等。本文件还包含了一些定制U-Boot的配置信息,包括启动等待时间,是否自动执行启动命令,U-Boot提示符以及U-Boot所支持的用户交互命令等。

编译成功后的结果: 4)编译u-boot make distclean make

3.2.3 U-Boot的调试

新移植的U-Boot如不能正常工作,就需要进行调试。 硬件调试器

可以用仿真器通过JTAG端口直接把程序下载到目标板内存,或者进行Flash编程。仿真器还可以在线调试程序。对于U-Bboot的调试可以采用BDI2000。BDI2000可以反汇编地跟踪Flash中的程序,也可以进行源码级的调试。 调试方法如下:

1)配置BDI2000和目标板初始化程序,连接目标板。 2)添加U-Boot的调试编译选项,重新编译。

U-Boot的程序代码是位置相关的,尽量在内存中进行调试,可以通过修改board//eonfig.mk中定义的TEXT_BASE来实现连接地址的定位。

另外,如果有复位向量也需要先从链接脚本中去掉。连接脚本为: board/(board_name)/u-boot.lds。

添加调试选项:在config.mk文件中查找DBGFLAGS,加上-g选项。然后 重新编译U-boot。

3)下载U-Boot到目标板内存。

通过BDI2000的下载命令LOAD,把程序加载到目标板内存中,然后跳转到U-Boot入口。

4)启动GDB调试。

启动GDB调试,这里是交叉调试的GDB。GDB与BDI2000建立链接,然后就可以设断点执行了。

# arm-Linux-gdb u-boot

(gdb) target remote 192.168.1.222:2010

(gdb) stepi (gdb) start_armboot

软件跟踪

如果U-Boot没有任何串口打印信息,手头又没有硬件调试工具,那么可以通过开发板上的LED指示灯判断。执行到不同的阶段时,将指示灯设置成不同的状态。

在该研究过程中,并没有使用以上两种方法,而是使用串口输出信息进行调试。

3.3本章小结

BootLoader是系统最先运行的程序代码,它是内核正常启动的前提,它的移植成败直接影响后面的工作,所以,这里对BootLoader做了比较深入的研究。因所使用硬件平台的可用 NOR Flash容量有512KB,而U-Boot的目标代码95KB左右,可以直接在NOR FLASH启动。

本章首先介绍了BootLoader的两种工作模式:启动模式和下载模式以及下载模式在调试、升级系统时的具体应用,接着分析了U-Boot移植到NOR Flash的要点以及U-Boot的两种调试方法,最终,通过调试和烧写,使U-Boot可以从 NOR Flash启动运行。

4

Linux内核的编译、移植

内核是操作系统的核心组件。使用内核的目的是希望以一致的方式管理硬件,以及为用户软件提供高层抽象层。Linux 会驱动设备、管理I/O 的存取、调度进程、共享存储空间、管理信号的配送以及处理其他管理工作。

4.1 Linux3.3.3内核的新特性简介 4.1.1 3.3.3内核的新功能和新的特点

1)支持更多处理器,比如AMD64、一些大型机及嵌入式等,同时改进了对已有处理器的支持;

linux操作系统在ARM平台上的移植毕业论文

U-Boot的目录结构下面的表格列出U-Boot下的子目录及其内容,移植过程中需要修改其中的部分文件。表3-2U-Boot的目录结构及内容boardcpu该目录包含一些对特定板子的初始化和操作代码该目录下是针对特定处理器的初始化和操作代码,启动代码.S文件也在这里common此目录存放独立于处理器体
推荐度:
点击下载文档文档为doc格式
8snzm91an26j6mw9sjhs44p5c1cp2i00e0p
领取福利

微信扫码领取福利

微信扫码分享