⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000005.htm

📁 水木社区 embeded 版精华区 下载
💻 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>发信人:&nbsp;scorpio&nbsp;(不再迷茫),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;大虾帮忙:如何将ROM中的函数调入RAM中运行&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Tue&nbsp;Mar&nbsp;26&nbsp;16:54:33&nbsp;2002)&nbsp;<br />&nbsp;<br />芯片:&nbsp;VZ328&nbsp;<br />开发平台:Metroworks&nbsp;Codewarrior&nbsp;<br />&nbsp;<br />因为程序存放在Flash中,当要写Flash的时候,需要将写Flash的程序&nbsp;<br />调入内存中运行。根据CodeWarrior的文档,可以修改LCF文件来达到&nbsp;<br />ROM&nbsp;to&nbsp;RAM&nbsp;copy的目的。我已经做过的工作如下:&nbsp;<br />&nbsp;<br />1.&nbsp;在原来MEMORY{..}&nbsp;中加入如下语句:&nbsp;<br />RAMCODE&nbsp;(RX)&nbsp;:&nbsp;&nbsp;ORIGIN&nbsp;=&nbsp;0x007e0000,&nbsp;LENGTH&nbsp;=&nbsp;0x10000&nbsp;<br />&nbsp;<br />2.&nbsp;在SECTIONS{..}中加入如下语句:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_ROM_size&nbsp;=&nbsp;_ROM_size&nbsp;+&nbsp;SIZEOF(..reset);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_ROM_address&nbsp;=&nbsp;_ROM_address&nbsp;+&nbsp;SIZEOF(..reset);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_TEMP_address&nbsp;=&nbsp;_TEMP_address&nbsp;+&nbsp;SIZEOF(..reset);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_ramcode_at&nbsp;=&nbsp;_TEMP_address;&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;..ramcode&nbsp;:&nbsp;AT(&nbsp;_ramcode_at&nbsp;)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_framcode_ROM&nbsp;=&nbsp;_ROM_address;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_framtext&nbsp;=&nbsp;.;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashasm.c&nbsp;(.text)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;=&nbsp;ALIGN(0x8);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_eramtext&nbsp;=&nbsp;.;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&gt;&nbsp;RAMCODE&nbsp;<br />其中,flashasm.c中为我想在Ram中调用的函数。reset为开始启动时的代码&nbsp;<br />在ramcode后为其它的程序代码。&nbsp;<br />&nbsp;<br />3.&nbsp;修改..romp段,&nbsp;在开始加入:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRITEW(_framcode_ROM);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRITEW(_framtext);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRITEW(_framcode_size);&nbsp;<br />&nbsp;<br />4.&nbsp;修改栈地址,原先栈地址为&nbsp;_stack_addr&nbsp;=&nbsp;_fsdata,即数据开始地址&nbsp;<br />&nbsp;&nbsp;&nbsp;(栈地址是从高到底变化的).&nbsp;数据开始地址为0x7f0000,&nbsp;因为我需要&nbsp;<br />&nbsp;&nbsp;&nbsp;把一部分程序放在内存,所以改为:&nbsp;_stack_addr&nbsp;=&nbsp;_framtext,&nbsp;即&nbsp;<br />&nbsp;&nbsp;&nbsp;改成了0x7e0000。&nbsp;<br />&nbsp;<br />可是编译后,在xMAP中Memory&nbsp;map中并没有发现ramcode的map地址:&nbsp;<br />&nbsp;&nbsp;00010000&nbsp;00000560&nbsp;ROM&nbsp;<br />&nbsp;&nbsp;00010688&nbsp;00034468&nbsp;CODE&nbsp;<br />&nbsp;&nbsp;00010560&nbsp;00000128&nbsp;RAMCODE&nbsp;<br />&nbsp;&nbsp;007F0000&nbsp;00000000&nbsp;DATA&nbsp;<br />&nbsp;&nbsp;00044AF0&nbsp;00001E38&nbsp;DATA&nbsp;<br />&nbsp;&nbsp;000454A8&nbsp;00000030&nbsp;DATA&nbsp;<br />烧到flash中运行也死机。&nbsp;<br />请各位大虾给指条明路&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;166.111.64.227]&nbsp;<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 + -