Reading Fuse

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Reading Fuse

跳至解决方案
2,140 次查看
SteM
Contributor III

Hi all,

how can i read the iMX51 fuses inside a WEC700 driver?

I need to read the unique ID of the chip and my guess is that is contained in the fuses area.

My try is:

UINT8* pRegs;
    int val;
    PHYSICAL_ADDRESS phyAddr;
    ULONG ulSize = 0x840*sizeof(UINT8);
    phyAddr.QuadPart = CSP_BASE_REG_PA_IIM;
    pRegs = (UINT8*)MmMapIoSpace(phyAddr, ulSize, FALSE);
    RETAILMSG(1, (L":  %x\r\n", pRegs));

    val  = INREG32(&pRegs[0x820]);
    RETAILMSG(1, (L":  %x\r\n", val));

    val <<= 8;
    val |= INREG32(&pRegs[0x824]);
    RETAILMSG(1, (L":  %x\r\n", val));

but the driver hangs and the system stop to work.

How can i do it?

Thanks!

标签 (2)
0 项奖励
回复
1 解答
1,838 次查看
JerryZeng
NXP Employee
NXP Employee

I don't see any code to enable IIM clock in your driver, so you violate the basic rule in the driver. I believe that's the root cause for your hang (and this is a typical case for a driver hang).

Please add following code before / after IIM access:

    DDKClockSetGatingMode(DDK_CLOCK_GATE_INDEX_IIM, DDK_CLOCK_GATE_MODE_ENABLED_ALL);

    ......

    DDKClockSetGatingMode(DDK_CLOCK_GATE_INDEX_IIM, DDK_CLOCK_GATE_MODE_DISABLED);

在原帖中查看解决方案

0 项奖励
回复
4 回复数
1,838 次查看
JasonLiu
NXP Employee
NXP Employee

Please keep in mind, before any access to the register of one IP component, we need turn that IP component clock ON, otherwise, system bus will hang up and then system hang eventually.

1,839 次查看
JerryZeng
NXP Employee
NXP Employee

I don't see any code to enable IIM clock in your driver, so you violate the basic rule in the driver. I believe that's the root cause for your hang (and this is a typical case for a driver hang).

Please add following code before / after IIM access:

    DDKClockSetGatingMode(DDK_CLOCK_GATE_INDEX_IIM, DDK_CLOCK_GATE_MODE_ENABLED_ALL);

    ......

    DDKClockSetGatingMode(DDK_CLOCK_GATE_INDEX_IIM, DDK_CLOCK_GATE_MODE_DISABLED);

0 项奖励
回复
1,838 次查看
SteM
Contributor III

Yes!

I added your code and it solved the problem.

Btw, I don't understand why there was no problem reading pRegs[0x20] and there was problem to read pRegs[0x820]...

Thanks a lot!

0 项奖励
回复
1,838 次查看
JerryZeng
NXP Employee
NXP Employee

pRegs[0x20] is for IIM register and pRegs[0x820] is for eFuse, maybe IIM register access only need IPG clock and this clock is enabled by other driver. Just guess.

0 项奖励
回复