Chinaunix首页 | 论坛 | 博客
  • 博客访问: 79497
  • 博文数量: 11
  • 博客积分: 1401
  • 博客等级: 上尉
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-12 16:16
文章分类
文章存档

2011年(1)

2009年(10)

我的朋友

分类: LINUX

2009-05-21 02:33:22


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上用的是2MNor 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

#include

#include

 

(2)添加LED功能,指示进度:
static int display_banner (void)

 {

# if defined(CONFIG_mini2440_LED)    

    S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();

         gpio->GPBDAT = 0x100;

 

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

 

#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. */

 

阅读(3306) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~