Device Serial Number

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

Device Serial Number

5,699 次查看
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by PhilYoung on Sat Aug 18 08:39:48 MST 2012
Has anybody managed yet to get the device serial number using the IAP?.

The documentation is clearly broken.

#define IAP_LOCATION *(volatile unsigned int *)(0x104000100);

( why the semicolon ???, crap coding ).

NXP obviously never tested this since the address has too many digits, last I checked the M4 was a 32 bit core, not 36!.

neither 0x10400010 nor 0x10400100 work.

does anybody know the correct address, or simply where the serial number is stored.

标签 (1)
0 项奖励
回复
9 回复数

5,164 次查看
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by VijayM on Fri Dec 28 02:49:46 MST 2012
The above gives explanation about the part identification numbers according to Table 1037 of User Manual 10503. How we can read the Device serial number? Is there any way through which we can read the chip revision ("A" or "C" ) information?
0 项奖励
回复

5,161 次查看
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by bigkahuna on Wed Sep 26 10:13:29 MST 2012
I found this discussion useful as I have been using LPC1857FET256 in our product.

The issue is for this processor, 0x4004500C memory location contains 0x1EF40000 for the 1 boards that I have tested AND containted 0x0EF40000 for the other board.

Can you please post how to decode the 0x4004500C memory location?  If it doesn't serve any purpose that purhaps it should be ignored.

0 项奖励
回复

5,161 次查看
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by wellsk on Mon Aug 20 12:54:00 MST 2012

It looks like you can indirectly get these via the OTP registers if the IAP call can't be used in FLASH-less devices. The partial list is here is below with the ID1 and ID2 values and the devices they map to..


ID1 is read at address 0x40045000


ID2 is read at address 0x4004500C


ID1, ID2, Part numbers


<pre>0xF001D830, 0x00000000 /* LPC1857FET256/LPC1857FET180/LPC1857FBD208 */</pre>
<pre>0xF001D830, 0x00000044 /* LPC1853FET256/LPC1853FET180/LPC1853FBD208 */</pre>
<pre>0xF001DA30, 0x00000000 /* LPC1837FET256/LPC1837FET180/LPC1837FET100/LPC1837FBD144 */</pre>
<pre>0xF001DA30, 0x00000044 /* LPC1833FET256/LPC1833FET180/LPC1833FET100/LPC1833FBD144 */</pre>
<pre>/* 43xx variants with FLASH */</pre>
<pre>0xA001C830, 0x00000000 /* LPC4357FET256/LPC4357FET180/LPC4357FBD208 */</pre>
<pre>0xA001C830, 0x00000044 /* LPC4353FET256/LPC4353FET180/LPC4353FBD208 */</pre>
<pre>/* 18xx non-FLASH variants */</pre>
<pre>0xF0009830, 0x00000000 /* LPC1850FET256/LPC1850FET180/LPC1850FBD208 */</pre>
<pre>0xF0009A30, 0x00000000 /* LPC1830FET256/LPC1830FET180/LPC1830FET100/LPC1830FBD144 */</pre>
<pre>0xF00A9B3C, 0x00000000 /* LPC1820FET100/LPC1820FBD144/LPC1820FBD100 */</pre>
<pre>0xF00B1B3F, 0x00000000 /* LPC1810FET100/LPC1810FBD144 */</pre>

 


The above lists may not be complete...


Example: The NGX Xplorer 1830 board (memory dump below) has 0xF0009A30 for ID1 and 0x00000000 for ID2.


<img src="data:image/png;base64,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" border="0" alt="" />

0 项奖励
回复

5,160 次查看
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by PhilYoung on Sat Aug 18 16:13:44 MST 2012
looks like it is mapped at 0x40045004, the user manual says reserved but from 2 boards this seems different.
0 项奖励
回复

5,161 次查看
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by wellsk on Sat Aug 18 14:48:00 MST 2012
Sorry, I can take a look at this on Monday in the office. I believe these values are directly or partially mapped in the OTP fuse block, but I don't have a board nearby to verify this..
0 项奖励
回复

5,161 次查看
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by PhilYoung on Sat Aug 18 13:08:36 MST 2012
Ok. The Errata says the IAP is not present on the flashless parts, so where do I find the device serial number?.

0 项奖励
回复

5,161 次查看
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by PhilYoung on Sat Aug 18 12:30:07 MST 2012
Thanks Kevin, but this doesn't work.

I'm using an LPC4330.

at 0x10400100 I see the value 0x12345678 so clearly it isn't the entry point for the IAP on the LPC4330.

_rdword(0x10400100)
0x12345678

0x10400100 5678      LDRSB         r0,[r7,r1]
0x10400102 1234      ASRS          r4,r6,#8
0x10400104 72F0      STRB          r0,[r6,#0x0B]
0x10400106 1040      ASRS          r0,r0,#1
0x10400108 73C8      STRB          r0,[r1,#0x0F]
0x1040010A 1040      ASRS          r0,r0,#1
0x1040010C 0000      MOVS          r0,r0
0 项奖励
回复

5,161 次查看
cyc583723081
Contributor I

hi,

Dear friend,

have you finished reading the part ID of lpc4330?

How does it work?

0 项奖励
回复

5,161 次查看
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by wellsk on Sat Aug 18 11:53:00 MST 2012
See the code here for IAP use with the internal FLASH IAP programming example for DFUSec. This was used with the 18xx, but the 43xx has the same address - I just use the 18xx binary on the 43xx. The example also shows how to query the serial number and FLASH using IAP.

http://sw.lpcware.com/?p=lpc18xx.git&a=blob&h=48c7b37269c7e5117e8ce692736faee32c6a3b25&hb=6cb2114674...

The IAP address and basic query code is:
<code>
typedef void (* IAP)(uint32_t *, uint32_t *);
#define IAP_LOCATION *((uint32_t *) 0x10400100);
static IAP iap_entry;
static uint32_t command[6], result[5];

/* Initialize IAP */
command[0] = IAP_INIT;
iap_entry(command, result);
if (result[0] == IAP_COMMAND_SUCCESS) {
        /* Get part ID */
        command[0] = IAP_READ_PART_ID;

        /* result[1] amd result[2] should contain partid1 and partid2 after the call
        iap_entry(command, result);
</code>



0 项奖励
回复