Code to load a LPC1114 over tx/rx. I have only tested with a 1114 chip but it should work with other LPC uControllers

Dependencies:   DirectoryList MODSERIAL mbed

Fork of ika_shouyu_poppoyaki by Tedd OKANO

Committer:
ChrisABailey
Date:
Sun Jul 26 14:46:23 2015 +0000
Revision:
52:afd15e54142f
Parent:
51:981107d4e84f
Use MBED to load LPC1114.  Modified to also load LPExpresso 1114 board

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 5:ff30f5b58617 1 #include "mbed.h"
okano 5:ff30f5b58617 2 #include "target_table.h"
okano 5:ff30f5b58617 3
okano 44:568799eac6df 4 #define SECTOR_SIZE_VALIABLE4Kx16_AND_32KxN 1
Hapi_Tech 50:57ad8e04f063 5 #define SECTOR_SIZE_VALIABLE4Kx24_AND_32KxN 2
okano 51:981107d4e84f 6
okano 5:ff30f5b58617 7 target_param target_table[] = {
okano 12:5a33b5d39792 8 { "unknown ttarget", 0xFFFFFFFF, 1024, 4096, 4096, UUENCODE, 0x10000200 },
okano 12:5a33b5d39792 9 { "LPC1114FN28(FDH28)/102", 0x0A40902B, 4096, 32768, 4096, UUENCODE, 0x10000200 },
okano 12:5a33b5d39792 10 { "LPC1114FN28(FDH28)/102", 0x1A40902B, 4096, 32768, 4096, UUENCODE, 0x10000200 },
ChrisABailey 52:afd15e54142f 11 { "LPC1114(EM773FHN33/301)" , 0x0444102B, 4096, 32768, 4096, UUENCODE, 0x10000200 },
okano 12:5a33b5d39792 12 { "LPC810M021FN8", 0x00008100, 1024, 4096, 1024, BINARY, 0x10000300 },
okano 12:5a33b5d39792 13 { "LPC811M001JDH16", 0x00008110, 2048, 8192, 1024, BINARY, 0x10000300 },
okano 12:5a33b5d39792 14 { "LPC812M101JDH16", 0x00008120, 4096, 16384, 1024, BINARY, 0x10000300 },
okano 12:5a33b5d39792 15 { "LPC812M101JD20", 0x00008121, 4096, 16384, 1024, BINARY, 0x10000300 },
okano 12:5a33b5d39792 16 { "LPC812M101JDH20", 0x00008122, 4096, 16384, 1024, BINARY, 0x10000300 },
k4zuki 42:2b40666d8177 17 ///added for LPC82x series
k4zuki 42:2b40666d8177 18 { "LPC824M201JHI33", 0x00008241, 8192, 32768, 1024, BINARY, 0x10000300 },
k4zuki 42:2b40666d8177 19 { "LPC822M101JHI33", 0x00008221, 4096, 16384, 1024, BINARY, 0x10000300 },
k4zuki 42:2b40666d8177 20 { "LPC824M201JDH20", 0x00008242, 8192, 32768, 1024, BINARY, 0x10000300 },
k4zuki 42:2b40666d8177 21 { "LPC822M101JDH20", 0x00008222, 4096, 16384, 1024, BINARY, 0x10000300 },
okano 44:568799eac6df 22 ///added for LPC176x series
okano 44:568799eac6df 23 { "LPC1769FBD100", 0x26113F37, 65536, 524288, SECTOR_SIZE_VALIABLE4Kx16_AND_32KxN, UUENCODE, 0x10000200 },
okano 44:568799eac6df 24 { "LPC1768FBD100", 0x26013F37, 65536, 524288, SECTOR_SIZE_VALIABLE4Kx16_AND_32KxN, UUENCODE, 0x10000200 },
Hapi_Tech 50:57ad8e04f063 25 ///added for LPC11U(E)68x series
Hapi_Tech 50:57ad8e04f063 26 { "LPC11U68JBD100", 0x00007C00, 36864, 262144, SECTOR_SIZE_VALIABLE4Kx24_AND_32KxN, UUENCODE, 0x10000300 },
Hapi_Tech 50:57ad8e04f063 27 { "LPC11E68JBD100", 0x00007C01, 36864, 262144, SECTOR_SIZE_VALIABLE4Kx24_AND_32KxN, UUENCODE, 0x10000300 },
okano 5:ff30f5b58617 28 };
okano 5:ff30f5b58617 29
okano 5:ff30f5b58617 30 target_param *find_target_param( char *device_id_string )
okano 5:ff30f5b58617 31 {
okano 5:ff30f5b58617 32 int id;
okano 44:568799eac6df 33
okano 5:ff30f5b58617 34 id = atoi( device_id_string );
ChrisABailey 52:afd15e54142f 35 printf("looking for ID %d 0x%x\r\n",id,id);
okano 44:568799eac6df 36 for ( int i = 1; i < (sizeof( target_table ) / sizeof( target_param )); i++ ) {
okano 5:ff30f5b58617 37 if ( id == target_table[ i ].id )
okano 5:ff30f5b58617 38 return ( &(target_table[ i ]) );
okano 5:ff30f5b58617 39 }
okano 44:568799eac6df 40
okano 28:689c3880e0e4 41 // return ( target_table );
okano 28:689c3880e0e4 42 return ( NULL );
okano 5:ff30f5b58617 43 }
okano 26:a63e73885b21 44
okano 44:568799eac6df 45 int find_sector( int data_size, target_param *tpp )
okano 44:568799eac6df 46 {
okano 51:981107d4e84f 47 int result;
okano 51:981107d4e84f 48
okano 44:568799eac6df 49 switch ( tpp->sector_size ) {
okano 44:568799eac6df 50 case SECTOR_SIZE_VALIABLE4Kx16_AND_32KxN :
okano 44:568799eac6df 51 if ( data_size <= (4096 * 16) ) {
okano 51:981107d4e84f 52 result = ( data_size / 4096 );
okano 44:568799eac6df 53 } else {
okano 44:568799eac6df 54 data_size -= (4096 * 16);
okano 51:981107d4e84f 55 result = ( (data_size / (4096 * 8)) + 16 );
okano 44:568799eac6df 56 }
Hapi_Tech 50:57ad8e04f063 57 break;
Hapi_Tech 50:57ad8e04f063 58 case SECTOR_SIZE_VALIABLE4Kx24_AND_32KxN :
Hapi_Tech 50:57ad8e04f063 59 if ( data_size <= (4096 * 24) ) {
okano 51:981107d4e84f 60 result = ( data_size / 4096 );
Hapi_Tech 50:57ad8e04f063 61 } else {
Hapi_Tech 50:57ad8e04f063 62 data_size -= (4096 * 24);
okano 51:981107d4e84f 63 result = ( (data_size / (4096 * 12)) + 24 );
Hapi_Tech 50:57ad8e04f063 64 }
okano 51:981107d4e84f 65 break;
okano 51:981107d4e84f 66
okano 51:981107d4e84f 67
okano 44:568799eac6df 68 default :
Hapi_Tech 50:57ad8e04f063 69 result = ( data_size / tpp->sector_size );
okano 44:568799eac6df 70 //break;
okano 44:568799eac6df 71 }
okano 51:981107d4e84f 72 return (result);
okano 44:568799eac6df 73 }
okano 44:568799eac6df 74