1

帖子

0

TA的资源

一粒金砂(初级)

21
 

好东西

正是我需要的,好文章
此帖出自NXP MCU论坛
 

回复

50

帖子

2

TA的资源

一粒金砂(中级)

22
 
得好好研究研究,缺的知识真不少
此帖出自NXP MCU论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

23
 
bookmark
此帖出自NXP MCU论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

24
 
拜读了,很详细,用心的在写
此帖出自NXP MCU论坛
 
 
 

回复

36

帖子

0

TA的资源

一粒金砂(中级)

25
 
楼主,你的堆栈初始化在哪里啊?类似STM32的   __MSR_MSP(*(vu32*) ApplicationAddress);
此帖出自NXP MCU论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

26
 
这个忘了加入中断向量重映射,你在IAP里边添加就可以了。
此帖出自NXP MCU论坛
 
个人签名我的博客
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

27
 
你好,我使用 LPC1754 做 IAP 下载,发现程序进入不了 IAP 服务程序 。这是什么原因啊?
此帖出自NXP MCU论坛

点评

什么意思?能说明白点吗?  详情 回复 发表于 2013-11-28 06:31
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

28
 

回复 27楼tonyli 的帖子

什么意思?能说明白点吗?
此帖出自NXP MCU论坛

点评

就是在使用IAP函数的时候,程序走到 iap_entry(command, result);这里,就会莫名其妙的死掉。贴上源程序,请帮忙看看。 #include \"IAP.h\" #define IAP_CLK 48000 #define IAP_LOCATION 0x1FFF1FF1 #defi  详情 回复 发表于 2013-11-28 08:47
 
个人签名我的博客
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

29
 

回复 28楼zhaojun_xf 的帖子

就是在使用IAP函数的时候,程序走到 iap_entry(command, result);这里,就会莫名其妙的死掉。贴上源程序,请帮忙看看。
#include "IAP.h"

#define IAP_CLK  48000

#define IAP_LOCATION 0x1FFF1FF1
#define iap_entry(a, b)     ((void (*)())(IAP_LOCATION))(a, b)

unsigned long command[5] = {0,0,0,0,0};
unsigned long result[3]= {0,0,0};

/*************************************************************************
* Function Name: IAP_PrepareSec
* Parameters:         unsigned long StartSecNum -- Start Sector Number
*                                 unsigned long EndSecNum -- End Sector Number
* Return: unsigned long -- Status Code
*
* Description: This command must be executed before executing "Copy RAM to Flash" or
*                        "Erase Sector(s)" command.
*
*************************************************************************/
unsigned long IAP_PrepareSec (unsigned long StartSecNum,  unsigned long EndSecNum)
{
        if (EndSecNum < StartSecNum)
                return IAP_STA_INVALD_PARAM;

        command[0] = IAP_CMD_PrepareSec;
        command[1] = StartSecNum;
        command[2] = EndSecNum;
        iap_entry(command, result);

        return result[0];
}

/*************************************************************************
* Function Name: IAP_CopyRAMToFlash
* Parameters:         unsigned long dst -- Destination Flash address, should be a 256 byte boundary.
*                                 unsigned long src -- Source RAM address, should be a word boundary
*                                unsigned long number -- 256 | 512 |1024 |4096                       
* Return: unsigned long -- Status Code
*
* Description: This command is used to program the flash memory.
*
*************************************************************************/
unsigned long IAP_CopyRAMToFlash (unsigned long dst,  unsigned long src,
        unsigned long number)
{
        command[0] = IAP_CMD_CopyRAMToFlash;
        command[1] = dst;
        command[2] = src;
        command[3] = number;
        command[4] = IAP_CLK / 1000;        // Fcclk in KHz
        iap_entry(command, result);

        return result[0];
}


/*************************************************************************
* Function Name: IAP_EraseSec
* Parameters:         unsigned long StartSecNum -- Start Sector Number
*                                 unsigned long EndSecNum -- End Sector Number
* Return: unsigned long -- Status Code
*
* Description: This command is used to erase a sector or multiple sectors of on-chip Flash
*                         memory.
*
*************************************************************************/
unsigned long IAP_EraseSec (unsigned long StartSecNum,  unsigned long EndSecNum)
{
        if (EndSecNum < StartSecNum)
                return IAP_STA_INVALD_PARAM;

        command[0] = IAP_CMD_EraseSec;
        command[1] = StartSecNum;
        command[2] = EndSecNum;
        command[3] = IAP_CLK / 1000;
        iap_entry(command, result);

        return result[0];
}

/*************************************************************************
* Function Name: IAP_BlankChkSec
* Parameters:         unsigned long StartSecNum -- Start Sector Number
*                                 unsigned long EndSecNum -- End Sector Number
* Return: unsigned long -- Status Code
*
* Description: This command is used to blank check a sector or mutilple sectors of on-chip
*                          Flash memory.
*
*************************************************************************/
unsigned long IAP_BlankChkSec (unsigned long StartSecNum,  unsigned long EndSecNum,
                                        unsigned long * pResult)
{
        if (EndSecNum < StartSecNum)
                return IAP_STA_INVALD_PARAM;

        command[0] = IAP_CMD_BlankChkSec;
        command[1] = StartSecNum;
        command[2] = EndSecNum;

        iap_entry(command, result);

        if (result[0] == IAP_STA_SECTOR_NOT_BLANK)
        {
                *pResult = result[0];
                *(pResult+1) = result[1];
        }

        return result[0];
}

/*************************************************************************
* Function Name: IAP_ReadParID
* Parameters:         unsigned long * PartID
* Return: unsigned long -- Status Code
*
* Description: This command is used to read the part identification number.
*
*************************************************************************/
unsigned long IAP_ReadParID (unsigned long * PartID)
{

        command[0] = IAP_CMD_ReadParID;
        iap_entry(command, result);
        *PartID = result[1];

        return result[0];
}

/*************************************************************************
* Function Name: IAP_ReadBootVer
* Parameters:         char * MajorVer
*                                char * MinorVer
* Return: unsigned long -- Status Code
*
* Description: This command is used to read the boot code version number.
*
*************************************************************************/
unsigned long IAP_ReadBootVer (unsigned long * MajorVer, unsigned long * MinorVer)
{
        command[0] = IAP_CMD_ReadBootVer;
        iap_entry(command, result);
        *MajorVer = (result[1] & 0xff00)>>8;
        *MinorVer = result[1] & 0xff;

        return result[0];
}

/*************************************************************************
* Function Name: IAP_Compare
* Parameters:         unsigned long dst -- Destination Flash address
*                                 unsigned long src -- Source RAM address
*                                unsigned long number -- Should be in mutilple of 4               
* Return: unsigned long -- Status Code
*
* Description: This command is used to compary the memory contents at two locations.
*
* NOTE:        Compary result may not be correct when source or destination address contains
*                any of the first 64 bytes starting from address zero. First 64 bytes can be re-mapped
*                to RAM.
*
*************************************************************************/
unsigned long IAP_Compare (unsigned long dst,  unsigned long src,
        unsigned long number, unsigned long *offset)
{
        command[0] = IAP_CMD_Compare;
        command[1] = dst;
        command[2] = src;
        command[3] = number;
        iap_entry(command, result);

        if (result[0] == IAP_STA_COMPARE_ERROR)
                *offset = result[1];

        return result[0];
}
此帖出自NXP MCU论坛

点评

时钟频率对吗: #define IAP_FCCLK (25000) // 频率(单位:KHz) #define IAP_ENTER_ADR (0x1FFF1FF1) // IAP入口地址定义  详情 回复 发表于 2013-11-28 15:25
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

30
 

回复 29楼tonyli 的帖子

时钟频率对吗:

#define IAP_FCCLK                        (25000)                           // 频率(单位:KHz)
#define IAP_ENTER_ADR                    (0x1FFF1FF1)          // IAP入口地址定义
此帖出自NXP MCU论坛
 
个人签名我的博客
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

31
 
你好,这个现在已经解决了,现在就是又碰到一个新问题,我使用的是串口IAP,现在文件发送完后,跳不进用户程序,来时卡死在
  _asm void JMP_Boot( uint32_t address ){
   LDR SP, [R0]                ;Load new stack pointer address
   LDR PC, [R0, #4]        ;Load new program counter address
}
这里。真是很奇怪?
此帖出自NXP MCU论坛

点评

重映射没有???????  详情 回复 发表于 2013-12-2 10:22
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

32
 

回复 31楼tonyli 的帖子

重映射没有???????
此帖出自NXP MCU论坛
 
个人签名我的博客
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

33
 
楼主,我现在用的是LPC11C24,和LPC1114差不多的,现在IAP+APP方式,APP地址在0x2000处开始,现在我可以跳转到0x2000处开始运行,之后APP感觉没运行起来,因为我在APP开始出通过串口打印,但是没有开到打印信息。是怎么回事啊,现在弄头大了



无标题.png (35.94 KB, 下载次数: 2)

跟踪跳转

跟踪跳转

无标题.png (18.63 KB, 下载次数: 0)

APP开始打印

APP开始打印

无标题.png (40.25 KB, 下载次数: 0)

无标题.png
此帖出自NXP MCU论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

34
 
楼主跳到应用程序的那段代码是有问题的,楼主可以重新跟踪下跳转后指令的执行状况。你会发现,指令从用户空间起始位置开始执行了一些无效代码,然后才非常巧合的,走到了,复位函数里面。这是很危险的做法,正确的应该是这样来做
                                 pFunction=(PFUNCTION)(*((unsigned long *)(APPADDRESS+4)));
                                 (* pFunction)();
此帖出自NXP MCU论坛
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(初级)

35
 
此帖出自NXP MCU论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

36
 
感谢楼主
此帖出自NXP MCU论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

37
 

你弄好了吗
此帖出自NXP MCU论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表