打印
[技术问答]

求教,M0516LBN的IAP功能时, ICP下载器问题

[复制链接]
2071|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pvtang|  楼主 | 2017-3-1 15:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
ic, iap, ROM, App, ev
本帖最后由 pvtang 于 2017-3-1 15:52 编辑

我采用的是M0516LBN芯片开发,在做IAP 功能时,我ICP下载器(版本是2.1),为什么没有如《IAP Application NoteV1.10中所示的 LDROM(含IAP功能)APROM(含IAP功能)选项?同样的在keil设置中也没有这个选项,请问这是什么原因?那我可以在代码中对config0 00b或者10b?
沙发
zhuotuzi| | 2017-3-4 13:26 | 只看该作者


专门帮你看了一下,这不是有这个

使用特权

评论回复
板凳
zhuotuzi| | 2017-3-4 13:27 | 只看该作者
看了一下,例程里面打开有这个LDROM。

使用特权

评论回复
地板
pvtang|  楼主 | 2017-3-6 09:54 | 只看该作者
本帖最后由 pvtang 于 2017-3-6 09:56 编辑

是的,只有LDROM和APROM,
我是想实现先从LDROM启动,做一下数据的接收后,跳转到APROM中执行,但是现在还是没有实现。
在keil中烧写代码时是这样做的:
1.LDROM代码下载时,在你那张图界面 Falsh Select 选择LDROM,Download 选择是Erase Sectors ,Configure 的BootOption选择 LDROM (config value config0:0XFFFFFF7F)
2.APROM代码下载时,在你那张图界面 Falsh Select 选择APROM,Configure 的BootOption选择 LDROM (config value config0:0XFFFFFF7F)   (图片好像上传不了,不知道是不因为信息安全的原因)
按照1,2顺序下载时,好像代码跑不起来的。
按照2,1顺序下载代码时,好像是只在LDROM中跑。

使用ICP工具一起将LDROM,APROM下载时
载入LD,AP代码,编程勾选LDROM,APROM,不选择配置为和数据Flash。
下载后代码也一直在LD中跑。

我的跳转如下代码,是我在LDROM中实现写CONFIG0 后重启,就应该实现从APROM启动。
void Jump2App(void)
{
CONFIG_Erase();   
CONFIG0_Program(0xFFFFFF7C);
CONFIG1_Program(0xEFFFFFFF);
IPRSTC1 = 0x1;
        while(1)
        {
        
                DisableInterrupt();         
        
     }
}


void CONFIG0_Program(uint32_t ulDATA)
{
    ISP_Enable();
    CONFIG_RW_Enable();
    ISPCMD = PROGRAM;                                      //???????????
    ISPADR = CONFIG_Start_Address+0x00;                    //???
    ISPDAT = ulDATA;                                       //???
    ISP_Triger();
    ISP_Disable();        
}





ps方便邮件联系你么?

使用特权

评论回复
5
pvtang|  楼主 | 2017-3-7 11:15 | 只看该作者
本帖最后由 pvtang 于 2017-3-7 11:23 编辑

我采用M051BSPv3.01.001的demo实现了LDROM跳转到APROM,APROM跳转到LDROM。
但是一模一样的移植代码,在前人的代码里面就是跑不起来!

在Keil中的步骤:
1.        LDROM代码下载时,在2楼那张图界面 Falsh Select 选择LDROM,Download 选择是Erase Sectors ,Configure 的BootOption选择 LDROM
2.        APROM代码下载时,在2楼那张图界面 Falsh Select 选择APROM,Configure 的BootOption选择 LDROM


//这个放在APROM工程运行
void Jump2LDROM(void)
{
    SYS_UnlockReg();
    outpw(&SYS->RSTSRC, 3);//clear bit
    outpw(&FMC->ISPCON, inpw(&FMC->ISPCON) |0x03);
    outpw(&SCB->AIRCR, (V6M_AIRCR_VECTKEY_DATA | V6M_AIRCR_SYSRESETREQ));
      /* Trap the CPU */
      while(1);
}

//这个放在LDROM工程运行
void Jump2APROM(void)
{
    SYS_UnlockReg();
    outpw(&SYS->RSTSRC, 3);//clear bit
    outpw(&FMC->ISPCON, inpw(&FMC->ISPCON) & 0xFFFFFFFC);
    outpw(&SCB->AIRCR, (V6M_AIRCR_VECTKEY_DATA | V6M_AIRCR_SYSRESETREQ));
    /* Trap the CPU */
    while(1);
}

//两个程序运行前都要时钟的初始化,开使能位
    CLK->AHBCLK |= CLK_AHBCLK_ISP_EN_Msk;
    FMC->ISPCON |= FMC_ISPCON_ISPEN_Msk;

ICP工具下载也是一样的,载入LDROM和APROM程序,配置位选择从LDROM启动,烧写的时候勾线,LDROM,APROM,配置位,下载就行辣。

BTW:吐槽一波,官方文档《IAP Application Note V1.10》,好像是没有更新。想做大公司,技术大家都差不太多,文档等支持工作还是得跟上来!


使用特权

评论回复
6
linzekai| | 2017-3-8 16:30 | 只看该作者
M05xxBN系列的IC没有IAP功能,所以只能看到LDROM和APROM两个选项。

你选择的应该是ISP功能,在LDROM和APROM之间切换需要重启系统或者CPU。

我用MINI58测试,步骤是:

1.把配置改为LDROM启动并更新到IC里面去

2.下载LDROM代码和APROM代码(无论先后,也无论是否选择了整块擦除)

程序可以正常运行,从LDROM跳转到APROM和你上面一样是把FMC控制寄存器的BS位清0,然后触发一次系统重启。

用更改CONFIG0的方式来进行LDROM和APROM的切换是不大可取的,一旦出问题所有程序都得重烧。

使用特权

评论回复
7
玛尼玛尼哄| | 2017-3-8 19:57 | 只看该作者
可能这个系列提供了不同的细分型号。

使用特权

评论回复
8
pvtang|  楼主 | 2017-3-9 09:33 | 只看该作者
linzekai 发表于 2017-3-8 16:30
M05xxBN系列的IC没有IAP功能,所以只能看到LDROM和APROM两个选项。

你选择的应该是ISP功能,在LDROM和APRO ...

我在楼上写BS位的可以实现相互跳转,但是修改CONFIG0时始终实现不了,确实大批量发货,不能有这个bug。
直接在早期同事的代码里面这样实现:
void Jump2Boot(void)
{
    Un_Lock_Reg();
          ISPCON |= ISPEN;
          AHBCLK  |= (1ul<<2);
    //outpw(&SYS->RSTSRC, 3);//clear bit
          outpw(0x50000004,3);

         //outpw(&FMC->ISPCON, inpw(&FMC->ISPCON) & 0xFFFFFFFC);
         
          outpw(0x5000C000, 0xFFFFFFFC);
          //outpw(&FMC->ISPCON,0xFFFFFFFC);
       
         outpw(0xE000ED0CUL, (V6M_AIRCR_VECTKEY_DATA | V6M_AIRCR_SYSRESETREQ));
   // outpw(&SCB->AIRCR, (V6M_AIRCR_VECTKEY_DATA | V6M_AIRCR_SYSRESETREQ));
       
  /* Trap the CPU */
    while(1);
}
这样都不能实现跳转,真是无语。



暂时只有的516LBN板子调试,过几天会换成516LDN来做产品。

使用特权

评论回复
9
pvtang|  楼主 | 2017-3-9 09:46 | 只看该作者
玛尼玛尼哄 发表于 2017-3-8 19:57
可能这个系列提供了不同的细分型号。


我以为M051LBN ,属于 M051xxxBN。。。
NUC200/NUC220/NUC230/NUC240
Yes
Yes
M051xxxDN/ M051xxxDE
Yes
Yes
M051xxxBN
Yes
Yes
NUC131
Yes
Yes
NUC130CN/NUC140CN
No
Yes
NUC123
No
Yes
M058S
No
Yes
NANO100/NANO120/NANO130/NANO140BN
No
Yes
NANO100/NANO120/NANO130/NANO140AN
No
Yes
NANO102/NANO112
Yes
Yes
Mini5xAN/Mini5xBN
No
Yes
Mini5xDE
Yes
Yes
NUC029
No
Yes
NUC442/NUC470/NUC451
Yes
Yes

使用特权

评论回复
10
pvtang|  楼主 | 2017-3-23 09:42 | 只看该作者
本帖最后由 pvtang 于 2017-3-23 09:46 编辑

最终实现了读上位机发来的数据,解析后写到APROM中,
实现在线升级功能。
要注意的是M0 是小端存储的,LPC17XX M3 是大端的。
还有一问题是,M0 串口速率不高,读Flash时要等串口发完,再继续读。

用如下函数可以分辨大小端。

#define BIGENDIAN           1       // ?????
#define LITTLEENDIAN        2       // ?????
INT32U JudgeEnddian( void )
{
    const INT32U ulData = 1;

    if( *((INT8U *)&ulData) == 1 )
    {
        return LITTLEENDIAN;
    }
    else
    {
         return BIGENDIAN;
    }
}

============APP.bin数据====================
50 02 00 20 D5 00 00 00 F5 00 00 00 F7 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 F9 00 00 00
00 00 00 00 00 00 00 00 FB 00 00 00 FD 00 00 00
FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00
FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00
FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00
59 02 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00
FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00
FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00
FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00
FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00
03 48 85 46 00 F0 2C F8 00 48 00 47 C5 02 00 00
50 02 00 20 0A 48 0B 49 01 60 0B 49 01 60 0B 49
01 60 0B 4A 0B 49 11 60 00 21 01 60 0A 48 80 47
0A 48 00 47 FE E7 FE E7 FE E7 FE E7 FE E7 FE E7
00 01 00 50 59 00 00 00 16 00 00 00 88 00 00 00
24 00 00 50 A5 5A 00 00 55 02 00 00 C1 00 00 00
06 4C 01 25 06 4E 05 E0 E3 68 07 CC 2B 43 0C 3C
98 47 10 34 B4 42 F7 D3 FF F7 C6 FF 08 03 00 00
28 03 00 00 F0 B5 00 23 01 27 3C 46 9C 40 0C 42
08 D0 05 68 5C 00 03 26 A6 40 B5 43 16 46 A6 40
35 43 05 60 5B 1C 08 2B EF D3 F0 BD 00 F0 62 F8
03 20 05 21 09 07 48 60 03 49 0A 68 02 43 0A 60
03 49 02 48 C8 60 FE E7 00 C0 00 50 04 00 FA 05
00 ED 00 E0 06 48 01 46 49 1E 00 29 FC DC 05 49
00 22 0A 62 40 1E 00 28 FC DC 01 20 08 62 70 47
40 42 0F 00 40 42 00 50 18 48 01 68 05 22 11 43
01 60 C1 68 C9 06 FC D5 15 49 01 62 C1 68 49 07
FC D5 01 69 C9 08 C9 00 01 61 01 69 02 22 11 43
01 61 81 69 09 09 09 01 81 61 81 69 81 61 0E 4A
0C 49 11 60 0D 4A 11 60 0D 4A 32 21 11 60 81 68
01 22 12 04 11 43 81 60 42 69 03 21 09 06 8A 43
42 61 42 69 0A 43 42 61 70 47 00 00 00 02 00 50
39 56 08 00 80 F0 FA 02 08 00 00 20 00 00 00 20
04 00 00 20 10 B5 59 21 16 23 05 48 88 22 02 E0
01 60 03 60 02 60 04 68 01 2C F9 D1 10 BD 00 00
00 01 00 50 70 47 00 00 70 B5 0F 4D EC 69 11 20
0E 4B 04 42 0D D0 0E 4E A8 69 40 04 09 D4 58 78
40 28 06 D2 29 68 58 78 32 18 40 1C 58 70 11 70
F2 E7 59 78 00 20 40 29 03 D0 E1 06 00 D5 58 70
70 BD 01 21 19 70 FA E7 00 00 05 40 0C 00 00 20
10 00 00 20 02 E0 08 C8 12 1F 08 C1 00 2A FA D1
70 47 70 47 00 20 01 E0 01 C1 12 1F 00 2A FB D1
70 47 00 00 FF F7 B6 FF FF F7 76 FF 01 22 11 46
0A 48 FF F7 37 FF 0A 23 FF F7 5C FF 5B 1E 00 2B
FA DC 07 49 48 68 04 22 10 43 48 60 05 48 01 68
01 22 11 43 01 60 FF F7 39 FF 00 00 C0 40 00 50
00 02 00 50 00 C0 00 50 28 03 00 00 00 00 00 20
10 00 00 00 A4 02 00 00 38 03 00 00 10 00 00 20
40 02 00 00 B4 02 00 00 80 F0 FA 02 32 00 00 00
80 F0 FA 02 00 00 00 00


===========串口读的APROM数据:=================
20 00 02 50 00 00 00 D5 00 00 00 F5 00 00 00 F7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F9 00 00 00 00 00 00 00 00 00 00 00 FB 00 00 00 FD 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 02 59 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 46 85 48 03 F8 2C F0 00 47 00 48 00 00 00 02 C5 20 00 02 50 49 0B 48 0A 49 0B 60 01 49 0B 60 01 4A 0B 60 01 60 11 49 0B 60 01 21 00 47 80 48 0A 47 00 48 0A E7 FE E7 FE E7 FE E7 FE E7 FE E7 FE 50 00 01 00 00 00 00 59 00 00 00 16 00 00 00 88 50 00 00 24 00 00 5A A5 00 00 02 55 00 00 00 C1 25 01 4C 06 E0 05 4E 06 CC 07 68 E3 3C 0C 43 2B 34 10 47 98 D3 F7 42 B4 FF C6 F7 FF 00 00 03 08 00 00 03 28 23 00 B5 F0 46 3C 27 01 42 0C 40 9C 68 05 D0 08 26 03 00 5C 43 B5 40 A6 40 A6 46 16 60 05 43 35 2B 08 1C 5B BD F0 D3 EF F8 62 F0 00 21 05 20 03 60 48 07 09 68 0A 49 03 60 0A 43 02 48 02 49 03 E7 FE 60 C8 50 00 C0 00 05 FA 00 04 E0 00 ED 00 46 01 48 06 29 00 1E 49 49 05 DC FC 62 0A 22 00 28 00 1E 40 20 01 DC FC 47 70 62 08 00 0F 42 40 50 00 42 40 68 01 48 18 43 11 22 05 68 C1 60 01 D5 FC 06 C9 62 01 49 15 07 49 68 C1 69 01 D5 FC 00 C9 08 C9 69 01 61 01 43 11 22 02 69 81 61 01 01 09 09 09 69 81 61 81 4A 0E 61 81 60 11 49 0C 60 11 4A 0D 21 32 4A 0D 68 81 60 11 04 12 22 01 60 81 43 11 21 03 69 42 43 8A 06 09 69 42 61 42 61 42 43 0A 00 00 47 70 50 00 02 00 00 08 56 39 02 FA F0 80 20 00 00 08 20 00 00 00 20 00 00 04 21 59 B5 10 48 05 23 16 E0 02 22 88 60 03 60 01 68 04 60 02 D1 F9 2C 01 00 00 BD 10 50 00 01 00 00 00 47 70 4D 0F B5 70 20 11 69 EC 42 04 4B 0E 4E 0E D0 0D 04 40 69 A8 78 58 D4 09 D2 06 28 40 78 58 68 29 1C 40 18 32 70 11 70 58 78 59 E7 F2 29 40 20 00 06 E1 D0 03 70 58 D5 00 21 01 BD 70 E7 FA 70 19 40 05 00 00 20 00 00 0C 20 00 00 10 C8 08 E0 02 C1 08 1F 12 D1 FA 2A 00 47 70 47 70 E0 01 20 00 1F 12 C1 01 D1 FB 2A 00 00 00 47 70 FF B6 F7 FF FF 76 F7 FF 46 11 22 01 F7 FF 48 0A 23 0A FF 37 FF 5C F7 FF 2B 00 1E 5B 49 07 DC FA 22 04 68 48 60 48 43 10 68 01 48 05 43 11 22 01 F7 FF 60 01 00 00 FF 39 50 00 40 C0 50 00 02 00 50 00 C0 00 00 00 03 28 20 00 00 00 00 00 00 10 00 00 02 A4 00 00 03 38 20 00 00 10 00 00 02 40 00 00 02 B4 02 FA F0 80 00 00 00 32 02 FA F0 80 00 00 00 00


使用特权

评论回复
11
lj9010| | 2017-6-6 20:28 | 只看该作者
不知道楼主是否能分享一下经验   我也在做此方案  没有任何头绪

使用特权

评论回复
12
pvtang|  楼主 | 2017-7-9 21:51 | 只看该作者
lj9010 发表于 2017-6-6 20:28
不知道楼主是否能分享一下经验   我也在做此方案  没有任何头绪

这段时间公司更新了安全策略,不能回复。下班就忘了,你有什么问题直接问吧,我这个代码都贴出来了。有问题我会回复的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

9

帖子

0

粉丝