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

📄 用存储器映射的方法实现片外flash的擦写.htm

📁 codewarrior de FLASH,codewarrior de FLASH is used
💻 HTM
📖 第 1 页 / 共 3 页
字号:
                  <P 
                  style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;CodeWarrior 
                  IDE是由Metrowerks公司专为Motorola的DSP56800系列设计的开发平台。该平台具有简单明了的图形用户界面和丰富的软件开发工具,适合于开发基于DSP56800系列的应用程序、插件程序等各种程序代码。在CodeWarrior环境中,用户可以通过修改.cmd文件来配置存储器分配方式,还可以通过修改startup文件夹中的初始化程序来控制系统的初始化操作。用户编译并链接后,将生成.elf文件,在文件中可以看到存储器的详细分配情况。当用户将程序下载到DSP芯片后,可以使用CodeWarrior的调试器对程序进行全面的调试,如设置断点、单步执行等;也可以使用 
                  Watch Memory指令来检查存储器中的各地址段的值,还可以使用Save/Load 
                  Memory指令来保存或是载入某段存储器的值。 </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;2 方法介绍 
</P>
                  <P 
                  style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;首先利用GPIOD0口生成合适的片外FLASH和片内XRAM片选信号,实现片内XRAM和片外FLASH的访问切换。例如当GPIOD0 
                  =0时,0x8000~0xFFFF映射到片内XRAM,此时对于整个0x0000~0xFFFF地址范围的读写操作就是对于片内 
                  XRAM的操作;当GPIOD0=1时,0x8000~0xFFFF地址范围映射到数据FLASH,则对0x8000~0xFFFF 
                  地址范围的读写操作就是对于片外FLASH的操作;对0x0000~0x7FFF地址范围的读写仍是针对片内 
                  XRAM的操作,从而将数据存储空间扩展了32k。 </P>
                  <P 
                  style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;再将映射方式设置为片内,将需要写到FLASH中的数据文件载入片内XRAM。最后根据需要设置GPIO端口值,切换地址映射的存储器。这样通过地址映射的方法,便可实现将XRAM中数据写入片外FLASH的操作,而对于DSP芯片来说只是进行了其XRAM寻址空间内部的数据搬移操作。 
                  </P>
                  <P 
                  style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;假设要将一组二维数组character[180][32]形式的字模数据保存入片外数据FLASH的0x8000~0xA000地址段中,先做以下准备工作: 
                  </P>
                  <P 
                  style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;①用一个GPIO端口,扩展系统的可寻址数据存储器空间;</P>
                  <P 
                  style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;②编写FLASH擦写程序。 
                  </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;#define N 
                  100 /* 
                  由于FLASH与RAM的读写速度不同,所以需要在每项操作后加入若干个延迟以保证正确性,延迟的具体长短可以根据具体情况作调整 
                  */ </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;void 
                  main() pre_write_FLASH(); /* 写FLASH前的预处理,向FLASH内写入相应命令字,根据所选用 
                  FLASH的不同预处理操作也有所不同*/ </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;delay(N); 
                  </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P 
                  style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;*(flash_addr++)=code; 
                  /*写数据到FLASH中*/ </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;delay(N); 
                  </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;} </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;} </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;擦写步骤如下: 
                  </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;① 
                  将character[180][32]设置为全局变量。 </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;② 
                  将程序编译下载到DSP芯片中,打开工程目录中output文件夹中的.elf文件,找到character 
                  数组在XRAM中存放的起始地址和长度。用户可以使用Watch Memory命令察看该段地址的数据值。 </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;③ 使用Save 
                  Memory命令将XRAM中对应于character数组的地址段的数据以二进制形式保存在计算机上。通过UltraEdit将其打开,检看数据保存是否正确。 
                  </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;④ 
                  打开FLASH擦写程序,修改数据在片内XRAM中存储的起始地址和FLASH的擦写起始地址与数据长度。编译下载后,单步执行,执行到擦除完FLASH,并将地址映射方式置为映射到片内XRAM处,使用Load 
                  Memory指令将char数据文件载入到片内XRAM的相应存储地址段中,再接着全速运行程序,几十秒之后程序执行完毕,数据便写到片外FLASH的相应地址中。 
                  </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;⑤ 
                  再次打开FLASH擦写程序,单步执行到映射方式置为片外FLASH处停止,使用Save 
                  Memory命令保存FLASH中刚写入的地址段的数据值。接着使用UltraEdit的比较文件命令比较前两次保存的数据,如完全相同就表明character字模数组已经正确的写到片外FLASH中。 
                  </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P 
                  style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;将数据擦写入片外数据FLASH后,就可以在用户程序中对该数据加以调用。在调用的时候要先将映射方式设置为映射到片外FLASH,然后再取数据。如下所示,取出FLASH中0x6000地址上存储的数据: 
                  </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;#define 
                  FLASH_ADD (unsigned int *)0x6000 </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P 
                  style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;*GPIO_D_DR=0x0002; 
                  /*映射方式设置为映射到片外FLASH*/ </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;data = 
                  *(FLASH_ADD); </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;3 结 论 </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P 
                  style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;本文介绍了一种通过地址映射方式,在基于 
                  DSP的嵌入式系统中,通过DSP擦写片外FLASH的方法。该方法可适用于多种场合,针对多个 
                  FLASH芯片可使用多个GPIO端口进行地址的扩展,并可通过DSP实现对其擦写操作;若将部分程序放置到片外FLASH中并作相应设置,即可实现系统的自举运行等。</P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; </P>
                  <P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 
</P></TD></TR>
              <TR>
                <TD>&nbsp;</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
    <TD align=right width=265 bgColor=#f7fbfd>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR height=5>
          <TD height=5></TD></TR>
        <TR>
          <TD vAlign=top>
            <TABLE cellSpacing=1 cellPadding=1 width="100%" bgColor=#92b8cd 
            border=0>
              <TBODY>
              <TR>
                <TD align=middle bgColor=#f7fbfd height=74>
                  <TABLE cellSpacing=0 cellPadding=0 width=248 align=center 
                  border=0>
                    <TBODY>
                    <TR>
                      <TD vAlign=top 
                      background="[技术资料 存储器] 用存储器映射的方法实现片外FLASH的擦写==www_ic37_com.files/tougao.gif" 
                      height=40>
                        <TABLE cellSpacing=0 cellPadding=0 width="100%" 
border=0>
                          <TBODY>
                          <TR>
                            <TD align=middle width="21%" height=35><IMG 
                              height=29 
                              src="[技术资料 存储器] 用存储器映射的方法实现片外FLASH的擦写==www_ic37_com.files/write.gif" 
                              width=34></TD>
                            <TD width="29%"><A 
                              href="http://www.ic37.com/icasp/write.asp">我要投稿</A></TD>
                            <TD align=middle width="21%"><IMG height=29 
                              src="[技术资料 存储器] 用存储器映射的方法实现片外FLASH的擦写==www_ic37_com.files/man.gif" 
                              width=31></TD>
                            <TD width="29%"><A 
                              href="http://www.ic37.com/Member/RegistContract.asp">注册会员</A></TD></TR></TBODY></TABLE></TD></TR>
                    <TR>
                      <TD height=25><FONT color=#16387c>客服咨询热线:0755-26000950 
                        0755-26007355 
            </FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR>
        <TR height=4>
          <TD height=4></TD></TR>
        <TR>
          <TD vAlign=top>
            <TABLE cellSpacing=1 cellPadding=0 width="100%" bgColor=#92b8cd 
            border=0>
              <TBODY>
              <TR>
                <TD 
                background="[技术资料 存储器] 用存储器映射的方法实现片外FLASH的擦写==www_ic37_com.files/bg01.gif" 
                bgColor=#eef6fe height=24><SPAN class=font13><FONT 
                  color=#ffffff><STRONG>&nbsp;</STRONG></FONT></SPAN><FONT 
                  color=#ffffff><STRONG><FONT 
                  color=#316293>相关技术资料</FONT></STRONG></FONT></TD></TR>
              <TR>
                <TD bgColor=#f7fbfd>
                  <TABLE cellSpacing=0 cellPadding=2 width="100%" border=0>
                    <TBODY>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] 嵌入式应用中存储器类型的选择技巧" 
                        href="http://www.ic37.com/htm_tech/2007-11/23386_684940.htm" 
                        target=_blank>嵌入式应用中存储器类型的选..</A>&nbsp;</TD>
                      <TD width="27%">2007-11-19</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] 实时单片机通讯网络中的内存管理" 
                        href="http://www.ic37.com/htm_tech/2007-7/41712_601652.htm" 
                        target=_blank>实时单片机通讯网络中的内存..</A>&nbsp;</TD>
                      <TD width="27%">2007-7-29</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] 同步图形存储器IS42G32256的原理与应用" 
                        href="http://www.ic37.com/htm_tech/2007-8/41713_345895.htm" 
                        target=_blank>同步图形存储器IS42G3..</A>&nbsp;</TD>
                      <TD width="27%">2007-8-9</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] 基于IDE硬盘的高速数据存储器研究" 
                        href="http://www.ic37.com/htm_tech/2007-7/41714_90138.htm" 
                        target=_blank>基于IDE硬盘的高速数据存..</A>&nbsp;</TD>
                      <TD width="27%">2007-7-29</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] ADSP2106x中DMA的应用" 
                        href="http://www.ic37.com/htm_tech/2007-8/41715_834381.htm" 
                        target=_blank>ADSP2106x中DMA..</A>&nbsp;</TD>
                      <TD width="27%">2007-8-9</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] 一种并行存储器系统的FPGA实现" 
                        href="http://www.ic37.com/htm_tech/2007-8/41716_578624.htm" 
                        target=_blank>一种并行存储器系统的FPG..</A>&nbsp;</TD>
                      <TD width="27%">2007-8-7</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] 公共闪存接口CFI在Flash Memory程序设计中的应用" 
                        href="http://www.ic37.com/htm_tech/2007-8/41717_322867.htm" 
                        target=_blank>公共闪存接口CFI在Fla..</A>&nbsp;</TD>
                      <TD width="27%">2007-8-7</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] 增强型51系列单片机W77E58的存储器访问" 
                        href="http://www.ic37.com/htm_tech/2007-8/41718_67110.htm" 
                        target=_blank>增强型51系列单片机W77..</A>&nbsp;</TD>
                      <TD width="27%">2007-8-9</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] RAID存储设备的发展及其应用" 
                        href="http://www.ic37.com/htm_tech/2007-7/41719_811353.htm" 
                        target=_blank>RAID存储设备的发展及其..</A>&nbsp;</TD>
                      <TD width="27%">2007-7-29</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] 设计移动电子产品时如何选择快闪存储器" 
                        href="http://www.ic37.com/htm_tech/2007-8/41720_555596.htm" 
                        target=_blank>设计移动电子产品时如何选择..</A>&nbsp;</TD>
                      <TD width="27%">2007-8-7</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A title="[存储器] 电子俘获光存储技术" 
                        href="http://www.ic37.com/htm_tech/2007-7/41721_299839.htm" 
                        target=_blank>电子俘获光存储技术</A>&nbsp;</TD>
                      <TD width="27%">2007-7-29</TD></TR>
                    <TR>
                      <TD width="73%" height=22>·<A 
                        title="[存储器] 1兆位5伏闪速电擦除存储器AT29C010A及其应用" 
                        href="http://www.ic37.com/htm_tech/2007-8/41722_44082.htm" 
                        target=_blank>1兆位5伏闪速电擦除存储器..</A>&nbsp;</TD>
                      <TD width="27%">2007-8-7</TD></TR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -