查看: 3655|回复: 14

[求助] 发现AND2295SW重要问题,请FAE解答

[复制链接]

该用户从未签到

20

主题

102

帖子

0

中级会员

Rank: 3Rank: 3

积分
379
最后登录
1970-1-1
发表于 2015-5-11 15:45:33 | 显示全部楼层 |阅读模式
本帖最后由 北极星-38637 于 2015-5-11 15:47 编辑

我在AN2295SW例程的IAR工程基础上修改,打算做MK20DX256VLL7的bootloader工程。
我的目标板上使用8MHz外部晶体,把115200波特率调试输出正确后,连接目标板,运行AN2295SW\masters\release\win_hc08sprg.exe,
出现
Waiting for HC(S)08 reset ACK (timeout: 10s)...received 0xfc (good).
Calibration break pulse sent. Count: 3
Can't read MCU info. Could be protocol error.
(Or forgot to set single wire mode?)

在IAR工程里插入断点,观察SDID为0x2098,其中REVID=0x2,FAMID=0x1,PINID=0x8;
查阅文档K22P100M120SF5RM.pdf发现这三个值是正常的。


下面问题出来了:
在AN2295SW\masters\common_sources\prog.c(这里的prog.c是win_hc08sprg.exe的源码文件之一)发现
t_sdid sdidprops[]=
{
...
        {0x1D0,        BL_KINETIS,                "Kinetis K70",                                                -1                        ,-1},
        {0x140,        BL_KINETIS,                "Kinetis K60",                                                -1                        ,-1},
        {0x130,        BL_KINETIS,                "Kinetis K40",                                                -1                        ,-1},
        {0x120,        BL_KINETIS,                "Kinetis K30",                                                -1                        ,-1},
        {0x110,        BL_KINETIS,                "Kinetis K20",                                                -1                        ,-1},
        {0x100,        BL_KINETIS,                "Kinetis K10",                                                -1                        ,-1},
        {0x0480,BL_KINETIS,                "Kinetis KLxx",                                                -1                        ,-1},
        {SDID_UNDEF,BL_UNKNOWN,        "unknown derivative",                                -1                        ,-1}                // last entry

do not remove
};

在下面有
int sdid2index(short sdid)
{
        int i=0;

        if (bl_version == BL_KINETIS)
                sdid &= 0x0ff0;  // remove the lower 4 bits that has information about package & 4 bits about the revision Id

        do
        {
                if(sdidprops.sdid == sdid)
                        return i;
        } while(sdidprops[++i].sdid != SDID_UNDEF);

        return i;
}

也就是说把读到的sdid与上0x0ff0,去掉版本ID号。
如果用0x2098 & 0x0ff0 = 0x0090,而不是t_sdid sdidprops[]里K20对应的0x110。

请FAE解答,这是怎么回事?



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

使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-5-11 16:07:53 | 显示全部楼层
    楼主,你仔细看一下手册中的介绍。这里SDID取的是DIEID和FAMID,所以需要&0x0FF0,这2个段占用的是4-11位,楼主看一下DIEID的值是多少。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    102

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    379
    最后登录
    1970-1-1
     楼主| 发表于 2015-5-11 16:17:10 | 显示全部楼层
    本帖最后由 北极星-38637 于 2015-5-11 16:19 编辑

    K22P100M120SF5RM.pdf里
    QQ截图20150511161609.png
    只看到SDID,没有找到DIEID啊,在哪里?
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-5-11 16:26:41 | 显示全部楼层
    楼主下载一个最新的PDF看。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-5-11 16:28:48 | 显示全部楼层
    这个默认值是0 0 1 1 0,这样算出来应该是0x310,应该是K22的版本。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    102

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    379
    最后登录
    1970-1-1
     楼主| 发表于 2015-5-11 16:32:57 | 显示全部楼层
    QQ图片20150511163120.png
    我看已经是官网上找到的最新的了。
    是不是还有新版本的没有放上去?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    102

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    379
    最后登录
    1970-1-1
     楼主| 发表于 2015-5-11 16:54:28 | 显示全部楼层
    MK20DX256的SDID为0x2098=0010 0000 1001 1000,那么4-11位是0000 1001这是正常的。与K22的不同。K22的DIEID=00110
    只是AN2295SW\masters\common_sources\prog.c里的t_sdid sdidprops[]的0x110有些问题。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    102

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    379
    最后登录
    1970-1-1
     楼主| 发表于 2015-5-11 16:55:36 | 显示全部楼层
    建议把AN2295SW的上位机软件再测试一下。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2015-5-22 09:46:44 | 显示全部楼层
    楼主你好
    MK20DX256VLL7已经不是主推产品了,建议换成对应K2第二代Kinetis芯片。
    并且选用KBOOT方案。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2015-5-26 15:35:29 | 显示全部楼层
    0x110,        BL_KINETIS,                "Kinetis K20",
    这一条的确有些问题,因为不同主频的K20芯片SIM_SDID寄存器有所不同。
    楼主可以改一下,毕竟FAMID还是可以准确得知K20这个型号的。

    MK20DX256VLL7芯片请看参考手册K20P100M72SF1RM
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-27 03:19 , Processed in 0.102970 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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