阅读:2309回复:4
求助,AN2131Q用KEIL C51调试时,有:NO CODE MEMORY AT ADDRESS 0045H
<body>
<font color="#00ffff",size="9.pt">我用的是AN2131片子,在DEBUG时,output window有monitor error:no code memory at address 0045h.程序中有用到中断入口地址:org 0043h,如果不用这句,就没有error,或者把0043h改成其他的也对了,可问题是进USB中断一定要用43H啊。谁能帮助我啊?</font>(有这个error,程序依然可以执行,中断来了以后也能自动进中断入口,不知道这是个什么问题?)</body> |
|
|
沙发#
发布于:2001-07-15 15:06
0045h的值应该是usb core 生成的自动矢量,及中断跳转表jumptable的偏移量,从而指向不同的中断服务程序。去掉org 0043h,或改成别的地址都会使得自动中断矢量功能无效,0045h的值也就失去了意义,所以不会产生错误。现在你的程序能够找到中断入口,是否是因为你的中断跳转表有问题,从而在跳转的时候出错。
另外,如果能够正确完成中断功能的话,至多是警告,不会是出错吧。 以上意见,仅供参考。 |
|
板凳#
发布于:2001-07-21 10:46
kejun你这个问题解决了吗?告诉我怎么解决的好吗?
现在我也遇到同样的问题,如果用#pragma NOIV // Do not generate interrupt vectors 程序正常,但如果要用到自动矢量,去掉#pragma NOIV就会报警告和错误。no memory code 0045h ,谁知道啊,怎么弄? |
|
地板#
发布于:2001-07-22 22:22
好象没有任何影响,我在编译时就看到了,干脆把它当成一个BUG,如果你不放心,问CYPRESS的看看。usbapps@cypress.com
[sunkai 编辑于 2001-07-22 22:35] |
|
地下室#
发布于:2004-10-27 14:30
不知道大家的这个问题是否彻底解决。
以下是彻底的解决方法: 参见以下这个链接:http://www.keil.com/support/docs/863.htm 将cypress提供的EZUSB的USBJMPTB.A51文件修改以后,然后将你项目中的USBJMPTB.obj删除,加入USBJMPTB.A51,重新编译以后,然后将USBJMPTB.A51文件删除,在你的项目文件夹里会生成一个USBJMPTB.obj文件,将此USBJMPTB.obj文件加入项目之中即可 |
|