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

📄 boot_c671x.s62

📁 使用CCS信息DSP编程,适用于6713B的启动程序。
💻 S62
字号:
;* ------------------- File: boot.asm -----------------------------------*
            .title  "Flash bootup utility for 6713 dsk"
            .option D,T
            .length 102
            .width  140

; global EMIF symbols defined for the c671x family
            .include        boot_c671x.h62

            .sect ".boot_load"
            .global _boot
            .global ___binit__

            .ref _c_int00

_boot:
;************************************************************************
;* DEBUG LOOP -  COMMENT OUT B FOR NORMAL OPERATION
;************************************************************************

            zero B1
_myloop:  ; [!B1] B _myloop  
            nop  5
_myloopend: nop


;************************************************************************
;* CONFIGURE EMIF
;************************************************************************

        ;****************************************************************
        ; *EMIF_GCTL = EMIF_GCTL_V;
        ;****************************************************************
            mvkl  EMIF_GCTL,A4    
      ||    mvkl  EMIF_GCTL_V,B4

            mvkh  EMIF_GCTL,A4
      ||    mvkh  EMIF_GCTL_V,B4

            stw   B4,*A4

        ;****************************************************************
        ; *EMIF_CE0 = EMIF_CE0_V
        ;****************************************************************
            mvkl  EMIF_CE0,A4       
      ||    mvkl  EMIF_CE0_V,B4     

            mvkh  EMIF_CE0,A4
      ||    mvkh  EMIF_CE0_V,B4

            stw   B4,*A4

        ;****************************************************************
        ; *EMIF_CE1 = EMIF_CE1_V (setup for 8-bit async)
        ;***************************************************************
            mvkl  EMIF_CE1,A4       
      ||    mvkl  EMIF_CE1_V,B4

            mvkh  EMIF_CE1,A4
      ||    mvkh  EMIF_CE1_V,B4

            stw   B4,*A4

        ;****************************************************************
        ; *EMIF_CE2 = EMIF_CE2_V (setup for 32-bit async)
        ;****************************************************************
            mvkl  EMIF_CE2,A4       
      ||    mvkl  EMIF_CE2_V,B4

            mvkh  EMIF_CE2,A4
      ||    mvkh  EMIF_CE2_V,B4

            stw   B4,*A4

        ;****************************************************************
        ; *EMIF_CE3 = EMIF_CE3_V (setup for 32-bit async)
        ;****************************************************************
            mvkl  EMIF_CE3,A4    
      ||    mvkl  EMIF_CE3_V,B4     ;

            mvkh  EMIF_CE3,A4
      ||    mvkh  EMIF_CE3_V,B4

            stw   B4,*A4

        ;****************************************************************
        ; *EMIF_SDRAMCTL = EMIF_SDRAMCTL_V
        ;****************************************************************
            mvkl  EMIF_SDRAMCTL,A4      
      ||    mvkl  EMIF_SDRAMCTL_V,B4    ;

            mvkh  EMIF_SDRAMCTL,A4
      ||    mvkh  EMIF_SDRAMCTL_V,B4

            stw   B4,*A4
                        
        ;****************************************************************
        ; *EMIF_SDRAMTIM = EMIF_SDRAMTIM_V
        ;****************************************************************
            mvkl  EMIF_SDRAMTIM,A4      
      ||    mvkl  EMIF_SDRAMTIM_V,B4    ;

            mvkh  EMIF_SDRAMTIM,A4
      ||    mvkh  EMIF_SDRAMTIM_V,B4

            stw   B4,*A4

        ;****************************************************************
        ; *EMIF_SDRAMEXT = EMIF_SDRAMEXT_V
        ;****************************************************************
            mvkl  EMIF_SDRAMEXT,A4      
      ||    mvkl  EMIF_SDRAMEXT_V,B4    ;

            mvkh  EMIF_SDRAMEXT,A4
      ||    mvkh  EMIF_SDRAMEXT_V,B4

            stw   B4,*A4

; copy sections using linker generated copy table.
; ___binit__ is the start address of the linker generated copy table

        mvkl  ___binit__, a3 ; load copy table pointer
        mvkh  ___binit__, a3   
        
        ldw   *a3++, b0   	 ; load first word of copy table (record sz)
        nop   4
        shr   b0, 16, b1     ; right shift to get the count (num records)
        
copy_section_top:
        ldw   *a3++, b4      ; load flash start (load) address 
        ldw   *a3++, a4      ; load ram start (run) address
        ldw   *a3++, b0      ; byte count (size)
        nop   2

  [!b1] b copy_done      ; have we copied all sections?
        nop   5

copy_loop:
        ldb   *B4++,B5
        sub   b0,1,b0    ; decrement counter
   [b0] b     copy_loop  ; setup branch if not done
        nop   2

        stb   B5,*A4++
        nop   2

        b     copy_section_top
        sub   b1,1,b1        ; decrement counter
        nop   4

        ; jump to _c_int00
copy_done:
        mvkl .S2 _c_int00, B0
        mvkh .S2 _c_int00, B0
        b    .S2 B0
        nop   5

    ;; .boot_load don't need to copy, will happen automatically upon dsp reset
  

⌨️ 快捷键说明

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