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

📄 vectors.asm

📁 c6713的源代码
💻 ASM
字号:
;--------------------------------
;中断向量表的汇编程序
;--------------------------------
FLASH_START   .equ    0x90000400     ;flash起始地址
CODE_START    .equ    0x00000400     ;RAM起始地址
CODE_SIZE     .equ    0x00010000     ;应用程序byte大小

EMIF_GCTL     .equ    0x01800000     ;EMIF global control
EMIF_CE1      .equ    0x01800004     ;EMIF CE1 control
EMIF_CE0      .equ    0x01800008     ;EMIF CE0 control
EMIF_CE2      .equ    0x01800010     ;EMIF CE2 control
EMIF_CE3      .equ    0x01800014     ;EMIF CE3 control
EMIF_SDRAMCTL .equ    0x01800018     ;EMIF EMIF SDRAM control
EMIF_SDRAMTIM .equ    0x0180001C     ;SDRAM timing (refresh)
EMIF_SDRAMEXT .equ    0x01800020     ;SDRAM Extension register

 ;.ref   _boot          ;调用启动程序
 .sect  ".vectors"     ;段声明
 .global RESET_RST     ;复位终端向量
 .global _boot         ;定义全局函数

RESET_RST:
      mvkl .S2 _boot, B0  ;
      mvkh .S2 _boot, B0  ;
      B    .S2 B0         ;
      NOP 5

NMI_RST:    
      NOP 8
RESV1:
      NOP 8
RESV2:
      NOP 8
INT4:
      NOP 8
INT5:
      NOP 8                    
INT6:
      NOP 8
INT7:
      NOP 8
INT8:
      NOP 8
INT9:
      NOP 8
INT10:
      NOP 8
INT11:
      NOP 8
INT12:
      NOP 8
INT13:
      NOP 8
INT14:
      NOP 8
INT15:
      NOP 8

;-----------------------------
;自动引导的汇编程序
;-----------------------------

 .sect   ".boot_load"   ;定义数据段
 .ref    _c_int00       ;声明外部函数

_boot:
       ;先设置控制寄存器,如EMIF_GCR等
           mvkl  EMIF_GCTL,A4    ;EMIF_GCTL address ->A4
       ||  mvkl  0x00003360,B4      
           mvkh  EMIF_GCTL,A4
       ||  mvkh  0x00003360,B4             
           stw   B4,*A4 
            
           mvkl  EMIF_CE0,A4     ;EMIF_CE0 address ->A4
       ||  mvkl  0xFFFFFF93,B4     
           mvkh  EMIF_CE0,A4
       ||  mvkh  0xFFFFFF93,B4
           stw   B4,*A4

           mvkl  EMIF_CE1,A4     ;EMIF_CE1 address ->A4
       ||  mvkl  0x22f1d113,B4     
           mvkh  EMIF_CE1,A4
       ||  mvkh  0x22f1d113,B4
           stw   B4,*A4
       
           mvkl  EMIF_CE2,A4     ;EMIF_CE2 address ->A4
       ||  mvkl  0x42b4ca13,B4     
           mvkh  EMIF_CE2,A4
       ||  mvkh  0x42b4ca13,B4
           stw   B4,*A4
       
           mvkl  EMIF_CE3,A4     ;EMIF_CE3 address ->A4
       ||  mvkl  0x42b4ca03,B4     
           mvkh  EMIF_CE3,A4
       ||  mvkh  0x42b4ca03,B4
           stw   B4,*A4
       
           mvkl  EMIF_SDRAMCTL,A4  ;EMIF_SDRAMCTL address ->A4
       ||  mvkl  0x57115000,B4     
           mvkh  EMIF_SDRAMCTL,A4
       ||  mvkh  0x57115000,B4
           stw   B4,*A4
       
           mvkl  EMIF_SDRAMTIM,A4  ;EMIF_SDRAMTIM address ->A4
       ||  mvkl  0x0000061a,B4     
           mvkh  EMIF_SDRAMTIM,A4
       ||  mvkh  0x0000061a,B4
           stw   B4,*A4

           mvkl  EMIF_SDRAMEXT,A4  ;EMIF_SDRAMEXT address ->A4
       ||  mvkl  0x00054547,B4     
           mvkh  EMIF_SDRAMEXT,A4
       ||  mvkh  0x00054547,B4
           stw   B4,*A4
	   ;写一个数到flash中
	   
       ;拷贝FLASH中的程序到DSP内部RAM
       mvkl  FLASH_START,B4 
       mvkh  FLASH_START,B4  ;B4为flash地址指针  
      	
       mvkl  CODE_START ,A4 
       mvkh  CODE_START ,A4  ;A4为RAM地址指针
       
       zero  A1              ;A1用作计数器

       mvkl  CODE_SIZE,B6
       mvkh  CODE_SIZE,B6    ;B6为需要拷贝字节数

_boot_loop:                  ;DSP开始读取FLASH中程序
	ldw  *B4++,A0
	nop  5
	stw  A0,*A4++
	nop  5
	add  1,A1,A1
	cmplt A1,B6,B0
	nop
	[B0] b _boot_loop
	nop 5
	mvkl .S2 _c_int00, B0  ;结束退到Main执行
        mvkh .S2 _c_int00, B0
        B    .S2 B0
        nop 5

⌨️ 快捷键说明

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