移植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 <nand.h> #include <onenand_uboot.h> #include <s3c2410.h> ? (2)添加LED功能,指示进度: ?{ # 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 ("nn%snn",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. */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |