查看: 5390|回复: 11

[求助] KL25在FTFA编程擦除扇区时遇到No source available for "0xFFFFFFFE (0x...

[复制链接]
回帖奖励 8 NXP金币 回复本帖可获得 2 NXP金币奖励! 每人限 1 次

该用户从未签到

5

主题

31

帖子

0

注册会员

Rank: 2

积分
154
最后登录
2016-1-27
发表于 2015-9-21 17:12:35 | 显示全部楼层 |阅读模式
KL25在FTFA编程擦除扇区时遇到No source available for "0xFFFFFFFE (0xFFFFFFFE)() "

main函数:

        flash_init();
        if( flash_erase_sector( 125 )){  //!!!!!!!!!!!!!!!!!!出错!!!!!!!!!!!!!!!!!!!
                Sends("flash_erase_sector err.");               
        }else{
                Sends("flash_erase_sector OK.");                        
        }

        if( flash_write( 125, 0, 10, buf) ){
                Sends("flash_write err.");               
        }else{
                Sends("flash_write OK.");               
        }
        
        memset( buf, 0, 10);
        if( flash_read( 125, 0, 10, buf ))
        {
                Sends("flash_read err.");
        }else{
                Sends("flash_read OK.");
        }
        
        Sends(buf);
        
        while(1){}


在执行到: flash_erase_sector(  )函数中的


//==========================================================================
//函数名称:flash_erase_sector
//函数返回:函数执行执行状态:0=正常;非0=异常。
//参数说明:sectorNo:扇区号(KL25实际使用0~127)
//功能概要:擦除指定flash扇区
//==========================================================================
uint8_t flash_erase_sector(uint16_t sectorNo)
{

    union
    {
        uint32_t  word;
        uint8_t   byte[4];
    } dest;

    dest.word    = (uint32_t)(sectorNo*(1<<10));

    // 设置擦除命令
    FTFA_FCCOB0 = ERSSCR; // 擦除扇区命令

    // 设置目标地址
    FTFA_FCCOB1 = dest.byte[2];
    FTFA_FCCOB2 = dest.byte[1];
    FTFA_FCCOB3 = dest.byte[0];

    // 执行命令序列
   if(1 == flash_cmd_launch())    //!!!!!!!!!!!!!!!!!!执行到此函数出错!!!!!!!!!!!!!!!!!
        return 1;     //擦除命令错误

    // 若擦除sector0时,则解锁设备
    if(dest.word <= 0x800)
    {
        // 写入4字节
        FTFA_FCCOB0 = PGM4;
        // 设置目标地址
        FTFA_FCCOB1 = 0x00;
        FTFA_FCCOB2 = 0x04;
        FTFA_FCCOB3 = 0x0C;
        // 数据
        FTFA_FCCOB4 = 0xFF;
        FTFA_FCCOB5 = 0xFF;
        FTFA_FCCOB6 = 0xFF;
        FTFA_FCCOB7 = 0xFE;
        // 执行命令序列
        if(1 == flash_cmd_launch())  //若执行命令出现错误
            return 2;   //解锁命令错误
    }  

    return 0;  //成功返回
}


//==========================================================================
//函数名称:flash_cmd_launch
//函数返回:0-成功 1-失败
//参数说明:无
//功能概要:启动Flash命令
//==========================================================================
static uint32_t flash_cmd_launch(void)
{
        uint8_t i;
    // 清除访问错误标志位和非法访问标志位
    FTFA_FSTAT = ACCERR | FPVIOL;

    // 启动命令
    FTFA_FSTAT = CCIF;


    // 等待命令结束
    while(!(FTFA_FSTAT & CCIF));      //!!!!!!!!!!!!!!!!!!此处单步调试正常,全速运行就出现上边的错误,!!!!!!!!

    // 检查错误标志
    if(FTFA_FSTAT & (ACCERR | FPVIOL | MGSTAT0))
        return 1 ; //执行命令出错
    return 0; //执行命令成功
}

移植别人的程序,别人的程序没有问题移植过来就出问题了。帮忙找下原因,谢谢啦
我知道答案 目前已有11人回答
回复

使用道具 举报

该用户从未签到

5

主题

31

帖子

0

注册会员

Rank: 2

积分
154
最后登录
2016-1-27
 楼主| 发表于 2015-9-21 17:30:03 | 显示全部楼层
调试跟踪后发现只要执行完   
FTFA_FSTAT = CCIF;
接着执行这句  while(!(FTFA_FSTAT & CCIF));
就会出现  No source available for "0xFFFFFFFE (0xFFFFFFFE)() "
(单步调试就没事)  
回复 支持 反对

使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-9-21 18:05:03 | 显示全部楼层

    回帖奖励 +2 NXP金币

    看看别人的代码是否有拷贝到RAM中执行。也可以在2句之间加延时。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    31

    帖子

    0

    注册会员

    Rank: 2

    积分
    154
    最后登录
    2016-1-27
     楼主| 发表于 2015-9-21 18:27:53 | 显示全部楼层
    安 发表于 2015-9-21 18:05
    看看别人的代码是否有拷贝到RAM中执行。也可以在2句之间加延时。

    尝试加过一秒的延时还是不行
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-21 23:48:35 | 显示全部楼层

    回帖奖励 +2 NXP金币

    把函数单独写一行,再用if比较
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-9-22 09:08:25 | 显示全部楼层

    回帖奖励 +2 NXP金币

    这个错误是你在IDE debug时弹出来的吗?
    还有烧录后,运行程序,能否通过reset引脚再次运行呢,而保证程序没有被破坏。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    31

    帖子

    0

    注册会员

    Rank: 2

    积分
    154
    最后登录
    2016-1-27
     楼主| 发表于 2015-9-22 10:22:58 | 显示全部楼层
    FSL_TICS_ZP 发表于 2015-9-22 09:08
    这个错误是你在IDE debug时弹出来的吗?
    还有烧录后,运行程序,能否通过reset引脚再次运行呢,而保证程序 ...

    是的,在调试的时候,单步调试就没有问题,一旦全速运行就会出现以上错误。而且就只在擦除时会出错。
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-9-22 11:27:12 | 显示全部楼层
    还是建议看一下例程,要拷贝到RAM执行。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-9-22 13:30:53 | 显示全部楼层
    你根据8楼的安的意见试试,将代码拷贝到RAM后,再运行看看问题是否还会发生
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-4 11:23
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    9

    主题

    235

    帖子

    0

    高级会员

    Rank: 4

    积分
    598
    最后登录
    2016-12-12
    发表于 2015-10-5 11:34:11 | 显示全部楼层

    回帖奖励 +2 NXP金币

    安主的可以一试
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-22 19:52 , Processed in 0.113102 second(s), 32 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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