廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 9800 個閱讀者
 
<< 上頁  1   2   3  >>(共 3 頁)
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
ken0127
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用cmovies於2007-03-2 00:45發表的 :
看了一下程式發現這應該像是要接收 HEX 檔案的 Loader 吧!? 只是你把它簡化了
但是位址部分應該還是要有有 4 個 Bytes 才對.
而且你要考慮偏移位址(8000h)的問題及中斷向量的處理才算是完整的 Loader.

建議你用單步執行配合 Disassembly 來看整個動作及流程, 這樣比較容易找出問題.


看過hex檔的格式之後
才了解到原來hex碼每一列分成六個部份...
我已經將checksum的部分加入程式,用來除錯

但有關偏移位址還有中斷向量的部分,我不太懂
當pCode宣告成外部資料記憶體時
還需要考慮到偏移位址嗎?
還有,中斷向量是在寫組言時才需要用的
那我的執行程式的那個組語也需要加入中斷向量嗎?


獻花 x0 回到頂端 [20 樓] From:未知地址 | Posted:2007-03-02 18:54 |
cmovies
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x20
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

外部RAM的位址假設從8000h開始, 但 Hex 的開始位址是從8000h開始嗎?

事實上當你將程式載入到8000h時就會遇到一些問題.
一般KEIL C所產生的程式, 有可能會用到 lcall, ljmp 絕對位址的命令.
但是你的外部RAM位址是從 8000h, 那這些指令會跳到哪裡???
如果你全部用 Assembly 來寫外部RAM程式, 那這些你都能自己控制.
我想你用 Disassembly 來 Debug, 應該就可以看出問題所在!

中斷向量是另一個問題, 因為 51 的中斷向量在固定的位址無法調整.
如果外部RAM程式有用到中斷, 那誰來負責將中斷轉移過去???


獻花 x0 回到頂端 [21 樓] From:台灣中華電信 | Posted:2007-03-02 19:31 |

<< 上頁  1   2   3  >>(共 3 頁)
首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.013291 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言