최소 컴퓨터
-
초기 생각: 과거에는 키트를 주문하여 집에서 컴퓨터를 조립할 수 있었음. 현대 컴퓨터는 복잡한 칩으로 구성되어 있으며, 많은 전력을 필요로 함. 하지만, 현대 컴퓨터를 집에서 쉽게 조립할 수 있는 키트로 만들 수 있을지에 대한 실험을 시작함.
-
목표: Debian Linux, vi, gcc, make를 실행할 수 있는 컴퓨터를 만드는 것. 8MB RAM, 1 MIPS CPU, SD 카드, USB를 목표로 설정함.
부품 선택
-
USB 인터페이스: 8핀 칩 중 USB를 지원하는 칩은 거의 없음. PL2303GL과 ATTINYx5 시리즈가 가능함.
-
RAM: SOIC-8 PSRAM 사용. 8MB RAM을 쉽게 구할 수 있음.
-
마이크로컨트롤러: 여러 옵션을 고려했으나, STM32G031J6가 가장 적합하다고 판단됨. 32KB 플래시, 8KB RAM, 64MHz 클럭 속도를 가짐.
하드웨어 설계
-
콘솔: UART 핀은 다른 것과 결합할 수 없음.
-
RAM: SPI PSRAM은 QSPI 모드를 지원하나, 핀 수 제한으로 일반 SPI 모드 사용.
-
SD 카드: 핀 부족 문제를 해결하기 위해 RAM과 SD 카드를 동일한 핀에 연결하는 방법을 고안함.
소프트웨어 이야기
-
에뮬레이터: 기존 MIPS 에뮬레이터를 재사용함. 32KB 플래시를 부트로더와 메인 코드로 나눔.
-
부트로더: SD 카드에서 펌웨어 업데이트를 지원하는 부트로더를 개발함.
성능
-
오버클럭: STM32G031은 64MHz로 지정되어 있으나, 150MHz까지 오버클럭 가능함. 148MHz에서 에뮬레이트된 MIPS CPU는 약 1.65MHz MIPS R3000과 동등한 성능을 보임.
조립
-
초기 조립: SD 카드 소켓, 커패시터, 저항, 마이크로컨트롤러, USB-시리얼 칩을 순서대로 납땜함.
-
2차 조립: 부트로더를 마이크로컨트롤러에 프로그래밍한 후, RAM 칩을 납땜함.
다운로드 및 사용
-
파일: 필요한 모든 파일은 다운로드 패키지에 포함되어 있음. SD 카드 이미지를 작성하고, 펌웨어를 SD 카드에 복사하여 부트로더가 첫 부팅 시 이를 인식하도록 함.
-
사용법: 장치는 셸 프롬프트로 부팅되며, 추가로 bash를 실행할 수 있음. RAM 부족을 방지하기 위해 스왑 파일을 사용하는 것이 권장됨.