• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users






Re: 请教版主关于C30生成。hex文件的问题
#3
新會員
新會員


查看用戶資訊
谢谢Ryang,我已经明白HEX 檔案格式得意义,我不明白的是Assembler & Compiler 生成HEX 檔案的具体原则。例如,我在源代码中用了while(1),则在“program memory”中最后一句应该是“37FFCA bra 0x00208a”(我的代码存放到0x2000的),但实际上我看到的是

020F4 37FFCA bra 0x00208a
020F6 000850 nop
020F8 000004 nop
020FA 000002 nop
020FC 000000 nop
020FE 000000 nop
02100 000800 nop
02102 000050 nop
02104 000000 nop
02106 000000 nop
02108 FE0000 reset

我的源代码中并没有后面的“nop”和“reset”,我不明白Assembler & Compiler 是怎么生成后面这一段的。不知道你是不是有这方面的资料?

另外,从0x100~0x180存放的是
*(.handle);
*(.libc) *(.libm) *(.libdsp);
*(.lib*);
这点在DS51317D“MPLAB® ASM30, MPLAB® LINK30
AND UTILITIES USER’S GUIDE”的9.5.4.2 OUTPUT SECTION .TEXT有讲。

关于堆栈指针动态安排的问题,我还不是很明白,我希望弄清楚,可以告诉我哪里有资料解释吗?

再次谢谢Ryang!

發表於: 2005/5/16 18:04
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 请教版主关于C30生成。hex文件的问题
#2
版主
版主


查看用戶資訊
有關 Intel HEX format 可以參考有邊教育訓練裡的 MPASM workshop 教材,再講義的最後有對 HEX 檔案內容的說明及 CheckSUM的計算產生方式。
http://www.microchip.com.tw/material.htm

基本上 HEX 檔不太可能以人工的方式生成(太落伍、太困難了) HEX黨是由Assembler & Compiler 所生成的。

dsPIC 程式一般都是從 0x0100 的位址擺放使用著的代碼,你的怎會從 0x0180 開始呢? 你有修改 GLD 的檔案嘛?

檢查一下堆棧 (Stack)的設定,dsPIC 的 Stack Pointer是屬於動態安排的,你必須加入底下的程序已安排 W15 :
;------------------------------------------------------------------------------
;
Code Section in Program Memory

    
.text                ;Start of Code section


__reset
:       
            
mov    #__SP_init, W15    ;Initalize the Stack Pointer
            
mov    #__SPLIM_init, W0
            
mov    W0,SPLIM    ;Initialize the Stack Pointer Limit Register
            nop            
;Add NOP to follow SPLIM initialization


發表於: 2005/5/12 17:11
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


请教版主关于C30生成。hex文件的问题
#1
新會員
新會員


查看用戶資訊
请教版主,使用bootloader下载新代码时,PC机下发的是MPLAB生成的。hex文件吧,但我们下发的时候需要对。hex文件进行修改吗,还是直接照生成的。hex文件发。似乎C30生成的。hex文件有一些是MPLAB生成的而不是我们自己实际编写的用户代码,如0x100~0x180那一段。版主有对C30生成。hex文件的规则方面的说明吗,我希望学习那些由MPLAB自己生成的代码都是起什么作用的。

另外,当我从复位向量0x0000开始单步运行时,它总会在遇到0x122处的retrun命令就返回复位向量,根本不能进入我的程序,(我观察到我的程序是从0x180开始的)。而当我直接运行程序时,就完全是正常的,请问版主知道是什么原因吗?

發表於: 2005/5/10 17:15
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------