예, 부트 로더 부팅 시스템 일반적으로뿐만 아니라 기본 부팅 경로를 차단하는 메커니즘을 제공하고 다른 펌웨어를 다운로드 할 수 있도록 대신 실행뿐만 아니라 다른 기능이 있습니다 (깜박임처럼).
전통적인 ROM에는 인터페이스, 주소, 데이터, 칩 선택, 읽기/쓰기 등의 전통적인 RAM이 있습니다. 그런데도 ROM을 구입할 수는 있지만 핀 부동산 관점에서 볼 때 SPI 또는 i2c 기반, 느린 것입니다. 달려가는 것은 바람직하지 않지만 한 번 읽은 다음 용납하십시오. 최신 플래시 기술은 읽기 방해와 관련하여 문제를 겪었을 수 있습니다. 코드가 꽉 짜인 루프에서 동일한 지침을 읽거나 다른 이유로 플래시가 너무 빨리 읽혀지면 읽기가 잘못 리턴 될 수 있습니다 데이터로 인해 프로그램이 코스를 변경하거나 충돌 할 수 있습니다. 또한 PC와 다른 리눅스 플랫폼은 NV 스토리지 (하드 디스크)에서 램으로 커널을 복사 한 다음 거기에서 실행되므로 플래시에서 RAM으로 복사하고 RAM에서 실행하는 것이 편안함을 제공하며 종종 플래시보다 빠릅니다. 따라서 플래시를 사용하지 않는 많은 잠재적 인 이유가 있지만 시스템에 따라 플래시에서 제대로 실행하는 것이 가능할 수도 있습니다 (일부 시스템에서는 해당 플래시가 직접 액세스 할 수없고 실행 가능하지 않음). 실행 가능/부팅 가능).
램에 무엇인가로 플래시를 프로그램하면 코딩상의 어려움이 간단 해집니다. 램에서 읽고 플래시에 쓰고 플래시에서 읽고 램에 쓰는 코드를 한 번 만들고 디버깅 할 수 있습니다. 끝난. 이제는 직렬에서 RAM으로 또는 RAM에서 직렬로 데이터를받는 별도의 코드로 작업 할 수 있습니다. 끝난. 그런 다음 이더넷이나 USB 또는 동일하게 작동하는 코드를 작성하십시오. 당신은 프로토콜을 발명하거나 타이밍 문제를 해결할 필요가 없습니다. 플래시 쓰기는 매우 느리며 적당한 속도의 xmodem조차도 너무 빠르기 때문에 xmodem이나 다른 직렬 기반 플래시 로더 대신에 RAM에 데이터를 버퍼링하여 작업을 완전히 분리 할 수 있습니다 큰 RAM 기반의 FIFO를 사용하여 데이터를 RAM으로 이동 한 다음 RAM에서 플래시로 개별적으로 이동하십시오. 다른 인터페이스와 동일합니다. 기술적으로 데이터를 버퍼링하고 다운로드 인터페이스에서 곧바로 플래시로 전환 할 수 있다는 착각을 불러 일으킬 수 있습니다. 프로토콜에 따라 프로그래밍하기 전에 RAM에 플래시 페이지가 하나만 필요하도록 프로토콜을 전송하는 것은 기술적으로 가능합니다. 플래시. 더 오래된 병렬 섬광으로 당신은 나가 생각한 대부분의 사람들이 밖으로 생각한 매우 차가운 무언가를 할 수 있었다. 알려진 시간 동안 플래시 페이지에 쓰는 것을 멈 추면 플래시가 자동으로 해당 페이지를 프로그램하기 시작하고 완료되기 전에 10ms 정도 기다려야합니다.여러분이 순차 주소를 프로그램해야만했던 것과 그 기간에 다음 주소에 대한 새로운 데이터를 얻어야하고 높은 직렬 포트 속도 등을 요구한다면 여러분은 동일한 주소를 계속해서 반복 할 수 있다는 것입니다. 동일한 데이터와 플래시가 페이지를 프로그래밍하기 시작하지 않으며 다운로드 인터페이스가 매우 느려질 수 있습니다. 연속 플래시는 다르게 작동하며 트릭이 필요 없거나 다른 트릭을 사용합니다.
RAM/플래시는 산업 용어가 아닙니다. 이는 .text가 rom (플래시)이고 .data이고 .bss가 ram에 있음을 의미합니다. main()이 호출되기 전에 .data의 초기 상태 복사본이 flash에서도 ram에 복사되고, 마찬가지로 main()이 호출되기 전에 .bss가 0으로 설정됩니다. 부트 스트랩이 어떻게 일반적인 방식으로 작동하는지에 대한 요지를 얻으려면 gnu 소스 (glibc, 또는 gcc)에있는 대부분의 플랫폼에서 crt0.S를 살펴보십시오.
부트 로더가 리눅스 나 다른 운영체제를 실행할 필요는 없지만 uboot가 필요하지는 않지만 매우 유용합니다. 리눅스는 꽤 쉽습니다. 커널과 루트 파일 시스템을 복사하고, 메모리에 몇 가지 레지스터 또는 태그를 설정하거나, 둘 다 커널의 진입 점으로 분기하면 리눅스가 거기에서 인계합니다. 리눅스는 너무 복잡하기 때문에 이더넷과 같은 고속 인터페이스를 활용할 수있는 복잡한 부트 로더를 사용하는 것이 바람직합니다 (직렬 또는 저속으로 제한되는 것보다).
좋은 설명 주셔서 감사합니다. –