实验5 u-boot移植

wangyuyu 贡献于2016-01-13

作者 User  创建于2015-08-29 02:54:00   修改者Administrator  修改于2015-11-23 06:19:33字数3076

文档摘要: 实验项目:u-boot移植实验目的:1、熟悉Bootloader的功能与原理2、理解u-boot源码目录结构3、掌握u-boot移植的基本思路与方法4、学会排除移植过程中可能出现的编译错误实验仪器:嵌入式ARM9实验箱一个;安装有Linux操作系统虚拟机机一台;实验内容及步骤(或程序清单):一、安装合适的交叉编译器交叉编译版本很多,找个合适的交叉编译器,常用的含有eabi功能的4.12和4.32版本的
关键词:

 姓名:王钰 学号 43 2015年 10 月 26 日 实验项目:u-boot移植 实验目的: 1、熟悉Bootloader的功能与原理 2、理解u-boot源码目录结构 3、掌握u-boot移植的基本思路与方法 4、学会排除移植过程中可能出现的编译错误 实验仪器: 嵌入式ARM 9实验箱一个; 安装有Linux操作系统虚拟机机一台; 实验内容及步骤(或程序清单): 一、安装合适的交叉编译器 交叉编译版本很多,找个合适的交叉编译器,常用的含有eabi功能的4.12和4.32版本的. 1,因为一般的交叉编译器都是硬浮点的,而u-boot需要软浮点交叉编译器,3.3.2版本正常符合。 2,下载解压源码包,并解压。如上命令,我们在解压的过程中,需要进行路径的选择。 3,设定环境变量vi /etc/profile,如图5-1设置环境变量。 图5-1设置环境变量 4,让环境变量生效,并查看一下交叉编译器版本,便可以使用,如图5-2查看编译器版本。 图5-2查看编译器版本 二、编译u-boot源文件 1,修改cpu/arm920t/config.mk文件,使用硬浮点编译如图5-3 附注 图5-.3修改config.mk文件 2,进入u-boot目录,修改Makefile在(第1879行) smdk2410_config :       unconfig         @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 后面加上 TX2440_config :    unconfig         @$(MKCONFIG) $(@:_config=) arm arm920t TX2440 NULL s3c24x0 注释:@前是tab键,如图5-4修改Makefile文件 图5-4修改Makefile文件 3,创建board/ TX2440 <1>、在board目录下,新建开发板目录TX2440,把smdk2410目录下的所有文件拷到TX2440,把smdk2410.c改为TX2440.c。命令:mv smdk2410 TX2440 mv smdk2410.c TX2440.c。 <2>、修改该目录下的Makefile,把smdk2410.o改为TX2440.o。如图5-5修改makefile所示: 图5-5修改makefile <3>、将board目录下所有文件夹全部删除,只留TX2440 4,在include/configs目录下创建板子的配置头文件 <1>、把smdk2410.h改名为TX2440.h, [root@localhost configs]# mv smdk2410.h TX2440.h <2>、再把所有的文件全部删除,只留TX2440.h 命令:mv TX2440.h ../ rm –rf * mv ../TX2440.h ./ 5,测试能否编译成功,回到u-boot目录下,执行make TX2440_config,操作如图5-6编译成功所示 图5-6编译成功所示 可能出现的故障 (1)出现make: execvp: …………/mkconfig: 权限不够 查看mkconfig的权限,发现没有可执行权限,用chmod 764 mkconfig加上权限,然后再make, (2)出现“make: *** 没有规则可以创建目标“TX2440.h”。 停止 [root@localhost u-boot-1.1.6]# make TX2440.h make: *** 没有规则可以创建目标“TX2440.h”。 停止。 可能是文件名输错了,或者没有在u-boot目录下操作。 6,修改SDRAM配置 <1>、在board/TX2440/lowlevel_init.S中,把B1_BWSCON 改为(DW16) B5_BWSCON 改为(DW8)【因为bank 6接的是SDRAM,确定其位宽为32】 如图5-7修改SDRAM配置所示 <2>、根据HCLK设置SDRAM 的刷新参数,主要是REFCNT寄存器,开发板HCLK为100M如图5-8所示 图5-7修改SDRAM配置 图5-8修改SDRAM参数 7,设置时钟频率 MPLL, 用于产生FCLK, HCLK, PCLK三种频率, 这三种频率分别有不同的用途:    FCLK是CPU提供的时钟信号。    HCLK是为AHB总线提供的时钟信号, Advanced High-performance Bus,主要用于高速外设,比如内存控制器,中断控制器,LCD控制器, DMA 等。从S3C2440的DataSheet里可以看到,S3C2440最大支持400MHz的主频,但是这并不意味着一定工作在400MHz下面,可以通过设定MPLL, UPLL寄存器来设定CPU的工作频率。    PCLK是为APB总线提供的时钟信号,Advanced Peripherals Bus,主要用于低速外设,比如看门狗,UART控制器, IIS, I2C, SDI/MMC, GPIO,RTC and SPI等。 <1>、对于2440开发板,将FCLK设为400MHz,分频比为FCLK:HCLK:PCLK=1:4:8。 修改board/TX2440/TX2440.c中的board_init函数如图5-9修改tx2440.c文件所示 如图5-9修改tx2440.c <2>、在cpu/arm920t/s3c24X0/speed.c中修改:在程序开头增加一行DECLARE_GLOBAL_DATA_PTR;(在第43行处加入),这样才可以使用gd变量 如图5-10修改tx2440.c <3>,修改get_PLLCLK函数,然后修改get_HCLK。 图5-11修改get_PLLCLK函数 图5-12修改get_HCLK函数 8,编译成u-boot.bin文件修改完时钟设置,由于还没有增加NAND Flash的支持,所以可烧入NOR Flash中运行,但可以下载到开发板运行,还需要完成。 n<1>重新执行make TX2440_config n<2>执行make all 如果没有错误将会 生成u-boot.bin 注释:在make all时会出现错误:没有CAMDIVN,经分析,这个要在include/s3c24x0.h中定义, 在129行S3C24X0_CLOCK_POWER结构体中增加:vi编辑时,先yy复制,再p粘贴一行 图5-13makeall 回到主目录中执行重复上面的操作(3)#make_TX2440_config(4)# make all 如果没有再出现错误信息,代表编译通过如图5-14编译通过 图5-14编译通过 注释:出错信息处理方法: 1、交叉编译的版本,当前需要3.3.2,如果不行,再查看其他与ARM及U-boot版本一致的 2、确保是否修改了cpu/arm920t/config.mk文件,注释掉了软浮点编译选项,如前 3、记得make distclean的强大功能。依次再执行 make distclean make TX2440_config make all make clean仅仅是清除之前编译的可执行文件及配置文件。 而make distclean要清除所有生成的文件。 (5) 这时候在主目录下生成的u-boot.bin就是下载到开发板的bootloader文件如图5-15所示 图5-15生成u -boot文件 图5-15生成u -boot文件 实验结果分析: 通过这次实验了解熟悉Bootloader的功能与原理以及u-boot源码目录结构。了解掌握u-boot移植的基本思路与方法,并且学会排除移植过程中可能出现的编译错误。 实验的重点在于掌握u-boot移植的基本思路,难点是使用。经过多次实验解决了实验中的难题,学会排除移植过程中可能出现的编译错误达到实验预期的效果。 教师批阅:

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档