广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 10135 个阅读者
 
<< 上页  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.014690 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言