ARM7TDMI R3内核
ARM7EJS内核
ARM946E-S内核
ARM966E-S内核
ARM9TDMI内核
ARM940T内核
ARM指令集速查卡
ARM925T内核(TI925T)
更多
>>
技术专栏RSS订阅 |
|
首页>技术专栏>U-boot>VxWorks
的bootrom 到u-boot 的移植心得
#define CONFIG_BOOTDELAY 5 /*u-boot 自动启动时的等待时间,单位为秒*/
/*打印u-boot image 的制作时间,例如U-Boot 1.1.4 (Mar 13 2006 - 16:49:46)
,必须同时在CONFIG_COMMANDS 中包含CFG_CMD_DAT E 选项才有效*/
#define CONFIG_TIMESTAMP
/* 进入等待选择是否自动启动过程前的打印信息, 其中net_nfs 是CONFIG_EXTRA_ENV_SETTINGS
中的定义*/
#define CONFIG_PREBOOT "echo;" \
"echo Type \"run net_nfs\" to mount root filesystem
over NFS;" \ "echo"
/*启动参数之一,此外还有CONFIG_IPADDR(网口IP)等参数,具体的设置请参见 \common\environment.c,也可以在CONFIG_EXTRA_ENV_SETTINGS
中直接设置,例如, 如果要设定本地网口IP 为192.0.0.1,则从下面方法种选择一种:
1. #undef CONFIG_ADDR
#define CONFIG_ADDR 192.0.0.1
2. 在CONFIG_EXTRA_ENV_SETTINGS 中添加下面一行,注意引号内的内容不要有空格,且因为有后续行必须加上“\”,最后一行必须是""
"ipaddr=192.0.0.1" \
*/
#undef CONFIG_BOOTARGS
#define CONFIG_EXTRA_ENV_SETTINGS \
"netdev=eth0\0" \
"nfsargs=setenv bootargs root=/dev/nfs rw " \
"nfsroot=${serverip}:${rootpath}\0" \
"ramargs=setenv bootargs root=/dev/ram rw\0" \
"addip=setenv bootargs ${bootargs} " \
"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}" \
":${hostname}:${netdev}:off panic=1\0" \
"net_self=tftp ${kernel_addr} ${bootfile};" \
"tftp ${ramdisk_addr} ${ramdisk};" \
"run ramargs addip;" \
"bootm ${kernel_addr} ${ramdisk_addr}\0" \
"net_nfs=tftp ${kernel_addr} ${bootfile};" \
"run nfsargs addip;bootm\0" \
"rootpath=/opt/eldk/ppc_82xx\0" \
"bootfile=/tftpboot/SP8240/uImage\0" \
"ramdisk=/tftpboot/SP8240/uRamdisk\0" \
"kernel_addr=200000\0" \
"ramdisk_addr=400000\0" \
""
#define CONFIG_BOOTCOMMAND "run flash_self" /*从flash
启动*/
/*对于我的电路板,不需要这么多复杂的启动参数,只需要支持从网络获取VxWorks 并启动,可以如下定义,其中的0x00100000
为VxWorks 的启动地址,即config.h 和makefile中的RAM_LOW_ADRS:
#ifdef CONFIG_USER8240
#undef CONFIG_EXTRA_ENV_SETTINGS
#undef CONFIG_BOOTCOMMAND
#undef CONFIG_PREBOOT
#define CONFIG_EXTRA_ENV_SETTINGS \
"netdev=eth0\0" \
"serverip=192.0.0.2\0" \
"ipaddr=192.0.0.1\0" \
"ethaddr=AnyNumYouWant\0" \
"tftpboot=tftp 0x00100000 vxWorks.bin;" \
"go 0x00100000;\0" \
""
#define CONFIG_BOOTCOMMAND "run tftpboot"
#define CONFIG_PREBOOT "echo;" \
"echo Type \"run tftpboot\" to mount root .bin
file over net;" \
"echo you should open a tftp server and set home directory
correctly;" \
"echo"
#endif
*/
/*CONFIG_COMMANDS 配置了启动时配置的参数,每个CFG_CMD_XXX 对应了一种,其中CONFIG_CMD_DFL
的定义参见\include\cmd_confdefs.h,如果需要去掉某一种配置,则在CONFIG_COMMANDS 中加入&
~CFG_CMD_XXX,去除掉不需要的配置可以减小u-boot.bin 文件的大小*/
#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
CFG_CMD_DHCP | \
CFG_CMD_ELF | \
CFG_CMD_I2C | \
CFG_CMD_SDRAM | \
CFG_CMD_EEPROM | \
CFG_CMD_NFS | \
CFG_CMD_PCI | \
CFG_CMD_SNTP )
/*对于我的电路板,不需要这么多定义,且某些软硬件不支持,如EEPROM 不可写,FLASH地址不连续等,可以修改定义如下
#ifdef CONFIG_USER8240
#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
CFG_CMD_PCI & \
~CFG_CMD_FLASH)
#endif
*/
/*下面的头文件声明必须放在CONFIG_COMMANDS (如果有的话)的后面*/
#include <cmd_confdefs.h>
/*内存工作频率,单位MHz,不过在u-boot 的文件中发现此宏仅仅是在此作了一个定义,而没有被使用*/
#define CONFIG_DRAM_SPEED 100
#define CFG_LONGHELP 1 /*支持详细帮助,#undef 掉可以节省内存*/
#define CFG_PROMPT "=> " /*控制台提示符,类似于linux 的$*/
#define CFG_CBSIZE 256 /*控制台I/O Buffer 大小*/
#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /*打印的单句******长度*/
#define CFG_MAXARGS 16 /*命令的参数个数******值*/
#define CFG_BARGSIZE CFG_CBSIZE /*启动参数的******长度*/
/*默认跳转启动地址,对于启动VxWorks 来说,即为config.h 中的RAM_LOW_ADDR*/
#define CFG_LOAD_ADDR 0x00100000
#define CFG_HZ 1000 /*1s = 1000ms*/
#define CONFIG_PCI /*支持PCI 配置*/
#undef CONFIG_PCI_PNP /*如果定义,则选择自动配置PCI,否则按照user8240.c 中的pci_sandpoint_config_table
配置表配置PCI*/
#define CONFIG_NET_MULTI /*支持多网口,如果只有一个网口可以undef 掉*/
#define CONFIG_EEPRO100 /*网口芯片为82557(82559)*/
#define CFG_RX_ETH_BUFFER 8 /*使用eepro100 上的8 个rx buffer*/
/*PCI 网口芯片的基地址,被用于PCI 非自动配置,如果只使用一个PCI 网口,则只需要定 义前两个宏*/
#define PCI_ENET0_IOADDR 0x80000000
#define PCI_ENET0_MEMADDR 0x80000000
#define PCI_ENET1_IOADDR 0x81000000
#define PCI_ENET1_MEMADDR 0x81000000
/*内存参数,由初始化程序使用,注意CFG_SDRAM_BASE 必须等于0*/
#define CFG_SDRAM_BASE 0x00000000 /*内存的起始地址*/
#define CFG_MAX_RAM_SIZE 0x10000000 /*内存的******值,不能超过硬件内存的大小*/
#define CFG_RESET_ADDRESS 0xFFF00100 /*复位后跳转的地址,硬件决定,不能修改*/
#if defined (USE_DINK32) /*从内存启动*/
#define CFG_MONITOR_LEN 0x00030000 /*启动映像文件长度,必须大于u-boot.bin*/
#define CFG_MONITOR_BASE 0x00090000 /*启动地址,即u-boot.bin 在内存中的位置*/
#define CFG_RAMBOOT 1 /*从内存启动的标志*/
#define CFG_INIT_RAM_ADDR (CFG_MONITOR_BASE + CFG_MONITOR_LEN)
/* 堆栈地址*/
1
2
3
4
5
6
7
8
9
10
11 |
|
|
|
下载说明: |
|
- 未经本站明确许可,任何网站不得非法盗链及抄袭本站资源!
|
|
|
|
| |