| /* |
| * |
| * Project: DMW96 |
| * |
| * Module Name: |
| * |
| * $Source: /prj/C2000/vault/sim/soft/dect/scu_arm_dtcm_with_cortex/host_code/asm/mcu_scu_arm_dtcm_with_cortex.s,v $ |
| * |
| * $ReVision: $ |
| * |
| * $Date: 2011/02/16 05:19:26 $ |
| * |
| * $Author: gokavaa $ |
| * |
| * Copyright (C) 2010 DSPG Ltd. All Rights Reserved |
| * |
| * Description: in this test the cortex performs transactions |
| * to the DTCM while the arm petches instructions simultanously |
| * |
| */ |
| |
| /*#include "../common_code/asm/macros.h"*/ |
| #include "../common_code/asm/sys_regs_def.h" |
| #include "../arm926_boot/mcu_test_end.s" |
| |
| /* EXPORT mainc_mcu_scu_arm_dtcm_with_cortex */ |
| /* |
| * EXPORT undefined_Handler |
| * EXPORT swi_Handler |
| * EXPORT prefetchAbort_Handler |
| * EXPORT dataAbort_Handler |
| * EXPORT irq_Handler |
| * EXPORT fiq_Handler |
| */ |
| |
| |
| /* AREA bank0, CODE, READONLY */ |
| |
| .global mainc_mcu_scu_arm_dtcm_with_cortex |
| |
| mainc_mcu_scu_arm_dtcm_with_cortex: |
| |
| /****************************************** |
| * TEST |
| *****************************************/ |
| |
| |
| /* |
| * read-compare from DTCM physical boundaries |
| * the data was inserted ahead by readmemh |
| */ |
| LDR r12, =0x0001 |
| |
| |
| LDR r0, =McuCssDtcm |
| |
| |
| /* read from the start of physical 32KRam */ |
| LDR r2, =0x01111011 |
| ldr r6,[r0] |
| CMP r6,r2 |
| BNE ErrorTest_host |
| |
| /* read from the end of physical 32KRam */ |
| LDR r7, =0x7FFC |
| ADD r1,r0,r7 |
| LDR r2, =0x02222022 |
| ldr r6,[r1] |
| CMP r6,r2 |
| BNE ErrorTest_host |
| |
| |
| |
| /* read from the start of physical 32KRam with wraped memory address |
| * LDR r7, =0x10000 ;wraped memory address to adress 0x0000000 |
| * ADD r1,r0,r7 |
| * LDR r2, =0x01111011 |
| * ldr r6,[r1] |
| * CMP r6,r2 |
| * BNE ErrorTest_host |
| */ |
| |
| /* |
| * write to all DTCM physical boundaries |
| */ |
| LDR r12, =0x0002 |
| |
| |
| |
| /* write to the start of physical 32KRam */ |
| LDR r2, =0x12212211 |
| str r2,[r0] |
| |
| /* write to the end of physical 32KRam */ |
| LDR r7, =0x7FFC |
| ADD r1,r0,r7 |
| LDR r2, =0x23323322 |
| str r2,[r1] |
| |
| |
| /* |
| * read-compare from all DTCM physical boundaries |
| */ |
| LDR r12, =0x0003 |
| |
| |
| |
| /* read-compare from the start of physical 32KRam0 */ |
| LDR r2, =0x12212211 |
| ldr r6,[r0] |
| CMP r6,r2 |
| BNE ErrorTest_host |
| |
| /* read-compare from the end of physical 32KRam0 */ |
| LDR r7, =0x7FFC |
| ADD r1,r0,r7 |
| LDR r2, =0x23323322 |
| ldr r6,[r1] |
| CMP r6,r2 |
| BNE ErrorTest_host |
| |
| |
| |
| |
| |
| /* |
| * ordering the test env to load the scu out files |
| */ |
| |
| /* ; ldr r0, =0x8000 */ |
| /* ; ldr r5, =TopTbRegsBase + TbEnvConfigOffset */ |
| /* ; strh r0, [r5] */ |
| |
| |
| |
| /* |
| * enabling the arm clock & removing out of reset |
| */ |
| LDR r12, =0x0006 |
| |
| /* Write the GPIO registers to bring ARM926 out fo reset */ |
| LDR r11, =0xf3 |
| LDR r10, =0x904700b0 |
| str r11,[r10] |
| |
| LDR r11, =0x0 |
| LDR r10, =0x904700b4 |
| str r11,[r10] |
| |
| |
| /* enabeling the write- protected clk_en register for writing |
| * WriteWord CmuBase, CmuWrProtOffset, 0x00000090 |
| * |
| * enable clock for arm (bit[1]) |
| * other fields are set to their default values |
| * WriteWord CmuBase, CmuSwCtrlClkEn1Offset, 0x00804012 |
| */ |
| |
| /* |
| * waiting for arm to start fetching |
| * |
| * poling for "c4c4" at css sys cfg scratch pad reg |
| * this is written by the arm to indicate to the cortex that the arm started his tasks |
| */ |
| loop1: |
| LDR r11, = CssSysCfgBase + CssSysCfgScPadRegOffset |
| ldr r10, [r11] |
| LDR r7, =0xc4c4 |
| cmp r10,r7 |
| BEQ loop1end |
| b loop1 |
| loop1end: |
| |
| |
| /* |
| * write-read-compare to DTCM in intervals |
| */ |
| LDR r12, =0x0007 |
| |
| |
| LDR r0, =McuCssDtcm |
| |
| ADD r0, r0, #0x6000 @ points 0x6000 bytes into DTCM memory |
| ADD r1, r0, #0x0040 |
| |
| LDR r2, =0x38576328 |
| LDR r3, =0x38473694 |
| LDR r4, =0x97473864 |
| LDR r5, =0x50374673 |
| |
| loop2: |
| STM r0,{r2-r5} |
| LDMIA r0!,{r6-r9} |
| |
| /* |
| * str r2,[r0] |
| * nop |
| * ldr r6,[r0] |
| * add r0,r0,#4 |
| */ |
| CMP r6,r2 |
| BNE ErrorTest_host |
| CMP r7,r3 |
| BNE ErrorTest_host |
| CMP r8,r4 |
| BNE ErrorTest_host |
| CMP r9,r5 |
| BNE ErrorTest_host |
| |
| |
| CMP r0, r1 |
| BNE loop2 |
| |
| |
| /* |
| * write-read-compare to DTCM in intervals 16bit |
| */ |
| LDR r12, =0x0008 |
| |
| |
| LDR r0, =McuCssDtcm |
| |
| ADD r0, r0, #0x6000 @ points 0x6000 bytes into ITCM memory |
| ADD r0, r0, #0x0040 |
| ADD r1, r0, #0x0010 |
| |
| LDR r2, =0x3328 |
| LDR r3, =0x3694 |
| LDR r4, =0x9744 |
| LDR r5, =0x3746 |
| |
| loop4: |
| strh r2,[r0] |
| strh r3,[r0,#2] |
| strh r4,[r0,#4] |
| strh r5,[r0,#6] |
| |
| ldrh r6,[r0] |
| ldrh r7,[r0,#2] |
| ldrh r8,[r0,#4] |
| ldrh r9,[r0,#6] |
| |
| ADD r0, r0, #8 |
| |
| CMP r6,r2 |
| BNE ErrorTest_host |
| CMP r7,r3 |
| BNE ErrorTest_host |
| CMP r8,r4 |
| BNE ErrorTest_host |
| CMP r9,r5 |
| BNE ErrorTest_host |
| |
| |
| CMP r0, r1 |
| BLT loop4 |
| |
| |
| /* |
| * write-read-compare to DTCM in intervals 8bit |
| */ |
| LDR r12, =0x0009 |
| |
| |
| LDR r0, =McuCssDtcm |
| |
| ADD r0, r0, #0x6000 @ points 0x6000 bytes into ITCM memory |
| ADD r0, r0, #0x0060 |
| ADD r1, r0, #0x0010 |
| |
| LDR r2, =0x6a |
| LDR r3, =0x23 |
| LDR r4, =0x8f |
| LDR r5, =0x2d |
| |
| loop5: |
| strb r2,[r0] |
| strb r3,[r0,#1] |
| strb r4,[r0,#2] |
| strb r5,[r0,#3] |
| |
| ldrb r6,[r0] |
| ldrb r7,[r0,#1] |
| ldrb r8,[r0,#2] |
| ldrb r9,[r0,#3] |
| |
| ADD r0, r0, #4 |
| |
| CMP r6,r2 |
| BNE ErrorTest_host |
| CMP r7,r3 |
| BNE ErrorTest_host |
| CMP r8,r4 |
| BNE ErrorTest_host |
| CMP r9,r5 |
| BNE ErrorTest_host |
| |
| |
| CMP r0, r1 |
| BLT loop5 |
| |
| /* |
| * checking that the arm finished fetching |
| */ |
| LDR r12, =0x00010 |
| /* poling for "a2a2" at css sys cfg scratch pad reg |
| * this is written by the arm to indicate to the cortex that the arm finished his tasks |
| */ |
| loop3: |
| LDR r11, =CssSysCfgBase + CssSysCfgScPadRegOffset |
| ldr r10, [r11] |
| LDR r7, =0xa2a2 |
| cmp r10,r7 |
| beq loop3end |
| b loop3 |
| loop3end: |
| |
| |
| b StopTest_host |
| nop |
| nop |
| nop |
| nop |
| |
| |
| /***************************************** |
| * Interrupt HANDLERS |
| *****************************************/ |
| /* |
| * undefined_Handler |
| * swi_Handler |
| * prefetchAbort_Handler |
| * dataAbort_Handler |
| * irq_Handler |
| * fiq_Handler |
| */ |
| |
| |
| /* END */ |
| |
| |