⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rominit.s

📁 motorola mpc系列 mpc852cpu bsp
💻 S
📖 第 1 页 / 共 3 页
字号:

    	/* 保存r4到r7中*/
    	xor     r7, r7, r7
    	add     r7, r4, r7

    	mfspr   r4, IMMR

    	lhz   	r5, PCPAR(0)(r4)
    	nor     r6,r3,r3
	/*	li		r6,	0xFFFFFCFF*/
    	and     r5,r5,r6
    	sth     r5, PCPAR(0)(r4)

    	lhz    	r5, PCSO(0)(r4)
	/*li		r6,	0xFFFFFCFF*/
    	and     r5,r5,r6
    	sth   	r5, PCSO(0)(r4)

    	lhz    	r5, PCDIR(0)(r4)
	/* ori    	r5,r5,0x0300*/
    	or    	r5,r5,r3
    	sth   	r5,PCDIR(0)(r4)

    	lhz    	r5, PCDAT(0)(r4)

    	cmpwi   r7,LED_ON
    	bne     LedCtrl_Off
    	and     r5,r5, r6				/*turn on*/
    	sth   	r5, PCDAT(0)(r4)
    	blr

LedCtrl_Off:
	or      r5,r5,r3               /*turn off*/
    	sth   	r5, PCDAT(0)(r4)
    	bclr    20,0                /* return to caller */



/* This 50 MHz SDRAM table is for...
 *   860EN Rev B.1 9829 and newer silicon
 *   860T  Rev B.3 9832 and newer silicon
 *
 * This table will NOT work with older 860EN or 860T parts.
 */
 /***********************************************************
UPMTABLE
**********************************************************/
upmaTableSdram:

    /*  single read. (offset 0x0-0x4 in upm RAM) */

    .long  0x1F0DFC04, 0xEEAFBC04, 0x11AF7C04, 0xEFBAFC00
    .long  0x1FF5FC47

    /* OFFsets 0x5-0x7 for precharge amd mrs */

    .long  0x1FF5FC35, 0xEFEABC34, 0x1FB57C35

    /* burst read. (oFFset 0x8-0xF in upm RAM) */

    .long  0x1F0DFC04, 0xEEAFBC04, 0x10AF7C04, 0xF0AFFC00
    .long  0xF0AFFC00, 0xF1AFFC00, 0xEFBAFC00, 0x1FF5FC47

    /*  OFFsets 0x10-x17 not used */

    .long  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
    .long  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF

    /* single write. (oFFset 0x18-0x1B in upm RAM)*/

    .long  0x1F2DFC04, 0xEEABBC00, 0x01B27C04, 0x1FF5FC47

    /* OFF 1C-1F  not used */

    .long  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF

    /*  burst write. (oFFset 20 in upm RAM) */

    .long  0x1F0DFC04, 0xEEABBC00, 0x10A77C00, 0xF0AFFC00
    .long  0xF0AFFC00, 0xE1BAFC04, 0x1FF5FC47, 0xFFFFFFFF
    .long  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF

    /* OFFsets 2b-2F not used */

    .long  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
    .long  0xFFFFFFFF

    /*  ReFresh 70ns. (oFFset 30 in upm RAM) */

    .long  0x1FFD7C84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04
    .long  0xFFFFFC84, 0xFFFFFC07, 0xFFFFFFFF

    /*  OFFsets 37-3b not used */

    .long  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
    .long  0xFFFFFFFF

    /*  Exception. (oFFset 3c in upm RAM) */

    .long  0x7FFFFC07, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF

 upmaTableSdramEnd:


#if 0
/*romInit-->romStart(bootinit.c)-->usrInit(bootconfig.c)-->
usrRoot(bootconfig.c)-->bootCmdLoop(bootconfig.c)
_sysInit(sysalib.s)-->usrInit(usrconfig.c)-->usrRoot(usrconfig.c)-->


内存分配:
    -----------------------------------------------------------------------------
    |            |0x18000000:FLASH_BASE_ADDR: BIOS起始地址,hextobin转换时需定义
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |LOCAL_MEM_BANK_SIZE: 内存最大值
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |RAM_UNZIP_ADRS: 加载后解压Data、Fpga、Dsp等的地址,主机启动后无效
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |RAM_LOAD_ADRS: Tftp加载BSP或主机程序时保存的地址,主机启动后无效,不能低于LOCAL_MEM_SIZE或RAM_HIGH_ADRS+BIOS大小
    |------------|---------------------------------------------------------------
    |BIOS内存映像|
    |------------|---------------------------------------------------------------
    |            |0x01200000:RAM_HIGH_ADRS: BIOS拷贝到SDRAM中的地址,makefile需定义,bios大小(512K),主机启动后无效
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |LOCAL_MEM_SIZE: 分配给vxWorks的内存大小,10M,应小于RAM_HIGH_ADRS,否则冲掉bios?不会,vxworks自动保护
    |------------|---------------------------------------------------------------
    |            |USER_RESERVED_MEM: 用户保留的内存,1M
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |0x00100000: RAM_LOW_ADRS,加载BSP或主机程序解压后存贮地址,makefile需定义
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |0x00000000
    -----------------------------------------------------------------------------



Dpram分配(共8K)
    -----------------------------------------------------------------------------
    |            |0x1fff
    |------------|---------------------------------------------------------------
    |            |0x1c00:parameter Ram
    |------------|---------------------------------------------------------------
    |            | 
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |
    |------------|---------------------------------------------------------------
    |            |0x15ff:SMC2发送Buff,128Byte
    |            |0x1580:SMC2发送Buff,128Byte
    |------------|---------------------------------------------------------------
    |            |0x157f:SMC2接收Buff,128Byte
    |            |0x1500:SMC2接收Buff,128Byte
    |------------|---------------------------------------------------------------
    |            |0x14ff:SMC2发送BD表,256Byte
    |            |0x1400:SMC2发送BD表,256Byte
    |------------|---------------------------------------------------------------
    |            |0x13ff:SMC2接收BD表,256Byte
    |            |0x1300:SMC2接收BD表,256Byte
    |------------|---------------------------------------------------------------
    |------------|---------------------------------------------------------------
    |            |0x12ff:SMC1发送Buff,128Byte
    |            |0x1280:SMC1发送Buff,128Byte
    |------------|---------------------------------------------------------------
    |            |0x127f:SMC1接收Buff,128Byte
    |            |0x1200:SMC1接收Buff,128Byte
    |------------|---------------------------------------------------------------
    |            |0x11ff:SMC1发送BD表,256Byte
    |            |0x1100:SMC1发送BD表,256Byte
    |------------|---------------------------------------------------------------
    |            |0x10ff:SMC1接收BD表,256Byte
    |            |0x1000:SMC1接收BD表,32个,256Byte
    |------------|---------------------------------------------------------------
    |            |
    |            |
    |------------|---------------------------------------------------------------
    |            |
    |            |
    |------------|---------------------------------------------------------------
    |            |0x0d00:SCC4发送BD表,32个,256Byte
    |            |0x0c00:SCC4发送BD表,32个,256Byte
    |------------|---------------------------------------------------------------
    |            |0x0bff:SCC4接收BD表,128个,1024Byte
    |            |0x0800:SCC4接收BD表,128个,1024Byte
    |------------|---------------------------------------------------------------
    |            |0x07ff:预留2K
    |            |0x0000:预留2K
    -----------------------------------------------------------------------------
DEFAULT_IMMR_ADRS + 0x2000 + offset


Flash地址分配:
   第一个block用于存放非易失地变量,如加载状态字等;
   第二个block用于存放错误码头和错误码
   第三,四个block用于存放FPGA
   第五个block用于存放测试flash时保存的数据
   第六个block用于存放MEDIA配置文件
   第七个block用于存放系统常用变量
   第八个block用于作为第一个block的备份
   以上为前1Mflash的分配情况
   程序从1M开始往后分配
   1.5M用于存放程序A;
   1.5M用于存放程序B
   1M用于存放数据
   1M用于存放补丁
   2M用于存放DSP

    --------------0x7FFFFF(8M)
    |   512K     |0x780000(7.5M): BIOS_IN_FLASH_ADDR
    |------------|---------------------------------------------------------------
    |   2M       |0x580000(5.5M): DSP_START_ADDRESS
    |------------|---------------------------------------------------------------
    |   1.5M     |0x400000(4M): DATA_START_ADDRESS(大小1.5M)
    |------------|---------------------------------------------------------------
    |   1.5M     |0x280000(2.5M): PROGRAM_B_START_ADDRESS
    |------------|---------------------------------------------------------------
    |   1.5M     |0x100000(1M): PROGRAM_A_START_ADDRESS(大小1.5M)
    |------------|---------------------------------------------------------------
    |            |0x000E0000+32: BOOT_INFO_IN_FLASH(单板MAC/IP/MASK/GATE等地址存放地址(224bytes))
    |            |0x000E0000+16: SOFT_FPGA_ADDRESS(是否启用软逻辑标志,1byte)
    |            |0x000E0000+14: BOOT_STATE_STAB_TIME_ADDRESS(给DEC中的减数器的值,即设置程序的稳定时间 每100ms减1)
    |            |0x000E0000+13: BOOT_STATE_TIMES_ADDRESS(启动失败的最大次数)
    |            |0x000E0000+12: BOOT_STATE_COUNT_ADDRESS(启动次数)
    |            |0x000E0000+08: BOOT_DATA_FLAG_ADDRESS(数据的加载标志存放地址)
    |            |0x000E0000+04: BOOT_PROG_FLAG_ADDRESS_BACK(程序的加载标志存放地址,第8个block)
    |------------|---------------------------------------------------------------
    |   128K     |0xC0000(768K): 系统需要写入的变量。第7个block
    |------------|---------------------------------------------------------------
    |   128K     |0xA0000(640K): 媒体配置文件的存放。第6个block
    |------------|---------------------------------------------------------------
    |   128K     |0x80000(512K): 测试FLASH时擦除整个BLOCK,需要保存的数据为一个BLOCK。第5个block
    |------------|---------------------------------------------------------------
    |   256K     |0x40000(256K): FPGA_START_ADDRESS(FPGA的存放地址,第3个block)
    |------------|---------------------------------------------------------------
    |   224Byte  |0x00000000+32: BOOT_INFO_IN_FLASH(单板MAC/IP/MASK/GATE等地址存放地址(224bytes))
    |------------|---------------------------------------------------------------
    |   1Byte    |0x00000000+16: SOFT_FPGA_ADDRESS(是否启用软逻辑标志,1byte)
    |------------|---------------------------------------------------------------
    |   2Byte    |0x00000000+14: BOOT_STATE_STAB_TIME_ADDRESS(给DEC中的减数器的值,即设置程序的稳定时间 每100ms减1)
    |------------|---------------------------------------------------------------
    |   1Byte    |0x00000000+13: BOOT_STATE_TIMES_ADDRESS(启动失败的最大次数)
    |------------|---------------------------------------------------------------
    |   4Byte    |0x00000000+12: BOOT_STATE_COUNT_ADDRESS(启动次数)
    |------------|---------------------------------------------------------------
    |   4Byte    |0x00000000+08: BOOT_DATA_FLAG_ADDRESS(数据的加载标志存放地址)
    |------------|---------------------------------------------------------------
    |   4Byte    |0x00000000+04: BOOT_PROG_FLAG_OFFSET(程序的加载标志存放地址)
    |------------|---------------------------------------------------------------
    |            |
    --------------0x00000000
*/



    *PCPAR(INTERNAL_MEM_MAP_ADDR) &= ~(PC15 | PC13);
    *PCSO(INTERNAL_MEM_MAP_ADDR)  &= ~(PC15 | PC13);
    *PCDIR(INTERNAL_MEM_MAP_ADDR) |= (PC15 | PC13);

    *PCDAT(INTERNAL_MEM_MAP_ADDR) &= ~PC13;
    *PCDAT(INTERNAL_MEM_MAP_ADDR) &= ~PC15;
while(TRUE);


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -