현재 임베디드 arm Linux를 개발하기 위해 smdk2416(s3c2416)을 사용하고 있습니다.
커널은 64MRAM에서 작동합니다. 최근에는 RAM을 64M에서 128MB로 늘려야 했습니다. 즉, 뱅크0에 64MB, 뱅크1에 64MB가 필요했습니다.
bank0's physical address is at 0x30000000
bank1's physical address is at 0x38000000
U-Boot에서 Bank0을 0x30000000에서 0xc0000000으로, Bank1을 0x38000000에서 0xc4000000으로 매핑했습니다.
U-Boot에서 이 주소(은행의 물리적 및 가상 주소)에 대해 메모리 테스트를 시도했습니다.
bootarg 메모리 태그를 사용하여 Linux 커널을 부팅하고 mem=128M
64MB 이상의 메모리를 사용하는 간단한 프로그램을 실행할 때. 그런 다음 "커널 널 포인터 역참조" 메시지와 함께 시스템이 충돌합니다.
CONFIG_DISCONTIGMEM
에 정의된 것이 있는 것을 발견했지만 src/include/asm-arm/memory.h
의 "커널 기능/메모리 모델"을 보면 make menuconfig
"플랫 메모리" 옵션만 있습니다.
Linux 커널이 전체 128MB에서 실행되도록 구성/코드를 어떻게, 어디서 수정해야 합니까?