📄 00000005.htm
字号:
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>大虾帮忙:如何将ROM中的函数调入RAM中运 turbolinux </title></head><body><center><h1>BBS 水木清华站∶精华区</h1></center><a name="top"></a>发信人: scorpio (不再迷茫), 信区: Embedded <br />标 题: 大虾帮忙:如何将ROM中的函数调入RAM中运行 <br />发信站: BBS 水木清华站 (Tue Mar 26 16:54:33 2002) <br /> <br />芯片: VZ328 <br />开发平台:Metroworks Codewarrior <br /> <br />因为程序存放在Flash中,当要写Flash的时候,需要将写Flash的程序 <br />调入内存中运行。根据CodeWarrior的文档,可以修改LCF文件来达到 <br />ROM to RAM copy的目的。我已经做过的工作如下: <br /> <br />1. 在原来MEMORY{..} 中加入如下语句: <br />RAMCODE (RX) : ORIGIN = 0x007e0000, LENGTH = 0x10000 <br /> <br />2. 在SECTIONS{..}中加入如下语句: <br /> _ROM_size = _ROM_size + SIZEOF(..reset); <br /> _ROM_address = _ROM_address + SIZEOF(..reset); <br /> _TEMP_address = _TEMP_address + SIZEOF(..reset); <br /> _ramcode_at = _TEMP_address; <br /> <br /> ..ramcode : AT( _ramcode_at ) <br /> { <br /> <br /> _framcode_ROM = _ROM_address; <br /> _framtext = .; <br /> flashasm.c (.text) <br /> . = ALIGN(0x8); <br /> _eramtext = .; <br /> } > RAMCODE <br />其中,flashasm.c中为我想在Ram中调用的函数。reset为开始启动时的代码 <br />在ramcode后为其它的程序代码。 <br /> <br />3. 修改..romp段, 在开始加入: <br /> WRITEW(_framcode_ROM); <br /> WRITEW(_framtext); <br /> WRITEW(_framcode_size); <br /> <br />4. 修改栈地址,原先栈地址为 _stack_addr = _fsdata,即数据开始地址 <br /> (栈地址是从高到底变化的). 数据开始地址为0x7f0000, 因为我需要 <br /> 把一部分程序放在内存,所以改为: _stack_addr = _framtext, 即 <br /> 改成了0x7e0000。 <br /> <br />可是编译后,在xMAP中Memory map中并没有发现ramcode的map地址: <br /> 00010000 00000560 ROM <br /> 00010688 00034468 CODE <br /> 00010560 00000128 RAMCODE <br /> 007F0000 00000000 DATA <br /> 00044AF0 00001E38 DATA <br /> 000454A8 00000030 DATA <br />烧到flash中运行也死机。 <br />请各位大虾给指条明路 <br /> <br />-- <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.64.227] <br /><a href="00000004.htm">上一篇</a><a href="javascript:history.go(-1)">返回上一页</a><a href="index.htm">回到目录</a><a href="#top">回到页首</a><a href="00000006.htm">下一篇</a></h1></center><center><h1>BBS 水木清华站∶精华区</h1></center></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -