[t:/]$ 지식_

linux kernel alloc : continous physical memory 4 DMA

2009/03/10

DMA를 쓰려면 보통 물리주소로 된 연속적인 메모리 공간이 필요하다.
커널 내에서 프레임버퍼 할당 부분을 참조하여 물리적 연속 메모리 공간을 확보해보았다.

            struct device *eedev; // 일단 전역변수.... 
            u_int qqms;
            dma_addr_t qqmd;

            qqms = PAGE_ALIGN(1000000 + PAGE_SIZE);
         
            tt = qqms;
            buf = dma_alloc_writecombine(eedev, qqms, &qqmd, GFP_KERNEL);

            dma_free_writecombine(eedev, qqms, buf, qqmd);  // 해제하는 부분..

            // 물리 주소는 qqmd 로 쓰면 됨...

이런 선형적 물리 주소 공간은 쓰임새가 따로 있다.
그건 나중에..









[t:/] is not "technology - root". dawnsea, rss