Device Serial Number

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Device Serial Number

5,713 Views
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.

Labels (1)
0 Kudos
Reply
9 Replies

5,178 Views
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 Kudos
Reply

5,175 Views
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 Kudos
Reply

5,175 Views
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 Kudos
Reply

5,174 Views
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 Kudos
Reply

5,175 Views
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 Kudos
Reply

5,175 Views
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 Kudos
Reply

5,175 Views
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 Kudos
Reply

5,175 Views
cyc583723081
Contributor I

hi,

Dear friend,

have you finished reading the part ID of lpc4330?

How does it work?

0 Kudos
Reply

5,175 Views
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 Kudos
Reply