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
target_table.cpp@52:afd15e54142f, 2015-07-26 (annotated)
- 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?
User | Revision | Line number | New 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 |