- 注册时间
- 2005-2-11
- 最后登录
- 1970-1-1
|
功能:打了补丁后可以在LavaX里执行凌阳16位单片机指令!
具体升级方法:首先确保内核是1.6的(可以在v+w+on/off里选NOR TEST看nor版本),然后按照说明.doc做。
说明:03.bin主要是修改checksum值,08.bin才是主要的。
如何让TC800的LavaX里执行汇编程序?编译工具是LeeSoft的LavaX3.5IDE,要执行汇编函数是调用
int Exec(int &codeBuf[], int size, int flag);
codeBuf是机器码保存的地方,size是代码长度,flag表示是否压缩代码,0表示压缩,非0表示不压缩,这是LavaX的结构的原因,第一次执行Exec的时候一定要flag = 0;压缩代码会破坏codeBuf的内容,这时才是真正的执行代码。
举个例子:- int codeBuf[]={0xf04a, 0x2a33, 0x9a90};//注意是int型数组
- /*
- * codeBuf里的汇编代码:
- * CALL a:2a33 //响铃 就是Beep();
- * POP PC, SR from [SP]//这一条一定要,不然无法返回LavaX中
- */
- void main()
- {
- Exec(codeBuf, sizeof(codeBuf), 0);
- }
复制代码 补充一点,Exec可以返回值,只要在codeBuf里加入一段代码就可以了,注意与上面例子的区别:- int codeBuf[]={0x9241, 0x9442, 0xd3c3, 0xd5c4, 0x9a90};
- /*
- * codeBuf里的汇编代码:
- * R1 = 0x1
- * R2 = 0x2
- * [3] = R1
- * [4] = R2//0x3,0x4是返回地址,只要往0x3,0x4赋值就可以返回这个值,就是0x20001(4个字节)
- * POP PC, SR from [SP] //这一条一定要,不然无法返回LavaX中
- */
- void main()
- {
- long num;
- num = Exec(codeBuf, sizeof(codeBuf), 0);
- printf("%d\n", num);//打印131073(就是0x20001)
- getchar();
- }
复制代码 至于汇编代码可以配合unSP IDE 2.0.0。
[ 本帖最后由 yan 于 2008-2-4 12:38 编辑 ] |
评分
-
查看全部评分
|