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

Dependencies:   mbed

Committer:
kanpapa
Date:
Sat Aug 13 05:34:32 2011 +0000
Revision:
1:74597dff65ee
Parent:
0:8f3eaae6248d
fix comments.

Who changed what in which revision?

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