ROM Reader (2332/2316) http://mbed.org/users/kanpapa/notebook/rom-reader/

Dependencies:   mbed

Committer:
kanpapa
Date:
Sat Aug 13 05:29:46 2011 +0000
Revision:
0:8f3eaae6248d
Child:
1:74597dff65ee
1st release.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kanpapa 0:8f3eaae6248d 1 /*
kanpapa 0:8f3eaae6248d 2
kanpapa 0:8f3eaae6248d 3 mbed ROM Reader for 2332/2316
kanpapa 0:8f3eaae6248d 4
kanpapa 0:8f3eaae6248d 5 Read from ROM and dump to local file(ROM1.BIN)
kanpapa 0:8f3eaae6248d 6
kanpapa 0:8f3eaae6248d 7 ===============
kanpapa 0:8f3eaae6248d 8 Status LED
kanpapa 0:8f3eaae6248d 9 -----------
kanpapa 0:8f3eaae6248d 10 LED1: nouse
kanpapa 0:8f3eaae6248d 11 LED2: Busy
kanpapa 0:8f3eaae6248d 12 LED3: Error
kanpapa 0:8f3eaae6248d 13 LED4: End
kanpapa 0:8f3eaae6248d 14
kanpapa 0:8f3eaae6248d 15 ===============
kanpapa 0:8f3eaae6248d 16 ROM Connection
kanpapa 0:8f3eaae6248d 17 ---------------
kanpapa 0:8f3eaae6248d 18 mbed 2332/2316
kanpapa 0:8f3eaae6248d 19 p5 9 (O0)
kanpapa 0:8f3eaae6248d 20 p6 10 (O1)
kanpapa 0:8f3eaae6248d 21 p7 11 (O2)
kanpapa 0:8f3eaae6248d 22 p8 13 (O3)
kanpapa 0:8f3eaae6248d 23 p9 14 (O4)
kanpapa 0:8f3eaae6248d 24 p10 15 (O5)
kanpapa 0:8f3eaae6248d 25 p11 16 (O6)
kanpapa 0:8f3eaae6248d 26 p12 17 (O7)
kanpapa 0:8f3eaae6248d 27 p13 8 (A0)
kanpapa 0:8f3eaae6248d 28 p14 7 (A1)
kanpapa 0:8f3eaae6248d 29 p15 6 (A2)
kanpapa 0:8f3eaae6248d 30 p16 5 (A3)
kanpapa 0:8f3eaae6248d 31 p17 4 (A4)
kanpapa 0:8f3eaae6248d 32 p18 3 (A5)
kanpapa 0:8f3eaae6248d 33 p19 2 (A6)
kanpapa 0:8f3eaae6248d 34 p20 1 (A7)
kanpapa 0:8f3eaae6248d 35 p21 23 (A8)
kanpapa 0:8f3eaae6248d 36 p22 22 (A9)
kanpapa 0:8f3eaae6248d 37 p23 19 (A10)
kanpapa 0:8f3eaae6248d 38 p24 18 (A11)
kanpapa 0:8f3eaae6248d 39 p25 20 (/CE1)
kanpapa 0:8f3eaae6248d 40 p26 21 (CE2)
kanpapa 0:8f3eaae6248d 41 VU 24 (Vcc)
kanpapa 0:8f3eaae6248d 42 GND 12 (GND)
kanpapa 0:8f3eaae6248d 43 ================
kanpapa 0:8f3eaae6248d 44
kanpapa 0:8f3eaae6248d 45 */
kanpapa 0:8f3eaae6248d 46
kanpapa 0:8f3eaae6248d 47 #include "mbed.h"
kanpapa 0:8f3eaae6248d 48
kanpapa 0:8f3eaae6248d 49 Serial pc(USBTX, USBRX);
kanpapa 0:8f3eaae6248d 50 LocalFileSystem local("local");
kanpapa 0:8f3eaae6248d 51
kanpapa 0:8f3eaae6248d 52 // ROM DATA PORT
kanpapa 0:8f3eaae6248d 53 BusIn DATA(p5, p6, p7, p8, p9, p10, p11, p12);
kanpapa 0:8f3eaae6248d 54
kanpapa 0:8f3eaae6248d 55 // ROM ADDRESS PORT
kanpapa 0:8f3eaae6248d 56 BusOut ADRS(p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24);
kanpapa 0:8f3eaae6248d 57
kanpapa 0:8f3eaae6248d 58 // Chip Enable
kanpapa 0:8f3eaae6248d 59 DigitalOut CE1(p25);
kanpapa 0:8f3eaae6248d 60
kanpapa 0:8f3eaae6248d 61 // Chip Enable2
kanpapa 0:8f3eaae6248d 62 DigitalOut CE2(p26);
kanpapa 0:8f3eaae6248d 63
kanpapa 0:8f3eaae6248d 64 // LED Status
kanpapa 0:8f3eaae6248d 65 DigitalOut busyled(LED2);
kanpapa 0:8f3eaae6248d 66 DigitalOut endled(LED3);
kanpapa 0:8f3eaae6248d 67 DigitalOut errled(LED4);
kanpapa 0:8f3eaae6248d 68
kanpapa 0:8f3eaae6248d 69 const uint8_t HIGH = 1;
kanpapa 0:8f3eaae6248d 70 const uint8_t LOW = 0;
kanpapa 0:8f3eaae6248d 71
kanpapa 0:8f3eaae6248d 72 // 2332 (4096*8byte)
kanpapa 0:8f3eaae6248d 73 //const uint16_t MAX_ADDRESS = 4096;
kanpapa 0:8f3eaae6248d 74
kanpapa 0:8f3eaae6248d 75 // 2316 (2048*8byte)
kanpapa 0:8f3eaae6248d 76 const uint16_t MAX_ADDRESS = 2048;
kanpapa 0:8f3eaae6248d 77
kanpapa 0:8f3eaae6248d 78 FILE *fp;
kanpapa 0:8f3eaae6248d 79 char out_filename[] = "/local/rom1.bin";
kanpapa 0:8f3eaae6248d 80
kanpapa 0:8f3eaae6248d 81 uint8_t ROM_read(uint16_t address){
kanpapa 0:8f3eaae6248d 82 uint8_t read_byte;
kanpapa 0:8f3eaae6248d 83
kanpapa 0:8f3eaae6248d 84 // LED ON
kanpapa 0:8f3eaae6248d 85 busyled = HIGH;
kanpapa 0:8f3eaae6248d 86
kanpapa 0:8f3eaae6248d 87 // SET ADDRESS
kanpapa 0:8f3eaae6248d 88 ADRS = address;
kanpapa 0:8f3eaae6248d 89
kanpapa 0:8f3eaae6248d 90 CE2 = HIGH;
kanpapa 0:8f3eaae6248d 91 wait_us(10);
kanpapa 0:8f3eaae6248d 92 CE1 = LOW;
kanpapa 0:8f3eaae6248d 93 wait_us(10);
kanpapa 0:8f3eaae6248d 94
kanpapa 0:8f3eaae6248d 95 read_byte = DATA;
kanpapa 0:8f3eaae6248d 96 wait_us(10);
kanpapa 0:8f3eaae6248d 97
kanpapa 0:8f3eaae6248d 98 CE1 = HIGH;
kanpapa 0:8f3eaae6248d 99 CE2 = LOW;
kanpapa 0:8f3eaae6248d 100
kanpapa 0:8f3eaae6248d 101 busyled = LOW;
kanpapa 0:8f3eaae6248d 102 return read_byte;
kanpapa 0:8f3eaae6248d 103 }
kanpapa 0:8f3eaae6248d 104
kanpapa 0:8f3eaae6248d 105 void read_rom(){
kanpapa 0:8f3eaae6248d 106 uint8_t read_data;
kanpapa 0:8f3eaae6248d 107
kanpapa 0:8f3eaae6248d 108 pc.printf("READ from ROM¥n");
kanpapa 0:8f3eaae6248d 109
kanpapa 0:8f3eaae6248d 110 if ( NULL == (fp = fopen( out_filename, "w" )) ) {
kanpapa 0:8f3eaae6248d 111 pc.printf("File open error.¥n");
kanpapa 0:8f3eaae6248d 112 errled = HIGH;
kanpapa 0:8f3eaae6248d 113 busyled = LOW;
kanpapa 0:8f3eaae6248d 114 return;
kanpapa 0:8f3eaae6248d 115 }
kanpapa 0:8f3eaae6248d 116 for (uint16_t address = 0; address < MAX_ADDRESS; address++){
kanpapa 0:8f3eaae6248d 117 if (!(address % 16)) pc.printf("¥n%04X:", address);
kanpapa 0:8f3eaae6248d 118 read_data = ROM_read(address);
kanpapa 0:8f3eaae6248d 119 fprintf(fp, "%c", read_data);
kanpapa 0:8f3eaae6248d 120 pc.printf("%02X ",read_data);
kanpapa 0:8f3eaae6248d 121 }
kanpapa 0:8f3eaae6248d 122 pc.printf("¥nSuccess!¥n");
kanpapa 0:8f3eaae6248d 123
kanpapa 0:8f3eaae6248d 124 return;
kanpapa 0:8f3eaae6248d 125 }
kanpapa 0:8f3eaae6248d 126
kanpapa 0:8f3eaae6248d 127 void blink_LED() {
kanpapa 0:8f3eaae6248d 128 for (int i = 0 ; i < 10 ; i++) {
kanpapa 0:8f3eaae6248d 129 busyled = 1;
kanpapa 0:8f3eaae6248d 130 wait(0.2);
kanpapa 0:8f3eaae6248d 131 busyled = 0;
kanpapa 0:8f3eaae6248d 132 wait(0.2);
kanpapa 0:8f3eaae6248d 133 }
kanpapa 0:8f3eaae6248d 134 return;
kanpapa 0:8f3eaae6248d 135 }
kanpapa 0:8f3eaae6248d 136
kanpapa 0:8f3eaae6248d 137 int main() {
kanpapa 0:8f3eaae6248d 138
kanpapa 0:8f3eaae6248d 139 busyled = HIGH;
kanpapa 0:8f3eaae6248d 140 endled = LOW;
kanpapa 0:8f3eaae6248d 141 errled = LOW;
kanpapa 0:8f3eaae6248d 142
kanpapa 0:8f3eaae6248d 143 CE1 = HIGH;
kanpapa 0:8f3eaae6248d 144 CE2 = LOW;
kanpapa 0:8f3eaae6248d 145
kanpapa 0:8f3eaae6248d 146 ADRS = 0;
kanpapa 0:8f3eaae6248d 147
kanpapa 0:8f3eaae6248d 148 pc.printf("ROM Reader¥n");
kanpapa 0:8f3eaae6248d 149 pc.printf("MAX Address: %5d¥n", MAX_ADDRESS);
kanpapa 0:8f3eaae6248d 150
kanpapa 0:8f3eaae6248d 151 wait(3);
kanpapa 0:8f3eaae6248d 152
kanpapa 0:8f3eaae6248d 153 // Start Sign
kanpapa 0:8f3eaae6248d 154 blink_LED();
kanpapa 0:8f3eaae6248d 155
kanpapa 0:8f3eaae6248d 156 read_rom();
kanpapa 0:8f3eaae6248d 157
kanpapa 0:8f3eaae6248d 158 fclose( fp );
kanpapa 0:8f3eaae6248d 159
kanpapa 0:8f3eaae6248d 160 // END Sign
kanpapa 0:8f3eaae6248d 161 blink_LED();
kanpapa 0:8f3eaae6248d 162
kanpapa 0:8f3eaae6248d 163 }