首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何从C中调用ram内的程序[原创]

如何从C中调用ram内的程序[原创]

在作flash程序时,我准备将程序放在ram内,再从c调用:

fun()

unsigned char ram_fun[];
//填充ram_fun;

asm{
       BSR @ram_fun;      //这里出错!!为何?
    }



但汇编的调用语句出错。请问如何解决?
用jsr试试,bsr的寻址范围就8位偏移量
语句错误!
#define P_AddressInRAM  0x????
asm{JSR     P_AddressInRAM}
学后而问
用JSR也一样出错!
另外,ram_fun[]的地址我也不知道,只有编译器知道,我只要在fun()内调用RAM的函数,调用fun()后,ram_fun[]能自动释放。
具体怎样做呀?能不能介绍一下
作个朋友
搞定了!

asm{
    LDHX @ram_fun;
    JSR ,X;
}

查错

我在写擦除程序时,是以下这样的,但编译时,引用汇编出错,请高手指教:
void EarseFlash(unsigned int addr)
  {
    faddr=addr;                   //擦除flash的首地址
   
    asm{
      ldhx @DoEarseFlash   //擦除程序的首地址->HX
      sthx pbase           //HX->内存变量pbase
      ldhx @EarseFlash_END  //擦除程序的末地址->HX
      sthx pend           //HX->内存变量pend
    }            
    memcpy((void *)PrgOfRam,(void *)pbase,pend-pbase); //编译时这句出现警告
    //在RAM区执行擦除程序
    asm{
        ldhx @PrgOfRam             //擦除程序在RAM区的首地址
      jsr ,X
      }                        //执行RAM区域的擦除程序
  }
memcpy() 出现警告是没有把头文件包含进去,我记得应该是包含string.h
引用汇编出错是哪里出错?是编译器编译没有通过?
你的程序,擦除是在RAM里面运行,但是你的擦除地址参数是怎么传递进去的?


[此贴子已经被作者于2005-7-11 10:03:34编辑过]

返回列表