免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 884 | 回复: 0
打印 上一主题 下一主题

移植U-Boot.2008.10到友善之臂mini2440(六)【转】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-05 00:26 |只看该作者 |倒序浏览
移植U-Boot-2008.10到友善之臂mini2440(六)
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
#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初始化完成,串口输出信息之前,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. */


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/107284/showart_2111619.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP