准备:
之前一直用的uboot是1.3的,由于去年的换工作,在新的岗位上,好多产口的uboot 已经不用1.3这样的老版本了,本着总结与学习的态度,我想把2012.10再移植一次,移植到at91sam9260ek的板子上,这前对于1.3.4可以直接在http://www.at91.com/linux4sam/bin/view/Linux4SAM/U-Boot上下载,同时也可以下载到补丁。这样可以减轻我们的工作量,但对于2012.10的新版本,atmel已经不提供了,所以我们只能从uboot开源网上下载,自己改写。
同时也要说明,我们之前用的交叉编译器也要升级,不能用3.X.X的版本,要不会出现好多编译错误,必须升级到4.X.X的版本。关于交叉编译器的下载与安装可以参考我转的一编文章:http://blog.csdn.net/jackyard/article/details/8491879
第一步:之前的老的版本,是在顶层的makefile文件中来配置各种配置的,而现在新的版本是在board.cfg中体显的。编译步骤还是一样的。
1.export CROSS_COMPILE=xxxxxxx/bIn/arm-linux-
2.make mrproper
3.make at91sam9260_nandflash_config
4.make all
通过上在的工作,就可以编译通过了,可能中间会出一些问题,一般可以在网上直接找到答案。
第二步:更改include/configs/at91sam9260ek.h
这个文件是整个配置的关键,所以要重点修改。
下面我直接把我改过全部代码贴出:
#ifndef __CONFIG_H
#define __CONFIG_H
/*
* SoC must be defined first, before hardware.h is included.
* In this case SoC is defined in boards.cfg.
*/
#include <asm/hardware.h>
/*
* Warning: changing CONFIG_SYS_TEXT_BASE requires
* adapting the initial boot program.
* Since the linker has to swallow that define, we must use a pure
* hex number here!
*/
#define CONFIG_SYS_TEXT_BASE 0x21f80000 //0x21f00000 之前的代码是在config.mk中的TEXT_BASE中给的,现在的版本是在这里的。
/* ARM asynchronous clock */
#define CONFIG_SYS_AT91_SLOW_CLOCK 32768/* slow clock xtal */
#define CONFIG_SYS_AT91_MAIN_CLOCK 18432000/* main clock xtal */
#define CONFIG_SYS_HZ 1000
/* Define actual evaluation board type from used processor type */
#ifdef CONFIG_AT91SAM9G20
# define CONFIG_AT91SAM9G20EK /* It's an Atmel AT91SAM9G20 EK */
#else
# define CONFIG_AT91SAM9260EK /* It's an Atmel AT91SAM9260 EK */
#endif
/* Misc CPU related */
#define CONFIG_ARCH_CPU_INIT
#define CONFIG_CMDLINE_TAG /* enable passing of ATAGs */
#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG
#define CONFIG_SKIP_LOWLEVEL_INIT
#define CONFIG_BOARD_EARLY_INIT_F
#define CONFIG_DISPLA