다른 많은 사람들과 마찬가지로, 나는 Ben Eater의 시리즈에서 영감을 얻어 빵 보드에 8 비트 컴퓨터를 만드는 것을 안내해 주었으며 그의 작품을 복제하고 싶었습니다 (그리고 미래에 내 아이디어로 디자인을 개선 할 수도 있습니다). 그러나 구매해야 할 구성 요소 목록을 만들 때 요즘 eeprom 칩이 거의 볼 수 없다는 것을 알았 으므로이 문제를 해결하는 방법이 궁금했습니다.
일부 연구 후, SST39SF010 플래시 칩은 28C16 EEPROM 칩 벤 먹는 사람이 사용하는 28C16 EEPROM과 매우 유사하며 글쓰기/읽기 속도, 유지 시간, 전력 beneater/eeprom-programmer 등 여러 가지 개선 사항이 있음을 알았습니다. slu4coderSST39SF010-FLASH-Programmer 내가 필요한 것일 수 있습니다. 그러나 제 생각에는 Ben의 프로젝트 뒤에있는 가르침 아이디어와 관련하여 매우 다른 스타일로 작성되었습니다.
그래서 나는 Slu4coder보다 덜 최적화되었지만 코딩 경험이 많지 않고 플래시 프로그래밍에 접근하려는 초보자에게 더 적합하다고 생각하는 내 자신의 프로그래머를 작성하기로 결정했습니다. 이런 이유로, 나는 코드를 댓글을 달고 내 스타일에서 가능한 한 명확하게하려고 노력했다. 내 프로젝트는 또한 앞서 언급 한 두 프로젝트와 마찬가지로 두 개의 74HC595 칩과 함께 Arduino Nano를 기반으로합니다.
이 소프트웨어를 향후 SST39SF0X0 일반 플래시 칩과 호환되도록 확장 할 수 있습니다. 당신이 여기에 도착했고 당신이 고용량 칩을 플래시해야한다면, 당신은 아마도이 프로젝트를 스스로 확장 할 수있을 것입니다. :)
내 코드에는 컴파일 시간에 활성화 및 구성 할 수있는 데이터 쓰기 및 명확한 칩 기능에 대한 점검 메커니즘도 포함시켰다.
macro WRITE_CHK 기본적으로 0 으로 정의되지만 검사를 활성화하기 위해 1 으로 변경할 수 있습니다. 이 경우 메모리에 작성된 모든 바이트 데이터의 모든 바이트가 자동으로 확인되며 읽기가 예상 데이터와 다른 경우 소프트웨어가 오류가 발생합니다. 자세한 내용은 코드 내부의 writeMem() 함수를 참조하십시오.
매크로 CLR_CHK 는 기본적으로 0 으로 정의되지만 점검을 가능하게하기 위해 양수로 변경할 수 있습니다. 이 경우 Clear Chip 명령 후에 매크로에 할당 된 숫자는 플래시에서 읽은 임의 바이트 수입니다. 이러한 바이트 중 하나가 0xFF (Clear Chip의 기본값)와 다른 경우 소프트웨어가 오류가 발생합니다. CLR_CHK_MAX 라는 또 다른 매크로가 있는데, 이는 임의의 함수에서 오는 가장 높은 주소를 정의합니다. 기본적으로 SST39SF010에서 가장 높은 주소 바이트 131071 (2^17) -1입니다. 그러나 플래시 메모리는 몇 가지 첫 번째 바이트에만 사용되므로 이전 쓰기주기에 사용 된 바이트 만 확인하는 것이 유용하기 때문에이 매크로를 구성 할 가능성을 제공하고 싶었습니다. 자세한 내용은 코드 내부의 기능 eraseAll() 를 참조하십시오.