도와주세요!!
글 수 15,339
2008.07.14 14:47:36 (*.14.30.125)
8212
안녕하세요?
열심히 공부하고 있는 초보입니다.
다름이 아니라 공부하던중 remap에 대해서 이해가 안되는 점이있어서 이렇게 올립니다.
예를들어서 0x0000 0000 번지에 NOR Flash가 달려있고 0x3000 0000 에 SDRAM이 달려있습니다.
부팅후 application이 돌아가는 상황에서
0x0000 0000번지는 SDRAM Base Address로 쓰고 0x3000 0000번지가 NOR Flash Base Address가 되더군요
어떤칩을 remap을 CPU에서 지원을 해서 간단히 레지스터를 건드리면 remap이 되는 CPU가 있더군요
(삼성칩인데... )
근데 CPU에서 remap을 지원하지 않는 경우 이걸 소프트웨어로 어떻게 처리를 해야 하나요?
CPU 에서 remap 을 지원하는 MCU 는 좀 있습니다만 일반화된건 아닙니다.
그리고 이런 MCU 들이 remap 을 지원한다고 해서 소프트웨어적인 remap 이 아닙니다. 완전히 하드웨어적으로
주소가 변경되는 것이거든요. HW적인 reamp 을 지원하든 안하던 OS 가 올라간 이후에는 아래의 3가지 형태로 분류됩니다.
1. MMU 가 있다. --> 완전한 가상메모리 사용, 비싼 하드웨어 코어
2. MPU 가 있다. --> 불완전한 가상 메모리 사용, 조금싼 하드웨어 코어
3, MMU,MPU 모두 없다 --> 단일 메모리 사용, 여러개의 프로세스 실행 불가, 테스크 단위의 실행
질문하신
"CPU에서 remap을 지원하지 않는 경우 이걸 소프트웨어로 어떻게 처리를 해야 하나요?"
위의 질문에 대한 답변은.. "부트로더수준에서 remap 을 활성화 한 후 커널로 진행합니다. " 입니다.
거의 대부분 활성화 하죠. 커널에서는 HW remap 에 대해서는 별반 고민하지 않습니다.
부트로더에서는 HW remap 이 있으면 아주 편리합니다. 인터럽트가 쉽게 처리 되거든요.. 이부분 설명하기엔 넘 길구..
플래시로 부팅하는 32비트에서 인터럽트 루틴에 대해 고민해 보시면 아실꺼에요 ^^
아울러 가상메모리에 대한 자료를 찾아보세요