MDK中加載指定文件的技巧

OK,今天做個MDK的使用技巧分享

 

先說下ADS的這個做法

ADS相信很多人都用過,當我們需要再SDRAM中調試運行程序時很方便。

同時要注意到ADS還有一個功能,即load memory from file,這個可以幹嘛呢?

比如你需要加載某個image到SDRAM中指定運行域,那就需要用它,你只需要把iamge對應的文件放到相應目錄下

之後點擊這個功能,填上起始地址就OK拉,完了之後你可以在AXD的內存watch中看時候正確加載了。

 

好,那我們再看看MDK下如何做到同樣的功能

其實MDK下無法直接這樣做,細心的人會知道MDK下沒有類似像load memory from file的功能

那怎麼把一個文件放到SDRAM中指定區域呢?

 

其實我們可以“曲線救國”,熟悉分散加載的在sct文件中可以指定加載域和運行域,加載域就是指定你的程序image放到SDRAM中什麼位置。

結合一個例子說明吧,比如我想把一個vivi的iamge加載到SDRAM中指定的位置,但是我並沒有對vivi建立對應的MDK下工程這個vivi只是我

從網上隨便下的一個。首先我們需要下載一個工具Bin2c_WIN(這個比Bin2c好用),在vivi拷貝到工程的目錄下,使用B2C把這個vivi image轉換成

C數組形式的.c文件,哈哈,知道我想幹嗎了吧!

接着把這個vivi.c(自己再加個vivi.h)添加到你當前的工程下,之後改寫你的sct文件

sct參考如下:

 LREGION_ROM1 0x30000000   0x01000000   //加載域1

    EREGION_ROM1 0x30000000 0x00100000
    { 
        *.o (Init, +First)
        .ANY (+RO)
    }   
    EREGION_RAM1 0x30100000  
    { 
        .ANY (+RW +ZI)
    }
}

LREGION_ROM2 0x30200000  0x00100000   //加載域2
{
     EREGION_VIVI 0x30200000  
    { 
        vivi.o (+RW)       
    }
}

 

之後編譯一下你的文件,生成的axf和bin文件中現在都已經包含了vivi iamge的全部信息了。

點擊debug之後,查看下memory定位到0x30200000位置,看看vivi的iamge是不是就在這裏了。

 

是不是很簡單,應該還有其他的加載特定文件的方法,比如通過腳本等(不過我還不知道,呵呵)。

 

轉載請標出處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章