내가 아는 한 stm32nucleoF429zi에는 하드웨어 MMU가 없지만 Linux 커널 구성 옵션에서 MMU 옵션을 비활성화할 수 있습니다.
이렇게 하면 stm32 F429zi에서 Linux를 실행할 수 없는 이유는 무엇입니까? 왜 uCLinux만 실행할 수 있나요? Linux 커널 구성에서 MMU를 비활성화하면 uCLinux는 실행할 수 있지만 Linux는 실행할 수 없는 이유는 무엇입니까?
답변1
stm32f429에서 메인라인 Linux를 쉽게 실행할 수 있습니다.그리고 다른 MMU가 없는 MCU도 있습니다. 저는 stm32h743에서 메인라인 Linux 커널을 실행하고 있습니다(stm32f4와 같은 MMU도 없습니다).
하지만유일한 문제는귀하의 개발 보드에는외부 메모리.
리눅스를 실행하기 위해최소 4MB RAM이 필요합니다..
그러니 꼭 구매하시길 추천드려요STM32F429NI MCU를 갖춘 평가 보드. 평가 보드에는 SD 카드 슬롯도 있습니다.
마더보드에서 Linux를 실행하는 단계:
- 다운로드유스타트그리고리눅스 커널그리고 바쁜 상자.
- u-boot 및 Linux 커널과 비지박스 빌드(비지박스를 사용하여 rootfs 생성용)이 가이드).
- stm32 내부 플래시 메모리에 u-boot 굽기
- SD 카드 준비(20MB FAT 파티션 생성 및 대형 EXT4 파티션 생성)
- 부팅 파일을 sdcard에 복사합니다(마더보드의 dtb 파일과 커널의 zImage를 fat 파티션에 복사하고 rootfs를 ext4 파티션에 복사).
- u-boot 명령을 사용하여 DTB 및 zImage를 DRAM에 로드하고 커널을 시작합니다.
유용하고 필요한 u-boot 명령:
- DTB 및 zImage를 로드하려면 "fatload" 명령을 사용하십시오(예: fatload mmc 0:1 ${kernel_addr_r} zImage).
- "setenv bootargs" 명령을 사용하여 설정합니다.부팅 매개변수예를 들어(setenv bootargs console=ttySTM0,115200n8 root=/dev/mmcblk0p2 rw rootwait loglevel=7 init=/linuxrc).
- 예를 들어 "bootz" 명령을 사용하여 커널을 부팅합니다(bootz ${kernel_addr_r} - ${fdt_addr_r}).
추신: uClinux는 오래되고 쓸모가 없습니다. 최신 메인라인 리눅스 커널을 사용할 수 있다면 사용하지 마세요.