그동안 삽질을 거듭했던 Flash 의 결론 문서이다. 전까지 많은 실험을 통해 도출된 결과들을 정리했다.
결론
16비트 모드에서는 읽고 쓰기가 된다. 하지만 8비트 모드에서는 읽기만 된다 |
이유
명령(커맨드)이 먹지 않기 때문이다. 하드웨어 상으로 쓸 수가 없다 |
현재 하드웨어 상의 핀 연결도(16Bit)
CPU | 플래시 | |
A0 | A-1 | 서로 연결되어 있지 않다. |
A1 | A0 | |
A2 | A1 | |
A3 | A2 |
ex) 예를 들어 주소를 0x0010 을 내보냈을 때는,
CPU | 플래시 |
A0 | A-1 |
A1(0) | A0(0) |
A2(1) | A1(1) |
A3(0) | A2(0) |
A4(0) | A3(0) |
16비트에서는 CPU에서는 A0 를 쓰지 않는다. 그러므로 CPU에서 가장 낮은 번지는 A1이 된다. 플래시에서도 마찬가지로, A-1 핀을 쓰지 않는다. 아예 인식을 안한다. 그러므로 플래시의 가장 낮은 번지는 A0 가 된다.
결국 그래서, 원하는 명령(커맨드)를 때려줄수 있고, 쓰거나 읽을 수 있다.
현재 하드웨어 상의 핀 연결도(8bit)
CPU | 플래시 |
A-1 | |
A0 | A0 |
A1 | A1 |
A2 | A2 |
A3 | A3 |
8비트에서는 위와 같이 핀 매칭이 된다.
Ex) 예를 주소 0x0010 내보내면,
CPU | 플래시 |
A-1 | 값을 예측할 수 없다. |
A0(0) | A0(0) |
A1(1) | A1(1) |
A2(0) | A2(0) |
A3(0) | A3 |
A4 | A4 |
8비트에서는 16비트와는 달리 핀 매칭이 된다. 또한 A-1 이라는 주소를 사용한다.(이 핀을 가장 하위 번지로 인식한다.)
우리가 위에서 설사 0x0010 이라는 값을 CPU에서 내보내더라도, 실제로 플래시에서 인식하는 값은 0100 또는 0101 이다. 주소 값이 2배로 인식이 되는 것이다.
원래대로라면,
CPU | 플래시 |
A0(0) | A-1 |
A1(1) | A1(1) |
A2(0) | A2(0) |
A3(0) | A3(0) |
하지만, 하드웨어 상 어쩔 수가 없다.
MANID 와 Devid 를 읽기 위해서는 명령(커맨드)를 때려야 하는데, 결국 A-1 번지에 넣을 수가 없으므로, 읽을 수가 없다.
읽기의 경우에는 명령(커맨드)는 필요가 없지만, 맨 마지막 주소(A-1)에 주소 값을 전달 할 수가 없으므로, 짝수 값 또는 홀수 값만 찍혀 나왔다.