Kazuhiro Ouchi
/
ROM_Reader
ROM Reader (2332/2316) http://mbed.org/users/kanpapa/notebook/rom-reader/
main.cpp@1:74597dff65ee, 2011-08-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |