这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » bootload,vc33,cflash bootload的問題(關於vc33與

共2条 1/1 1 跳转至

bootload,vc33,cflash bootload的問題(關於vc33與flash 位址)(新手)

院士
2006-09-17 18:14:16     打赏
bootload,vc33,cflash bootload的問題(關於vc33與flash 位址)(新手)



关键词: bootload     cflash     問題     關於     fla    

院士
2006-12-22 22:43:00     打赏
2楼
问 是這樣的...
我先將A.out-->A.bin 然後燒進flash
得到的內容如下
address     value    
0x400000    0x08
0x400001    0x00
0x400002    0x00
0x400003    0x00
0x400004    0xF8
0x400005    0x10
0x400006    0x00
0x400007    0x00
0x400008    0x01
0x400009    0x00
0x40000A    0x00
0x40000B    0x00
0x40000C    0x02
0x40000D    0x00
0x40000E    0x80
0x40000F    0x00

不好意思...問題有點煩..請進來看的前輩幫我回答一下阿..
問題一:
.out轉成.bin的.cmd
-i
-e 0x800002
.
.(以下省略)

-e => 指的是boot load 完成後,程式執行的開始位址
      而我看書說0x40000C~0x40000F是program load starting address
      這樣是不是說flash 程式 load 到 DSP 時,load的位址與程式執行的開
      始位址皆由-e決定呢????

問題二:
load過去的時候...
0x800002 開始之後位址的value會是從0x40000?開始對映呢??
是從0x400000 還是 0x400004 還是 0x400008 還是0x40000C 還是....??
之前看書,給我的感覺是從0x400008開始..
可是因為DSP目前有問題,不能自己兩邊(DSP?b>cflash)check...
so..有經驗的前輩可以跟我講一下阿...
我蠻想知道的...

問題三:
A.out的.cmd ,sections的分配 與bootload的過程有關麼??
從.out到.bin,再燒進flash,再load到DSP,執行程式,感覺與A.out的sections分配無關阿,是不是只是為了產生A.out,才加上.cmd的呢???
對.cmd 很不清楚阿..

問題大致上就是這樣了...
看過的各位有經驗或有想法的前輩,麻煩回答一下阿...
謝謝阿.....


1: bootload的問題(關於vc33?b>cflash 位址)(新手)首先,关于程序的.cmd文件,感觉它是程序的一个整体部署,它规定了不同程序存放的起始地址,占用空间的大小,各个段在这些空间中的存储和调用;

其次,关于转.bin文件的.cmd文件,它的任务就是把你所编译的.out文件转成.bin文件,并且把程序从外部装载的起始地址以及装载完成后程序执行的起始地址等信息包含进去,如下:
-bootorg 400000h 程序从外部装载的起始地址
-e 0x800002 程序装载完成后程序执行的起始地址

最后,关于整个boot-load的流程。假设你已经把转换好的.bin文件成功的写入了FLASH中,现在系统上电DSP复位,它通过判断一些管脚的状态,例如是微机引导模式(MCBL)并且从BOOT2:400000H引导。随后它开始把FLASH中(从400000H开始)的程序搬运至DSP中的片内RAM中(从你的.cmd文件中定义的起始地址开始装载),搬运结束后,程序指针跳转到-e指定的地址开始运行程序,整个boot-load结束。

呵呵,感觉说的还是有点乱,如果有不对的地方还请高人指点:) 2: 不好意思...再問一下....autoctrl大...您指的...
程序搬運至DSP的片內RAM中(以你的.cmd文件中定義的起始地址開始裝載)
                           ~~~~~~~~~~~~
                         指的是程序的.cmd文件
                     還是轉.bin文件的.cmd文件???
                     是第二個麼??
                     
不好意思...可以再回答一下阿....
3: bootload的問題(關於vc33?b>cflash 位址)(新手)程序搬運至DSP的片內RAM中(以你的.cmd文件中定義的起始地址開始裝載)
                           ~~~~~~~~~~~~
           指的是你程序的.cmd文件中定义的起始地址,比如说:800000h


如果你定义了400000h-7fffffh这个地址段为你的flash存储空间,你对这个区段地址的读写操作也就是对flash的读写操作,相当于flash映射到了DSP存储器中。并且你可以从vc33的芯片手册上查到,400000h-7fffffh这段存储空间是片外STRB有效时才能使用。 4: 是不是說...這樣是不是說...
程序的.cmd文件中定義的起始地址,如果是800000h
這樣的話...
轉.bin文件的.cmd文件 中-e 要為800000h
不然的話...
-e若為800050h
boot load 完成後,程式執行的開始位址為800050h...
就少執行了800000h~800049h這段了...
能這樣說麼???
不好意思阿...
哈哈..好像越問越多了說.....
謝謝回答阿..^^

5: bootload的問題(關於vc33?b>cflash 位址)(新手)这就涉及到一个特殊的c中断函数c_int00,这个函数是为系统复位中断保留的,用于系统的初始化和调用main函数,也就是c程序的入口点。

鉒oad Program后转到汇编窗口时,光标停留的地方就是c_int00的入口地址,也就是你程序将要执行的起始地址。你所说的800000h这时候是main函数的起始地址,但是这和通常的c不同之处在于:程序并不是从main函数开始执行,而是要由c_int00函数建立c的运行环境,然后再调用main函数执行程序,这些你都可以在汇编窗口中清楚的看到。 6: 看來..要走的路...還很遙遠阿哈哈..
現在才知道還有c_int00...
剛剛抓了TMS320C3XC4X OPTIMIZING C COMPILER USER'S GUIDE..
發現裡面有說...
學校放一周假..要K一下這本阿...
不過....
我其實想問的是...
如果程序的.cmd文件中定義的起始地址,如果是800000h
那-e應該設多少????
最後....
非常..非常感謝autoctrl前輩..一直有在關照這貼...
也一直有回答...
謝謝阿..^^
PS:嘿嘿....可不可以也指導一下-e該如何設說
   因為..我不知道..c_int00的入口地址如何得知..
   謝謝阿..^^"
7: bootload的問題(關於vc33?b>cflash 位址)(新手)呵呵,这个简单:你转到汇编窗口,找到c_int00这个函数,第一列就是你需要的地址了:) 8: 對喔....哈哈..對喔....
去找看看函數的第一列....就知道了...
我知了...
您還真利害阿.....
學長...跟我一樣..不清不白的...
將這篇也給他看看阿..
真的非常感謝您的回答說...
謝謝阿;)

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]