임베디드 보드에서 메모리 접근에 대해 질문이 있습니다.
글쓴이: katalog / 작성시간: 목, 2007/06/21 - 7:10오전
안녕하세요. 임베디드를 공부하고 있는 학생인데요
제가 공부하다 보니까 메모리 접근에 대한 부분에 궁금증이 생겨 질문을 올립니다.
이런저런 매뉴얼들을 보니 메모리 접근에 DMA, MMU, Memory Controller등이 들어가던데
제가 이해하기로는 LDR이나 STR 같은 명령이 호출되면
DMA -> MMU -> Memory Controller -> CPLD -> SDRAM / NAND FLASH
순서로 접근해서 메모리 주소를 찾아내는것 같은데 제대로 보고 있는건지 궁금합니다 ^^;
그리고 이게 아니라면 어떤 순서로 들어가는지, 그리고 MMU가 enable 됐을때랑 아닐때
어떻게 다르게 들어가게 되는지 궁금합니다..
답변 부탁드리고.. 행복한 하루 되세요!
Forums:
먼저...
용어 개념 정립부터 다시 하셔야 할 것 같습니다.
CPU에서는 MMU가 있다면 MMU에서 메모리 주소를 변환하고 해당 메모리에 접근합니다. 이 과정에서 Memory Controller는 해당 메모리 주소에 연결된 장치와의 접근을 제어합니다. (SDRAM이라면 SDRAM에 맞는 하드웨어 시그널을 발생시키고 NAND나 CPLD 같은 장치라면 그에 맞게 시그널을 발생시키는 역할입니다) DMA는 메모리를 고속 전송하기 위한 방식이며 이것을 통제하는 레지스터에 DMA 동작을 지정하고 개시하면 메모리 영역간의 전송이 이루어지는 것입니다. Memory Controller부터의 과정은 전부 물리적인 주소를 사용하며 MMU는 가상 메모리 주소에서 물리 주소의 변환을 담당합니다.
[[MMU] -> Memory Controller] -> NAND/CPLD/SDRAM ...
DMA Controller는 CPU에 내장된 경우도 있고 외부에 따로 나와 있는 경우도 있습니다. 단순히 레지스터 제어의 측면에서 본다면 CPU에 연결된 주변장치 정도로 생각하셔도 됩니다. (Memory Controller도 유사합니다)
MMU가 없을 경우에는 CPU에서 발생시킨 주소는 무조건 CPU의 물리적 Address Pin에 1:1로 대응됩니다. MMU가 있을 경우에는 명령어에서 발생시킨 주소가 항상 물리적 주소와 일치하지는 않습니다. 가상의 주소를 만들 수 있고 이것을 실제 물리 주소와 매핑시키는 장치가 MMU입니다.
감사합니다^^
답변 감사합니다. 많은 참고가 되었습니다. ^^
^^
답변 감사합니다 ^^
댓글 달기