|
2020-06-15
1. 读保护的问题已解决。在网友的帮忙下,通过阅读openocd开源代码。发现2个文档未公开的指令。加上就好了。
2020-06-13
目前遗留问题:
1、解除读保护的方法,官方没有正式文档,完全靠摸索。新唐有个整片擦除指令,但是没有公开。
2、新唐FLM算法文件中的Verify校验函数执行返回错误。目前只能强制用Readback读回校验。
2020-05-30前2周网友发来一个新唐M0518的板子,搞脱机烧录2天没头绪,读任何地址都返回0,读写寄存器均无效。解除写寄存器保护和FMC使能,功能也不正常。
信心受到严重打击。手头也没有新唐的下载器,不知道板子硬件问题还是我的软件问题。
去买了一个NU-Link下载器,才发现M0518是加密保护状态,解锁后正常。
目前读写内存、读ID已正常。下面就可以开始测试验证FLM文件了。
新唐的片子读ID不能像ST那样,直接读内存即可。需要一系列操作才能读取。
已用lua脚本实现
function MCU_Init(void)
--SYS_UnlockReg()
local i
for i = 1,1000,1 do
if (pg_read32(0x50000100) == 1) then
break
end
pg_write32(0x50000100, 0x59)
pg_write32(0x50000100, 0x16)
pg_write32(0x50000100, 0x88)
end
--FMC_Open()
pg_write32(0x5000C000, pg_read32(0x5000C000) | 1)
end
function MCU_ReadUID(void)
local id = {}
local i
local s = ""
local str
for i = 1, 3, 1 do
print(i)
pg_write32(0x5000C00C, 0x04)
pg_write32(0x5000C004, (i - 1) * 4)
pg_write32(0x5000C010, 0x01)
while((pg_read32(0x5000C010) & 0x01) == 0x01) do end
id = pg_read32(0x5000C008)
s = s..string.char(id)
s = s..string.char(id >> 8)
s = s..string.char(id >> 16)
s = s..string.char(id >> 24)
end
str = "uid = "..bin2hex(s) print(str)
return s
end
|
评分
-
查看全部评分
|