查看: 4493|回复: 12

MC9S08PA在執行ISP的一些問題(已解决)

[复制链接]

该用户从未签到

3

主题

18

帖子

0

注册会员

Rank: 2

积分
94
最后登录
1970-1-1
发表于 2014-9-18 00:09:53 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-10-9 19:38 编辑

各位大大好,我又來發問了,這次想詢問PA系列的IC再做ERASE FLASH時有需要保留甚麼DATA嗎?因為之前使用SH再做ISP時是ERASE 0XE200到0XFFFF,有保留內部時鐘的TRIM值0XFFAE和0XFFAF,但是我看PA的DATASHEET這個值好像是放在0X30XX的位置,而PA的中斷向量表好像是放在0XFFB0之後,請問一下如果我要ERASE 0XE200到0XFFFF 有沒有需要保留哪些DATA,還是這些DATA都會放在S19檔中呢?
另外想再請教一個問題就是我在執行ERASE 0XE000到0XFFFF的程序時用中斷一步一步執行去看,他似乎會抹除到0XD600時就進不去中斷了,然後就會CW就會發生問題,有想過可能是看門狗的問題,但是我設定的時間是800MS,以MCU的速度應該不可能會RESET才對,今天卡一整天都卡在這些問題,希望各位大哥能幫忙解惑,感謝
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-18 11:13:53 | 显示全部楼层
楼主你好。
第一点:
你在做擦除的时候,可以不用考虑保留数据,因为如果是芯片内部的factory数据,你是不会擦掉的,而中断向量表什么的,你在下载程序的时候,程序会重新写入。
第二点:
  如果你怀疑是看门狗造成的,建议你关掉看门口操作试试,在做flash操作的时候,不建议开启中断。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

18

帖子

0

注册会员

Rank: 2

积分
94
最后登录
1970-1-1
 楼主| 发表于 2014-9-18 12:18:14 | 显示全部楼层
版主你好 第二點有試過關掉看們狗 他還是一樣會ERASE到一半就跳掉,而且都是在同樣的位置,有嘗試過如果我在跳掉的那一點開始ERASE,程式是可行的,用中斷去看發現只要ERASE超過10次就會跳掉,我用的ERASE程式是PE所產生的CODE,在一般環境下執行都沒有問題,複製一份放到BOOT就會發生這個問題
byte IFsh1_EraseSector(IFsh1_TAddress Addr)
{
  if (BlockOutOfRange(Addr, Addr)) {   /* Check range of address */
    return(ERR_RANGE);
  }
  EnterCritical();                     /* Enter critical section */
  ClearFlags();                        /* Clear all flags */
  if (NVM_FSTAT_CCIF == 0U) {          /* Is command buffer full ? */
    ExitCritical();                    /* Exit critical section */
    return ERR_BUSY;                   /* If yes then error */
  }
  NVM_FCCOBIX = 0U;                    /* Clear index register */
  NVM_FCCOBHI = 0x0AU;                 /* Erase P-Flash sector command */
  NVM_FCCOBLO = 0U;                    /* High address word */
  NVM_FCCOBIX++;                       /* Shift index register */
  NVM_FCCOB = (word)(Addr & 0xFFF8U);  /* Low address word aligned to 8 byte phrase*/
  CallFnCmdInRam();                    /* Copy Wait in RAM routine to stack and launch the flash process */
  if (NVM_FSTAT_FPVIOL == 1U) {        /* Is protection violation detected ? */
    ExitCritical();                    /* Exit critical section */
    return ERR_NOTAVAIL;               /* If yes then error */
  }
  if (NVM_FSTAT_ACCERR == 1U) {        /* Is acces error detected ? */
    ExitCritical();                    /* Exit critical section */
    return ERR_NOTAVAIL;               /* If yes then error */
  }
  if (NVM_FSTAT_MGSTAT != 0U) {        /* Was attempt to erase the sector errorneous? */
    ExitCritical();                    /* Exit critical section */
    return ERR_VALUE;                  /* If yes then error */
  }
  ExitCritical();                      /* Exit critical section */
  return ERR_OK;                       /* OK */
}
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-18 13:15:59 | 显示全部楼层
wilsonX 发表于 2014-9-18 12:18
版主你好 第二點有試過關掉看們狗 他還是一樣會ERASE到一半就跳掉,而且都是在同樣的位置,有嘗試過如果我 ...

楼主你好,由于我不是8位的工程师,这样吧。
你到我们的官网提交一个技术服务请求,那边会有8位工程师会通过邮件的方式帮你解答。
建立技术服务请求的链接:
https://www.nxpic.org.cn/module/forum/thread-578569-1-1.html
2楼,点击建立SR按钮。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-9-18 14:52:21 | 显示全部楼层
    要将代码拷贝到RAM中执行。你看一下是不是没有设置拷贝到RAM的功能。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    18

    帖子

    0

    注册会员

    Rank: 2

    积分
    94
    最后登录
    1970-1-1
     楼主| 发表于 2014-9-18 14:57:02 | 显示全部楼层
    你好 我有將PE給的程式複製一份放在BOOT區,目前問題是他可以在BOOT區執行ERASE程序,但是超過10次後就部會在執行了,程式也當了
    typedef struct {
         uint8_t code[12];             /* Structure required to copy code to ram memory */
        /* Size of this structure needs to be at least (but best) the size of the FnCmdInRam_ */
      } FnCmdInRamStruct;

      typedef void (* near pFnCmdInRam)(void);

      /* Global variables */

    void BFnCmdInRam_(void)
    {
      NVM_FSTAT = 0x80U;                   /* Clear flag command buffer empty */
      while (NVM_FSTAT_CCIF == 0U) {}      /* Wait to command complete */
      return;
    }
    #pragma MESSAGE DISABLE C1805

    void BOOT_CallFnCmdInRam()
    {
      FnCmdInRamStruct BFnCmdInRam = *(FnCmdInRamStruct *)(BFnCmdInRam_); /* Create a copy of Wait in RAM routine on stack */

      ((pFnCmdInRam)&BFnCmdInRam)();        /* Call code in RAM */
      return;
    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2014-9-19 11:26:50 | 显示全部楼层
    楼主可以参考下我们的bootloaderAN2295,看看那里8位的例子怎么写的。
    http://cache.freescale.com/files ... df?fromsite=zh-Hans
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    18

    帖子

    0

    注册会员

    Rank: 2

    积分
    94
    最后登录
    1970-1-1
     楼主| 发表于 2014-9-19 12:15:58 | 显示全部楼层
    本帖最后由 wilsonX 于 2014-9-19 12:17 编辑

    版主你好,我後來有找到可能的問題,可能就是我在BOOT區做erase&write FLASH時把拷贝到RAM的功能給刪掉了,可否請版主提供一個單純的erase&write FLASH的code,不用再去call其他的function。
    因為我使用由pe所產生的code在進入到CallFnCmdInRam()時會跳到rtsc08.c 裡面執行一些code,可能就是這些code被刪除才導致錯誤的結果,或是版主能否提供拷贝到RAM的功能的code 謝謝            
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2014-9-19 13:19:34 | 显示全部楼层
    wilsonX 发表于 2014-9-19 12:15
    版主你好,我後來有找到可能的問題,可能就是我在BOOT區做erase&write FLASH時把拷贝到RAM的功能給刪掉了, ...

    楼主你好,请看看8位的这篇应用笔记:
    http://cache.freescale.com/files ... on&fileExt=.pdf
    2.1 Copy code from flash to RAM 讲了拷贝代码到RAM。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    18

    帖子

    0

    注册会员

    Rank: 2

    积分
    94
    最后登录
    1970-1-1
     楼主| 发表于 2014-9-19 14:17:59 | 显示全部楼层
    版主你好,你給的這分資料只有讲了拷贝代码到RAM,沒有在ram執行程式的程序,請問我要如何執行複製到ram的程序呢?
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-3 01:06 , Processed in 0.105098 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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