ARM7TDMI R3内核
ARM7EJS内核
ARM946E-S内核
ARM966E-S内核
ARM9TDMI内核
ARM940T内核
ARM指令集速查卡
ARM925T内核(TI925T)
更多
>>
技术专栏RSS订阅 |
|
首页>技术专栏>U-boot>VxWorks
的bootrom 到u-boot 的移植心得
/*串口基地址,分别对应NS16552 的两路串口,请参考文件\driver\serial.c*/
#define CFG_NS16550_COM1 (CFG_ISA_IO + CFG_NS87308_UART1_BASE)
#define CFG_NS16550_COM2 (CFG_ISA_IO + CFG_NS87308_UART2_BASE)
/*以下为一些底层设置(例如地址映射,寄存器初始值等),请参考MPC8240 Integrated
Processor User’s Manual、 Programming Environments Manual for 32-Bit
Implementations of the
PowerPC? Architecture和EREF: A Programmer'sReference Manual for
Freescale Book EProcessors等文档以及内存芯片的datasheet,对这些值的配置不当将直接导致u-boot的无法运行。不过先别担心,由于我们有VxWorks的Bootrom做了底层初始化,因此可以先绕过他们当中的大部分。对他们的配置值也可以参考VxWorks的BSP*/
#define CONFIG_SYS_CLK_FREQ 33000000 /*系统时钟,即输入给CPU 的晶振频率*/
#define CONFIG_PLL_PCI_TO_MEM_MULTIPLIER 1 /*PCI 到内存接口的倍频*/
/*下面的是MCCR1~4 的定义,参考MPC8240 User Mannual*/
#define CFG_ROMNAL 7 /*rom/flash next access time*/
#define CFG_ROMFAL 11 /*rom/flash access time*/
#define CFG_REFINT 430 /* number of clock cycles between CBR refresh
cycles */
/*SDRAM 的参数 */
#define CFG_BSTOPRE 121 /* Burst To Precharge, sets open page
interval */
#define CFG_REFREC 8 /* Refresh to activate interval */
#define CFG_RDLAT 4 /* data latency from read command*/
#define CFG_PRETOACT 3 /* Precharge to activate interval*/
#define CFG_ACTTOPRE 5 /* Activate to Precharge interval*/
#define CFG_ACTORW 3 /* Activate to R/W*/
#define CFG_SDMODE_CAS_LAT 3 /* SDMODE CAS latency*/
#define CFG_SDMODE_WRAP 0 /* SDMODE wrap type*/
#define CFG_SDMODE_BURSTLEN 2 /* SDMODE Burst length 2=4, 3=8*/
#define CFG_REGISTERD_TYPE_BUFFER 1
/*内存bank 的设置,由于sandpoint 和我的电路板都是用了MAP B的内存映射方式,内存只能使用0x40000000
以下的地址,因此最高2 位必须为0,低20 位在填写寄存器时将被自动设置为0x00000(起始地址)和0xfffff(结束地址),只有bank0
被使能,映射了电路板上的全部内存,其余bank 均不使能*/
#define CFG_BANK0_START 0x00000000 /*内存映射*/
#define CFG_BANK0_END (CFG_MAX_RAM_SIZE - 1)
#define CFG_BANK0_ENABLE 1 /*此bank 使能 */
#define CFG_BANK1_START 0x3ff00000
#define CFG_BANK1_END 0x3fffffff
#define CFG_BANK1_ENABLE 0 /*此bank 不使能*/
#define CFG_BANK2_START 0x3ff00000
#define CFG_BANK2_END 0x3fffffff
#define CFG_BANK2_ENABLE 0
#define CFG_BANK3_START 0x3ff00000
#define CFG_BANK3_END 0x3fffffff
#define CFG_BANK3_ENABLE 0
#define CFG_BANK4_START 0x00000000
#define CFG_BANK4_END 0x00000000
#define CFG_BANK4_ENABLE 0
#define CFG_BANK5_START 0x00000000
#define CFG_BANK5_END 0x00000000
#define CFG_BANK5_ENABLE 0
#define CFG_BANK6_START 0x00000000
#define CFG_BANK6_END 0x00000000
#define CFG_BANK6_ENABLE 0
#define CFG_BANK7_START 0x00000000
#define CFG_BANK7_END 0x00000000
#define CFG_BANK7_ENABLE 0
/*使能的bank,其中MSB 代表bank7,LSB 代表bank0,事实上,CFG_BANK_ENABLE被用于board\sandpoint\early_init.S
, 而上面的CFG_BANKX_ENABLE 被用于 \cpu\mpc824x\cpu_init.c。两者必须一致*/
#define CFG_BANK_ENABLE 0x01
/*配置输出时钟的驱动能力,参考MPC8240 User Manual*/
#define CFG_ODCR 0xff
/*配置page 的保存时间,参考MPC8240 User Manual*/
#define CFG_PGMAX 0x32
/*IBAT0~4 和DBAT0~4 的配置,其中IBAT0 用作内存,IBAT1 用作系统堆栈,IBAT2 用作PCI 空间,IBAT3
用作Flash/ROM 等空间*/
#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS |
BATU_VP)
#if defined(USE_DINK32)
#define CFG_IBAT1L (0x40000000 | BATL_PP_00 )
#define CFG_IBAT1U (0x40000000 | BATU_BL_128K )
#else
#define CFG_IBAT1L (CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
#define CFG_IBAT1U (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS
| BATU_VP)
#endif
#define CFG_IBAT2L (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
#define CFG_IBAT2U (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
#define CFG_IBAT3L (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
#define CFG_IBAT3U (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
#define CFG_DBAT0L CFG_IBAT0L
#define CFG_DBAT0U CFG_IBAT0U
#define CFG_DBAT1L CFG_IBAT1L
1
2
3
4
5
6
7
8
9
10
11 |
|
|
|
下载说明: |
|
- 未经本站明确许可,任何网站不得非法盗链及抄袭本站资源!
|
|
|
|
| |