[문의]linux Driver작성시 연속된 메모리 할당방법
글쓴이: kimmir71 / 작성시간: 목, 2013/06/13 - 5:22오후
윈도우즈 Driver개발하다가 linux Driver도 함께 개발 하려 하는대요.
PADDR paPhyAdr;
PDMA_ADAPTER pDMA;
unsigned char *bpDMAMem;
윈도우즈에서는 bpDMAMem = (unsigned char *)(*pDMA->DmaOperations->AllocateCommonBuffer)(pDMA, 1024*1024*3, &(paPhyAdr), FALSE);
이런식으로 연속된(non page) kernel메모리와 Physical메모리 3MB를 할당해서 사용 했습니다.
리눅스에서는 연속된(non page) Physical메모리 3MB를 할당해서 사용할수있는 방법이 있는지 알고자 합니다.
아시는분 있으면 좀 알려 주세요.
몇일 web찿았지만 찾을수 없서서 문의 합니다.
Forums:
임베디드 쪽이라면, 부트 아규먼트에서 OS 에서
임베디드 쪽이라면, 부트 아규먼트에서 OS 에서 사용할 메모리 지정하고 나머지 메모리를 드라이버에서 메모리 맵핑해서 쓰는 방식이 있을 겁니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
답변 감사합니다.
환경은 일반 PC의 우분투 환경입니다.
1M Byte이상의 연속된 메모리를 할당할수 있는 방법이나 함수 알고 계시면 부탁 드려요
dma 때문에 연속된 메모리가 필요한
dma 때문에 연속된 메모리가 필요한 거라면
scatter list 사용하시면 됩니다.
http://poplinux.tistory.com/75
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
답변 감사 합니다.
1.kmalloc처럼 임의의 page mapping하지 않고 사용할 수 없을까요.
2.말씀하신것처럼 하면 page mapping을 해야하는것 같은데요.
sample코드로 작성되어 있는것 있으시면 부탁 드려요.
http://lxr.linux.no/linux+v3.
http://lxr.linux.no/linux+v3.10.2/+search?search=dma_free_coherent
http://lxr.linux.no/linux+v3.10.2/+search?search=dma_alloc_coherent
댓글 달기