现在的位置: 首页 > 综合 > 正文

uboot 2012.10移植到at91sam9260ek草稿之一

2014年09月05日 ⁄ 综合 ⁄ 共 6602字 ⁄ 字号 评论关闭

准备:

之前一直用的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_DISPLAY_CPUINFO

/* general purpose I/O */
#define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */
#define CONFIG_AT91_GPIO
#define CONFIG_AT91_GPIO_PULLUP 1/* keep pullups on peripheral pins */

/* serial console */
#define CONFIG_ATMEL_USART
#define CONFIG_USART_BASE ATMEL_BASE_DBGU
#define CONFIG_USART_IDATMEL_ID_SYS
#define CONFIG_BAUDRATE 115200

/* LED */
#define CONFIG_AT91_LED
#define CONFIG_RED_LEDAT91_PIN_PA9
/* this is the power led */
#define CONFIG_GREEN_LEDAT91_PIN_PA6
/* this is the user led */

#define CONFIG_BOOTDELAY 3

/*
 * BOOTP options
 */
#define CONFIG_BOOTP_BOOTFILESIZE 1
#define CONFIG_BOOTP_BOOTPATH 1
#define CONFIG_BOOTP_GATEWAY 1
#define CONFIG_BOOTP_HOSTNAME 1

/*
 * Command line configuration.
 */
#include <config_cmd_default.h>
#undef CONFIG_CMD_BDI
#undef CONFIG_CMD_FPGA
#undef CONFIG_CMD_IMI
#undef CONFIG_CMD_IMLS
#undef CONFIG_CMD_LOADS
#undef CONFIG_CMD_SOURCE

#define CONFIG_CMD_PING 1
#define CONFIG_CMD_DHCP 1
#define CONFIG_CMD_NAND 1
#define CONFIG_CMD_USB 1

/*
 * SDRAM: 1 bank, min 32, max 128 MB
 * Initialized before u-boot gets started.
 */
#define CONFIG_NR_DRAM_BANKS 1
#define CONFIG_SYS_SDRAM_BASE ATMEL_BASE_CS1  //0x2000 0000
#define CONFIG_SYS_SDRAM_SIZE 0x2000000 //0x04000000  32MB  这是给出的是SDRAM的大小。
/*
 * Initial stack pointer: 4k - GENERATED_GBL_DATA_SIZE in internal SRAM,
 * leaving the correct space for initial global data structure above
 * that address while providing maximum stack area below.
 */
#ifdef CONFIG_AT91SAM9XE
# define CONFIG_SYS_INIT_SP_ADDR \
(ATMEL_BASE_SRAM + 0x1000 - GENERATED_GBL_DATA_SIZE)
#else
# define CONFIG_SYS_INIT_SP_ADDR \
(ATMEL_BASE_SRAM1 + 0x1000 - GENERATED_GBL_DATA_SIZE)
#endif

/* DataFlash */
#define CONFIG_ATMEL_DATAFLASH_SPI
#define CONFIG_HAS_DATAFLASH 1
#define CONFIG_SYS_SPI_WRITE_TOUT (5*CONFIG_SYS_HZ)
#define CONFIG_SYS_MAX_DATAFLASH_BANKS 2
#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0
0xC0000000 /* CS0 */
#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1
0xD0000000 /* CS1 */
#define AT91_SPI_CLK 15000000

#ifdef CONFIG_AT91SAM9G20EK
#define DATAFLASH_TCSS (0x22 << 16)
#else
#define DATAFLASH_TCSS (0x1a << 16)
#endif
#define DATAFLASH_TCHS (0x1 << 24)

/* NAND flash */
#ifdef CONFIG_CMD_NAND
#define CONFIG_NAND_ATMEL
#define CONFIG_SYS_MAX_NAND_DEVICE 1
#define CONFIG_SYS_NAND_BASE ATMEL_BASE_CS3 //0x4000 0000
#define CONFIG_SYS_NAND_DBW_8
#define CONFIG_SYS_NAND_MASK_ALE (1 << 21)
#define CONFIG_SYS_NAND_MASK_CLE (1 << 22)
#define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14
#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC13
#endif

/* NOR flash - no real flash on this board */
#define CONFIG_SYS_NO_FLASH 1

/* Ethernet */
#define CONFIG_MACB 1
#define CONFIG_RMII 1
#define CONFIG_NET_RETRY_COUNT 20
#define CONFIG_RESET_PHY_R 1

/* USB */
#define CONFIG_USB_ATMEL
#define CONFIG_USB_OHCI_NEW 1
#define CONFIG_DOS_PARTITION 1
#define CONFIG_SYS_USB_OHCI_CPU_INIT 1
#define CONFIG_SYS_USB_OHCI_REGS_BASE 0x00500000/* AT91SAM9260_UHP_BASE */
#define CONFIG_SYS_USB_OHCI_SLOT_NAME "at91sam9260"
#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2
#define CONFIG_USB_STORAGE 1
#define CONFIG_CMD_FAT 1

//#define CONFIG_SYS_LOAD_ADDR 0x22000000/* load address */
#define CONFIG_SYS_LOAD_ADDR 0x21f80000/* load address */

#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE   //0x2000 0000
#define CONFIG_SYS_MEMTEST_END 0x23e00000

#ifdef CONFIG_SYS_USE_DATAFLASH_CS0

/* bootstrap + u-boot + env + linux in dataflash on CS0 */
#define CONFIG_ENV_IS_IN_DATAFLASH 1
#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
#define CONFIG_ENV_OFFSET 0x4200
#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
#define CONFIG_ENV_SIZE 0x4200
#define CONFIG_BOOTCOMMAND "cp.b 0xC0084000 0x22000000 0x210000; bootm"
#define CONFIG_BOOTARGS "console=ttyS0,115200 "\
"root=/dev/mtdblock0 "\
"mtdparts=atmel_nand:-(root) "\
"rw rootfstype=jffs2"

#elif CONFIG_SYS_USE_DATAFLASH_CS1

/* bootstrap + u-boot + env + linux in dataflash on CS1 */
#define CONFIG_ENV_IS_IN_DATAFLASH 1
#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + 0x8400)
#define CONFIG_ENV_OFFSET 0x4200
#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + CONFIG_ENV_OFFSET)
#define CONFIG_ENV_SIZE 0x4200
#define CONFIG_BOOTCOMMAND "cp.b 0xD0084000 0x22000000 0x210000; bootm"
#define CONFIG_BOOTARGS "console=ttyS0,115200 "\
"root=/dev/mtdblock0 "\
"mtdparts=atmel_nand:-(root) "\
"rw rootfstype=jffs2"

#else /* CONFIG_SYS_USE_NANDFLASH */
//###########################################
//##########################################
//以上两个在at91sam9260ek的板子中,没有用到,这里用的是nandflash

/* bootstrap + u-boot + env + linux in nandflash */
#define CONFIG_ENV_IS_IN_NAND 1
#define CONFIG_ENV_OFFSET 0x60000
#define CONFIG_ENV_OFFSET_REDUND 0x80000
#define CONFIG_ENV_SIZE 0x20000/* 1 sector = 128 kB */
#define CONFIG_BOOTCOMMAND "nand read 0x21900000 0x100000 0x200000; bootm"
#define CONFIG_BOOTARGS "console=ttyS0,115200 "\
"root=/dev/mtdblock4 "\
"mtdparts=atmel_nand:128k(bootstrap)ro,"\
"256k(uboot)ro,640k(env)ro,"\
"2M(linux),-(root) "\
"rw rootfstype=jffs2"

#endif

#define CONFIG_SYS_PROMPT "U-Boot> "
#define CONFIG_SYS_CBSIZE 256
#define CONFIG_SYS_MAXARGS 16
#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
#define CONFIG_SYS_LONGHELP 1
#define CONFIG_CMDLINE_EDITING 1
#define CONFIG_AUTO_COMPLETE

/*
 * Size of malloc() pool
 */
#define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000)

#endif

【上篇】
【下篇】

抱歉!评论已关闭.