ARM 디바이스에서 어떻게 외부 컨트롤러의 레지스터에 접근할 수 있나요?

firstpenguin27의 이미지

최근 마이크로프로세서프로그래밍 강의를 수강하고 있습니다.
PXA320 칩셋이 올라간 MV320이라는 보드에서 디바이스를 제어하는 프로젝트가 있는데
정말로 하나도 안가르쳐주고 보드만 던져주면서 알아서 하라고 하시네요.
데이터시트 읽는 법부터 임베디드 개발 세팅까지 스스로 알아가고 있습니다.
중간에 카메라 디바이스에 접근하는 경우가 있는데, arm assembly로 짜려고 하니 v4l2를 사용하기보다
직접 디바이스에 접근해 데이터를 얻어오려고 합니다. pxa320에는 그래픽 캡쳐 컨트롤러가 있어서
이를 통해 카메라에 접근할 수 있더군요. 데이터시트를 보면 관련 레지스터의 주소가 0x44000000, 0x44000032 등등의 순서로 나와있습니다.
그런데 일반적인 어플리케이션에서 이런 물리적 주소에 접근하는 방법을 모르겠네요.

지금까지 해본 방법으로는
단순히 포인터에 물리적 주소를 넣고 설정 -> segmentation fault
dev/mem을 open해서 mmap 시도 -> Unhandled fault: imprecise external abort (http://www.linuxquestions.org/questions/linux-embedded-78/how-to-access-physical-memory-directly-762044/)
phys_to_virt 등 가상메모리로 매핑 -> 함수가 존재하지 않음
정도가 있습니다.

물리적 메모리에 접근하는건 너무 기본적인거라 아무리 문서를 찾아도 딱히 나오는게 없네요.
제가 방법을 잘못 접근하고 있는건지, 혹시 디바이스 드라이버를 짜야하는건지.
조언 부탁드립니다.

bushi의 이미지

"dev/mem을 open해서 mmap" 하면 됩니다.
RAM 영역은 정책적으로 금지되어 있고,
그 외 CPU 가 접근할 수 있는 영역이라면 모두 가능합니다.

그리고, page size 단위로 정렬해서 사용해야 합니다.
0x40000004 를 접근하고 싶다면 0x40000000 을 mmap 하고 +4 를 해서 접근해야 한다는 뜻입니다.

마지막으로, CPU 레지스터 접근이라면 MAP_NORESERVE 가 필요할 수도 있습니다.

그런데, "arm assembly로 짜려고 하니 v4l2를 사용하기보다" 가 무슨 뜻인가요 ?
뭘 상상하고 계신지 몰라도,
CPU 에 내장된 camera interface 를 제대로 사용하려면 interrupt 처리는 물론이고 DMA 까지 사용해야 그럭저럭 굴러갑니다.
이미 작성되어 있는 v4l2 드라이버를 사용해서 raw 데이타를 얻어온 뒤,
post process 과정만 유저모드에서 arm assembly 를 사용하시건 pascal 을 사용하시건 마음대로 하세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.