기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
제가 보고 있는 CPU는 S5PV310 인데요
map-s5p.h 파일을 보고 있는데 아래와 첨부한 그림과 같이
S5P_VA_CHIPID가 S3C_ADDR(0x00700000)으로 정의가 되어있습니다.
제가 볼 땐 S5P_VA_CHIPID가 실제 CHIPID의 어드레스는 Base Address = 0x1000_0000입니다.
그렇다면 제가 유추할 땐 S5P_VA_CHIPID가 아마도 가상 어드레스를 말하고 있는 것 같은데..이게 맞나여?
그렇다면, 보통 리눅스 드라이버를 짤 때는 ioremap()함수를 통해서 가상 어드레스를 받아 오잖아여..
ioremap()연산을 하지 않고 가상 어드레스를 직접 정의 할 수 있는 것이 이해가 가질 않더라구여..원래 이렇게도
사용할 수 있는 것인가여? ioremap()함수를 사용하지 않고 가상 어드레스를 임의대로 정의가 가능한 것인가여?
결론적으로
CHIPID의 실제 어드레스( 0x1000_0000) 와 S3C_ADDR(0x00700000) 같다는 등식이 성립하지 않아서여 ㅠㅠ
고수님들의 친절한 답변 부탁드립니다.
chip 내부 register들 중 특정한 부분은 저렇게 지정해서 사용합니다.
왜냐하면, vmalloc의 end를 결정하기 위해서입니다.
또, 필수적인 디바이스이기 때문에도 그렇고요.
이 외에 빼고/넣을 수 있는 장치들은 ioremap을 활용하는 경우가 많습니다.