안녕하세요.
리눅스나 솔라리스에서 바이오스 절대 주소를 참조 하고 싶습니다.
윈도우/도스 머신에서는
int *timer = (int *)0040006c 를 하게되면
바이오스 타이머가 직접 에세스 되서
사용할수 있는데 리눅스/ 솔라리스에서는 안되더군요
절대 참조 주소를 아시거나 방법을 아시는분 좀 알려주세요.
절대 참조주소가 무엇인지를 잘 몰라서..
음. linux에서는 Physical 주소로 바로 접근이 안되고..(데이타시트주소..) Logical address로 바꾸어 접근해야 합니다.
ioremap을 쓰시죠.. 아님.. phy_to _virt()인가? 음. 비슷한 함수인데.. 이런거 쓰시면 되여..
근데 이거 kernel 프로그래밍 질문아닌가?
Be Postive!
옛날 도스 방식으로 한다면 FAR Pointer(Turbo C)의 사용과 비슷한거 같은데요
Unix계열에서 사용자 프로그램이 Bios영역등 특별한 곳의 메모리를
직접 접근할 수 없습니다.
위에 예로 든 타이머를 얻기 위해서 라면, 유닉스에서 타이머의 역할을 할 수 있는 함수가 있습니다. 또는 rtc라는 device가 있는데(물론 커널 컴파일시 설정된 경우) 이런것을 이용해도 될것 같아요..(지금 정확히 기억나질 않아서..)
같은 맥락으로, Memory Mapped IO(Video access등)을 직접 할 수 없습니다.
https://nicesj.comhttps://blog.nicesj.com
mmap();으로 구하는게 아닐런지요?
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
www.kelp.or.kr 에 가시면..
mmap()에 대한 example 코드 하나 정도 있을 겁니다.
직접 주소를 읽기 위한 함수로 알고 있습니다.
윗분과 같은 의견이네요..
만약에 어떤 특정 하드웨어의 주소를 고정하시고( memory에 맞게.. )
읽고 쓰시고 제어를 하시려면. 드라이버를 구현하시는게
미래를 위해서 좋을 듯 합니다..
mmap쓰면 되겠네요 =_=;;
/dev/mem이 physical memory를 가리키는 장치라고 하니.. mmap으로 필요한 부분의 memory를 매핑시켜서접근하시면 되겠네요..
텍스트 포맷에 대한 자세한 정보
<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]
절대 참조주소?
절대 참조주소가 무엇인지를 잘 몰라서..
음. linux에서는 Physical 주소로 바로 접근이 안되고..(데이타시트주소..)
Logical address로 바꾸어 접근해야 합니다.
ioremap을 쓰시죠..
아님.. phy_to _virt()인가? 음. 비슷한 함수인데..
이런거 쓰시면 되여..
근데 이거 kernel 프로그래밍 질문아닌가?
Be Postive!
음...
옛날 도스 방식으로 한다면 FAR Pointer(Turbo C)의 사용과 비슷한거 같은데요
Unix계열에서 사용자 프로그램이 Bios영역등 특별한 곳의 메모리를
직접 접근할 수 없습니다.
위에 예로 든 타이머를 얻기 위해서 라면, 유닉스에서 타이머의 역할을 할 수 있는 함수가 있습니다. 또는 rtc라는 device가 있는데(물론 커널 컴파일시 설정된 경우) 이런것을 이용해도 될것 같아요..(지금 정확히 기억나질 않아서..)
같은 맥락으로, Memory Mapped IO(Video access등)을 직접 할 수 없습니다.
https://nicesj.com
https://blog.nicesj.com
음...
mmap();으로 구하는게 아닐런지요?
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
mmap() 함수를 먼저 찾아 보세요..
www.kelp.or.kr 에 가시면..
mmap()에 대한 example 코드 하나 정도 있을 겁니다.
직접 주소를 읽기 위한 함수로 알고 있습니다.
윗분과 같은 의견이네요..
만약에 어떤 특정 하드웨어의 주소를 고정하시고( memory에 맞게.. )
읽고 쓰시고 제어를 하시려면. 드라이버를 구현하시는게
미래를 위해서 좋을 듯 합니다..
음...
mmap쓰면 되겠네요 =_=;;
/dev/mem이 physical memory를 가리키는 장치라고 하니.. mmap으로 필요한 부분의 memory를 매핑시켜서접근하시면 되겠네요..
https://nicesj.com
https://blog.nicesj.com
댓글 달기