×
嵌入式 > 技术百科 > 详情

FLASH调试_HCS12学习笔记(6)

发布时间:2020-06-10 发布时间:
|
    停了一阶段没有调试FLASH的程序,调了一阶段的CAN,无果,CAN的程序也很麻烦,不过今天早上终于把FLASH的程序调通了,其实,程序本身应该是没有什么问题的,但是因为程序没有分段存储,所以直接导致FLASH的分页寄存器没有能够读出来,今早,我把我的所有.C文件全部标明代码存储到0x4000这个位置上,FLASH的程序直接调试成功。这里贴我的部分改动,以作存档。

 

//[Flash.c]Flash擦写-------------------------------------------------------*
//本文件包含:                                                              *
//    (1)Flash_Erase_Sector:擦除一个指定的扇区                             *
//    (2)Flash_Write_Nword:向一个指定的区域写入若干个字                    *
//-------------------------------------------------------------------------*

//头文件
#include  "Flash.h"    //Flash擦写头文件

#pragma CODE_SEG CODE_flash
#pragma CONST_SEG CONST_flash

void Erase_Write_Pretreat(INT8U page);   //擦写子函数内部调用的函数声明
//页所对应的块对照表
//两个flash块,每块4页           flash0                flash1       
const INT8U pagetable[4][4] = {{0x3C,0x3D,0x3E,0x3F},{0x38,0x39,0x3A,0x3B},{0x34,0x35,0x36,0x37},{0x30,0x31,0x32,0x33}};

 

 

上面红色的代码是我添加出来的,功能是将本段代码放在CODE_flash对应的存储空间里。

PLACEMENT
      _PRESTART,             
      STARTUP,               
      ROM_VAR,               
      STRINGS,               
      VIRTUAL_TABLE_SEGMENT, 
    //.ostext,               
      NON_BANKED,            
      COPY                   
                             
                        INTO  ROM_C000;

      DEFAULT_ROM       INTO  PAGE_38, PAGE_39;
     
      CODE_main,
      CODE_flash,
      CODE_MCUInit,
      CODE_SCI
                        INTO  ROM_4000;
                                               

    //.stackstart,           
      SSTACK,                
    //.stackend,             
    DEFAULT_RAM         INTO  RAM;

 

    这一段是P&E_Multilink_CyclonePro_linker.prm里摘出来了,它默认定义了所有代码、常量的存放区段,红色部分是我添加出来的,把我的主要文件放入了ROM_4000这个地址里,也就是对应了0x4000_0x7fff这个地址里。

 

    于是程序顺利调通,这里小小得庆祝一下~


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Semtech的LoRa技术携手Chipsafer将牧场连接至云端