博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MDK中加载指定文件的技巧
阅读量:4110 次
发布时间:2019-05-25

本文共 1021 字,大约阅读时间需要 3 分钟。

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是不是就在这里了。

 

是不是很简单,应该还有其他的加载特定文件的方法,比如通过脚本等(不过我还不知道,呵呵)。

转载地址:http://woosi.baihongyu.com/

你可能感兴趣的文章
Single Number II --出现一次的数(重)
查看>>
Valid Parentheses --括号匹配
查看>>
Generate Parentheses--生成匹配括号(重)
查看>>
Remove Element--原地移除重复元素
查看>>
Remove Duplicates from Sorted Array--从有序数组中移除重复元素
查看>>
Count and Say
查看>>
Gas Station
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
Valid Palindrome 简单的回文判断
查看>>
Pascal's Triangle -- 生成杨辉三角
查看>>
Pascal's Triangle II 生成杨辉三角中的某行
查看>>
Minimum Depth of Binary Tree -- 二叉树的最小深度 DFS 加剪枝
查看>>
Climbing Stairs 爬楼梯方法 动态规划
查看>>
Merge Two Sorted Lists 合并两个有序链表
查看>>
pow(x,n) 为什么错这么多次
查看>>
Jump Game 动态规划
查看>>
Binary Tree Maximum Path Sum 自底向上求解(重重重重)
查看>>
Subsets 深搜
查看>>
Subsets II
查看>>
Edit Distance 字符串距离(重重)
查看>>