查看: 1027|回复: 0

[S12] 【求助】MC9S12XDT256做Bootloader时擦flash问题

[复制链接]

该用户从未签到

24

主题

666

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1072
最后登录
2023-4-10
发表于 2019-7-15 16:38:07 | 显示全部楼层 |阅读模式
如题,最近做XDT256的bootloader遇到了一个问题,就是擦flash总是出现问题,代码如下:
byte PFlash_EraseSector(dword Addr)
{
    dword Addr1 = Addr;

    if((Addr>Addr1) || ((Addr<0x00780000)||(Addr1>0x0079FFFF)) && ((Addr<0x007E0000)||(Addr1>0x007FBFFF)))  return ERR_RANGE;

    DisableInterrupts;
    FSTAT   = 0x30;                                                 // clear ACCERR and PVIOL
    while(!(FSTAT & FSTAT_CBEIF_MASK));                             // wait if command in progress

    *(word *far) Addr = 0;
    FCMD  = 0x40;                                                   // Erase all memory bytes in a sector
    FSTAT = 0x80;                                                   // launch command
    while(!(FSTAT & FSTAT_CCIF_MASK));                              // wait for done

    if((FSTAT & (FSTAT_ACCERR_MASK | FSTAT_PVIOL_MASK)) != 0)
    {
        EnableInterrupts;
        return ERR_NOTAVAIL;
    }

    EnableInterrupts;
    return ERR_OK;
}




在上电初始化时,将其copy到RAM中。如下:
void Code_Move(byte *source,byte *dest,word size)
{
    while(size--)
    {
        *dest++ = *source++;
    }
}

根据map文件,查看函数大小,将函数copy到RAM。

prm文件设置如下:
/* non-paged RAM */
      //RAM           = READ_WRITE  DATA_NEAR            0x2000 TO   0x3FFF;
      RAM_DEF         = READ_WRITE  DATA_NEAR            0x2000 TO   0x3BFF;//15K
      RAM_CODE        = READ_WRITE  DATA_NEAR            0x3C00 TO   0x3FFF;//1K

/* non-banked FLASH */
      //ROM_4000      = READ_ONLY   DATA_NEAR IBCC_NEAR  0x4000 TO   0x7FFF;
      //ROM_C000      = READ_ONLY   DATA_NEAR IBCC_NEAR  0xC000 TO   0xFEFF;
      BOOT_MEM        = READ_ONLY   DATA_NEAR IBCC_NEAR  0xC000 TO   0xEFFF;//12k
      FLASH_MEM       = READ_ONLY   DATA_NEAR IBCC_NEAR  0xF000 TO   0xF3FF RELOCATE_TO 0x3C00;//1K
      ROM             = READ_ONLY   DATA_NEAR IBCC_NEAR  0xF400 TO   0xFEFF;//2.75k


问题是在烧入boot后下电再上电,便无法成功擦flash,初步排查应该是没能成功copy至RAM。
请求大神帮忙分析下原因,感激不尽。。















我知道答案 目前已有0人回答
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-5-10 01:40 , Processed in 0.122509 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表