标题: 如何编写由2个S19文件组成的系统 [打印本页]
作者: shpdlizj 时间: 2005-12-27 16:47 标题: 如何编写由2个S19文件组成的系统
我做的一个产品(用MC9S12DP256单片机)卖给用户后,想可以让用户自己升级里面的软件,所以我在出厂前在产品里下载了一个基本软件叫boot,boot的功能就是初始化堆栈和异步通信口(SCI0),整个产品的功能由另一个软件firmware来实现,我的产品和PC通过232口连起来,PC上装有管理软件MONITOR,通过MONITOR,用户可以把我提供的firmware下载到我的产品里。要实现这些功能,我还有些问题不太明白,希望strongchen和各位同仁能指点。
第一,我在boot里做完初始化操作(包括檫除flash、通过SCI0口下载firmware)后,并且已经下载了firmware,如何能让CPU开始执行#firmware,如果我的firmware装载在flash的31页开始的空间,那么我在boot里有这样的定义:#define firmware ((void(*)(void))(0x8000))
然后在想要由boot转到firmware处写以下语句:PPAGE=0X31;firmware();这样是否可行,PPAGE的内容要不要压入堆栈。
第二,我写firmware程序的时候,CW12自动产生的prm文件应该怎么修改。因为用firmware必须生成可执行文件,但CW12生成的绝对地址文件已经没有意义,因为firmware的装载地址由boot决定。
第三,在执行firmware的过程中如果想更新firmware,那么加一条return语句后是否就能回到boot里执行更新操作。
作者: strongchen 时间: 2005-12-29 11:33
我想这个操作最好用一个汇编指令来执行。如果只需转去执行,不需返回,用跳转指令即可;如果需要返回,则用调用子程序的指令。注意要有那些跨页操作的,即带PPAGE操作的指令。
作者: shpdlizj 时间: 2005-12-30 15:43 标题: 在哪里看函数编译后生成代码的大小
strongchen:
我想知道在哪里看函数编译后生成代码的大小,另外如何修改最终的可执行文件的文件名?
谢谢
作者: seuafu2005 时间: 2005-12-31 10:42
可以查看.map文件,该文件在你的工程目录里面,打开以后可以看到你所有函数和变量存放的起始地址和大小。
可执行文件名可以在target setting->link for HC12 里面修改,改那个.abs结尾的名字。
作者: shpdlizj 时间: 2005-12-31 11:20 标题: 没有调用的函数会被连接器当成无用代码被而删除掉吗
在MCP文件里是不是只能看到被调用函数的目标代码大小和起始地址,没有被调用的函数在MCP文件里不会体现这些信息吗?
作者: strongchen 时间: 2005-12-31 11:59
是的。
作者: cqx9999 时间: 2006-1-3 15:24 标题: 如何用汇编进行这样的跨页操作
我想这个操作最好用一个汇编指令来执行。如果只需转去执行,不需返回,用跳转指令即可;如果需要返回,则用调用子程序的指令。注意要有那些跨页操作的,即带PPAGE操作的指令。
请教一下,如何用汇编进行这样的跨页操作啊?能否给个事例看看啊?
作者: strongchen 时间: 2006-1-4 10:08
asm jmp Address;
asm call Address;
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |