各位工程师,你们好!DSP6713的二级bootload中有一个copyTable(见下面)。现在的copyTable是将所有的程序(这些是连续烧写到Flash的)都一次性拷贝到IRAM,因此copyTable中其实只有一个Table(只有一个起始地址和运行地址)。 如果程序太大,可能还要用到外部空间的RAM,比如我在CE3空间接了一块SDRAM,这时可能需要将程序拷贝到多个运行地址,可能就要建多个Table,不知道这个怎么实现?
我曾尝试将所有在IRAM运行的程序都改在SDRAM,但是也没有成功,不知道是有什么问题?
copyTable:
; count
; flash start (load) address ; ram start (run) address
;; .text
.word user_size
.word user_ld_start
.word user_rn_start
;; end of table
.word 0
.word 0
.word 0
dong sun:
工程师请回答啊,是不是我的思路错了?大程序怎么办?
Shine:
在搬移前,有没有对SDRAM进行初始化?
dong sun:
回复 Shine:
我用的是例程的二级bootload代码,下面应该就是搬移前的初始化,具体的值我在c6713_emif.s62中进行了更改。在从FLASH搬移完成后,会跳到c_int00,不知道如果我所有的代码都分配到CE3的SDRAM,会不会有长跳转的问题?我对汇编不熟,不太了解这。
;************************************************************************;* 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