加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:47:38 所属栏目:百科 来源:网络整理
导读:? 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 CONF
?

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 ("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. */

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读