您的位置:首页 > 其它

Uboot 2012.10移植到at91sam9260ek草稿之一

2013-01-20 23:23 309 查看
准备:

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

#define CONFIG_BAUDRATE 115200

/* LED */

#define CONFIG_AT91_LED

#define CONFIG_RED_LED
AT91_PIN_PA9 /* this is the power led */

#define CONFIG_GREEN_LED
AT91_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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: