查看: 1694|回复: 0
打印 上一主题 下一主题

新唐的M058固件库里居然有这种低级bug.

[复制链接]
跳转到指定楼层
沙发
发表于 2015-6-14 17:20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
劳动节闲在家,翻腾出不久前买的新唐M058SSAN评估板,用固件库写了个demon,居然百试不得运行,进仿真,发现卡在 SYS_UnlockReg(); 这个函数里,函数内容如下:
    while(SYS->REGWRPROT != SYS_REGWRPROT_REGPROTDIS_Msk)
    {
        SYS->REGWRPROT = 0x59;
        SYS->REGWRPROT = 0x16;
        SYS->REGWRPROT = 0x88;
    }
复制代码

之后进一步发现,官方居然把SYS->REGWRPROT这个寄存器偏移地址弄错了,难怪不行。

找到原因之后修改这个函数的内容如下:
        register uint32_t reg_addr, nmb1, nmb2, nmb3;

        reg_addr = 0x50000100;
        nmb1 = 0x59;
        nmb2 = 0x16;
        nmb3 = 0x88;

        __ASM("STR nmb1, [reg_addr]");
        __ASM("STR nmb2, [reg_addr]");
        __ASM("STR nmb3, [reg_addr]");
复制代码


流水灯欢快的跑了起来,哈哈,哈哈哈~

PS:鄙视下新唐。
转载

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

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