boot.asm
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:3k
源码类别:

DSP编程

开发平台:

C/C++

  1.             .title  "Flash bootup utility for DM642 EVM"
  2.             .option D,T
  3.             .length 102
  4.             .width  140
  5. COPY_TABLE  .equ    0x90000400
  6. EMIF_BASE   .equ    0x01800000
  7.             .sect ".boot_load"
  8.             .global _boot
  9. _boot:      
  10. ;************************************************************************
  11. ;* Debug Loop -  Comment out B for Normal Operation
  12. ;************************************************************************
  13.             zero B1
  14. _myloop:  ; [!B1] B _myloop  
  15.             nop  5
  16. _myloopend: nop
  17. ;************************************************************************
  18. ;* Configure EMIF
  19. ;************************************************************************
  20.         mvkl  emif_values, a3  ; load pointer to emif values
  21.         mvkh  emif_values, a3
  22.         
  23.         mvkl  EMIF_BASE, a4    ; load EMIF base address
  24.         mvkh  EMIF_BASE, a4
  25.         mvkl  0x0009, b0       ; load number of registers to set
  26.         mvkh  0x0000, b0
  27. emif_loop:
  28.         ldw   *a3++, b5        ; load register value
  29.         sub   b0,1,b0          ; decrement counter
  30.         nop   2
  31.  [ b0]  b     emif_loop
  32.         stw   b5, *a4++        ; store register value
  33.         nop   4  
  34. ;****************************************************************************
  35. ;* Copy code sections
  36. ;****************************************************************************
  37.         mvkl  COPY_TABLE, a3   ; load table pointer
  38.         mvkh  COPY_TABLE, a3
  39.         ldw   *a3++, b1        ; Load entry point
  40. copy_section_top:
  41.         ldw   *a3++, b0        ; byte count 
  42.         ldw   *a3++, a4        ; ram start address
  43.         nop   3
  44.  [!b0]  b copy_done            ; have we copied all sections?
  45.         nop   5
  46. copy_loop:
  47.         ldb   *a3++,b5
  48.         sub   b0,1,b0          ; decrement counter
  49.  [ b0]  b     copy_loop        ; setup branch if not done
  50.  [!b0]  b     copy_section_top
  51.         zero  a1
  52.  [!b0]  and   3,a3,a1
  53.         stb   b5,*a4++
  54.  [!b0]  and   -4,a3,a5         ; round address up to next multiple of 4
  55.  [ a1]  add   4,a5,a3          ; round address up to next multiple of 4
  56. ;****************************************************************************
  57. ;* Jump to entry point
  58. ;****************************************************************************
  59. copy_done:
  60.         b    .S2 b1
  61.         nop   5
  62. emif_values:
  63.         .long 0x00052078      ; GBLCTL
  64.         .long 0x73a28e01      ; CECTL1 (Flash/FPGA)
  65.         .long 0xffffffd3      ; CECTL0 (SDRAM)
  66.         .long 0x00000000      ; Reserved
  67.         .long 0x22a28a22      ; CECTL2
  68.         .long 0x22a28a22      ; CECTL3
  69.         .long 0x57115000      ; SDCTL
  70.         .long 0x0000081b      ; SDTIM (refresh period)
  71.         .long 0x001faf4d      ; SDEXT