您的位置:首页 > 其它

移植U-Boot-2008.10到友善之臂mini2440(六)

2011-09-23 13:48 387 查看
1.2.12 修改u-boot-2008.10/include/configs/mini2440.h 头文件


(1)添加对2440的宏定义:
#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
#define CONFIG_S3C2440 1 /* in a SAMSUNG S3C2440 SoC */
#define CONFIG_mini2440 1 /* on a SAMSUNG mini2440 Board */
#define CONFIG_mini2440_LED 1 /* Use the LED on Board */
//#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
//#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
/* input clock of PLL */

(2)修改网卡的宏定义,注释掉CS8900的部分,添加对DM9000的支持:
/*
* Hardware drivers
*/
//#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
//#define CS8900_BASE 0x19000300
//#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */

#define CONFIG_DRIVER_DM9000 1
#define CONFIG_DM9000_USE_16BIT 1
#define CONFIG_DM9000_BASE 0x20000300
#define DM9000_IO 0x20000300

#define DM9000_DATA 0x20000304

(3)添加支持Nand 启动等宏定义,将相关IP设置的注释去掉,并修改IP设置,顺便修改下启动参数的宏设置:
#define CONFIG_CMD_CACHE
#define CONFIG_CMD_DATE
#define CONFIG_CMD_ELF

#define CONFIG_CMD_PING

#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG
#define CONFIG_CMDLINE_TAG
/*向linux内核传递函数所需的宏*/

//nand Flash param

#define CONFIG_CMD_NAND

#define CONFIG_CMDLINE_EDITING

#ifdef CONFIG_CMDLINE_EDITING
#undef CONFIG_AUTO_COMPLETE
#else
#define CONFIG_AUTO_COMPLETE
#endif

//#define CONFIG_NAND_LEGACY

//不使用LEGACY,以使用自带的nand flash驱动
/*
* NAND flash settings
*/
#if defined(CONFIG_CMD_NAND)
#define CFG_NAND_BASE 0x4E000000

/* NandFlash控制器在SFR区起始寄存器地址 */
#define CFG_MAX_NAND_DEVICE 1

/* Max number of NAND devices */

#define CONFIG_MTD_NAND_VERIFY_WRITE 1 //使能flash写校验

/* #undef CONFIG_MTD_NAND_VERIFY_WRITE */
#endif /* CONFIG_CMD_NAND */

#define CONFIG_BOOTDELAY 2
#define CONFIG_BOOTARGS "noinitrd root=/dev/nfs nfsroot=192.168.1.10:/opt/root_nfs ip=192.168.1.70:192.168.1.10:192.168.1.10:255.255.255.0:mini.arm9.net:eth0:off init=linuxrc console=ttySAC0"
#define CONFIG_ETHADDR 08:00:3e:26:0a:5b

#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 192.168.1.70 /*改变默认的IP地址*/
#define CONFIG_SERVERIP 192.168.1.80 /*改变原服务器IP地址*/
/*#define CONFIG_BOOTFILE "elinos-lart" */
#define CONFIG_BOOTCOMMAND "tftp 0x31000000 uImage;bootm 0x31000000"

……
#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */

#define CFG_LOAD_ADDR 0x31000000 /* default load address bootm use it*/
......

/*------------------------------------------------------------------
* FLASH and environment organization
*/
//#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
//#if 0
//#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
//#endif
#define CONFIG_AMD_LV800 /*mini2440上用的是2M的Nor Flash,暂时用这个也可以从Nor Flash启动 */
/*------------------------------*/

(5)在Nand Flash中保存 u-boot 参数 (saveenv 功能):
/* timeout values are in ticks */
#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */

#define CONFIG_ENV_IS_IN_NAND 1
#define CONFIG_ENV_OFFSET 0x30000
//#define CFG_ENV_OFFSET 0X30000
//#define CONFIG_ENV_IS_IN_FLASH 1
#define CONFIG_ENV_SIZE 0x10000 /* Total Size of Environment Sector */

(6)为了在U-Boot运行阶段对一些寄存器进行操作,在此文件后面添加代码:
# if defined(CONFIG_mini2440_LED)

/* GPIO */
#define GPIO_CTL_BASE 0x56000000
#define oGPIO_B 0x10
#define oGPIO_CON 0x0 /* R/W, Configures the pins of the port */
#define oGPIO_DAT 0x4 /* R/W, Data register for port */
#define oGPIO_UP 0x8 /* R/W, Pull-up disable register */

#endif

#define STACK_BASE 0x33f00000
#define STACK_SIZE 0x8000

/* NAND Flash Controller */
#define NAND_CTL_BASE 0x4E000000
#define bINT_CTL(Nb) __REG(INT_CTL_BASE + (Nb))
/* Offset */
#define oNFCONF 0x00

# if defined(CONFIG_S3C2440)
#define CONFIG_S3C2440_NAND_BOOT 1
/* Offset */
#define oNFCONT 0x04
#define oNFCMD 0x08
#define oNFADDR 0x0c
#define oNFDATA 0x10
#define oNFSTAT 0x20
#define oNFECC 0x2c
#define rNFCONF (*(volatile unsigned int *)0x4e000000)
#define rNFCONT (*(volatile unsigned int *)0x4e000004)
#define rNFCMD (*(volatile unsigned char *)0x4e000008)
#define rNFADDR (*(volatile unsigned char *)0x4e00000c)
#define rNFDATA (*(volatile unsigned char *)0x4e000010)
#define rNFSTAT (*(volatile unsigned int *)0x4e000020)
#define rNFECC (*(volatile unsigned int *)0x4e00002c)
#endif

# if defined(CONFIG_S3C2410)
#define CONFIG_S3C2410_NAND_BOOT 1
/* Offset */
#define oNFCONF 0x00
#define oNFCMD 0x04
#define oNFADDR 0x08
#define oNFDATA 0x0c
#define oNFSTAT 0x10
#define oNFECC 0x14
#define rNFCONF (*(volatile unsigned int *)0x4e000000)
#define rNFCMD (*(volatile unsigned char *)0x4e000004)
#define rNFADDR (*(volatile unsigned char *)0x4e000008)
#define rNFDATA (*(volatile unsigned char *)0x4e00000c)
#define rNFSTAT (*(volatile unsigned int *)0x4e000010)
#define rNFECC (*(volatile unsigned int *)0x4e000014)
#define rNFECC0 (*(volatile unsigned char *)0x4e000014)
#define rNFECC1 (*(volatile unsigned char *)0x4e000015)
#define rNFECC2 (*(volatile unsigned char *)0x4e000016)
#endif
#endif /* __CONFIG_H */

1.2.13 修改u-boot-2008.10/lib_arm/board.c 文件


(1)添加头文件引用:
#include <nand.h>
#include <onenand_uboot.h>
#include <s3c2410.h>

(2)添加LED功能,指示进度:

static int display_banner (void)
{
# if defined(CONFIG_mini2440_LED)

S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
gpio->GPBDAT = 0x100;

//在串口初始化和console初始化完成,串口输出信息之前,LED1、LED2、LED3会亮起!

#endif

#if !defined(CONFIG_mini2440_LED)
S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();

#endif

printf ("\n\n%s\n\n", version_string);

……
reset_phy();
#endif
#endif

#if defined(CONFIG_mini2440_LED)

S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
#endif

# if defined(CONFIG_mini2440_LED)

gpio->GPBDAT = 0x0;

//在进入命令提示符之前,四个LED会同时亮起!

#endif
/* main_loop() can return to retry autoboot, if so just run it again. */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: