标题:
如何从C中调用ram内的程序[原创]
[打印本页]
作者:
forthlab
时间:
2005-6-16 12:04
标题:
如何从C中调用ram内的程序[原创]
在作flash程序时,我准备将程序放在ram内,再从c调用:
fun()
{
unsigned char ram_fun[];
//填充ram_fun;
asm{
BSR @ram_fun; //这里出错!!为何?
}
}
但汇编的调用语句出错。请问如何解决?
作者:
seuafu2005
时间:
2005-6-16 12:27
用jsr试试,bsr的寻址范围就8位偏移量
作者:
8808beter
时间:
2005-6-16 16:13
语句错误!
#define P_AddressInRAM 0x????
asm{JSR P_AddressInRAM}
作者:
forthlab
时间:
2005-6-16 16:19
用JSR也一样出错!
另外,ram_fun[]的地址我也不知道,只有编译器知道,我只要在fun()内调用RAM的函数,调用fun()后,ram_fun[]能自动释放。
作者:
libingqiang
时间:
2005-6-16 19:45
具体怎样做呀?能不能介绍一下
作者:
forthlab
时间:
2005-6-18 12:03
搞定了!
asm{
LDHX @ram_fun;
JSR ,X;
}
作者:
tuorongou
时间:
2005-7-7 14:17
标题:
查错
我在写擦除程序时,是以下这样的,但编译时,引用汇编出错,请高手指教:
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区域的擦除程序
}
作者:
tuorongou
时间:
2005-7-11 08:26
顶
作者:
seuafu2005
时间:
2005-7-11 10:03
memcpy() 出现警告是没有把头文件包含进去,我记得应该是包含string.h
引用汇编出错是哪里出错?是编译器编译没有通过?
你的程序,擦除是在RAM里面运行,但是你的擦除地址参数是怎么传递进去的?
[此贴子已经被作者于2005-7-11 10:03:34编辑过]
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0