기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요.

요새 연구실에서 Arndale 보드로

Xen ARM과 ARM의 Hypervisor Extesion쪽을 공부하고 있습니다.


요즘 커널에서는 Kernel 빌드시에 dtb도 같이 빌드하고

부팅시 dtb를  통해 Kernel에게 하드웨어 정보를 전달하는걸로 알고 있습니다.


Anrdale의 u-boot에서

'bootargs = Kernel Address - dtb Address' 사용하고 있습니다.


dts파일을 열어보면 트리형태의 자료구조라는거는 알겠는데...

이걸 왜 컴파일하여 binary형태로 만드는건지 잘 모르겠고,

이 바이너리 실행을 통해? 

Kernel에게 하드웨어 정보를 전달한다는 개념이 잘 이해가 안됩니다.


또한 궁금한점은

dtb를 이용하기 전의 예전 Kernel에서는 디바이스 정보나 CPU Core정보같은

하드웨어 정보를 어떤식으로 얻는지 알고 싶습니다.


감사합니다.




쭈암

2014.07.09 00:59:06
*.131.225.179

바이너리로 안만들면 어떻게? XML파서라도 커널에 내장시켜야 할까요?

Supsupi

2014.07.09 01:53:53
*.254.202.140

예. 그래야 하는거 아닌가요? 바이너리로 바꾸더라도 결국 바이너리를 커널에서 파싱해야하는거 아닌가요?


쭈암

2014.07.12 01:49:20
*.72.195.29

Libc 도 없는데요. 스트링처리하다 커널 패닉이 날수도 있고,

별 소용도 없는 코드로 커널 메모리만 먹을 겁니다

Supsupi

2014.07.09 01:57:17
*.254.202.140

http://www.informit.com/articles/article.aspx?p=1647051&seqNum=5


자문 자답합니다.

예전에 구글링에서 못 발견 했던 곳인데 제가 질문했던 내용들이 위 링크에 다 있는거 같습니다.

하지만 어떤식으로 device tree를 binary 형태로 바꾸는지 내용은 없는거 같습니다.


감사합니다.

고도리

2014.07.09 06:59:44
*.200.239.210

1. parser가 내장되어 있습니다.

2. dtb를 사용하는 이유는 코드의 유지보수 때문이라고 얘기합니다.

다만 실제를 보면.....드라이버 코드는 parser와 연결이 되어 있고, 이 parser는 dtb에서 관련 정보를 받아서

driver코드에 연결해 주는 역할만 합니다.

==> 쉽죠?....ㅎㅎ, 하지만, 실제로는 그 연결부분이 보이지 않기 때문에 꽤 어려운 내용이고


서로 어떤 부분을 어떻게 parsing하는지에 대한 부분을 일일이 알아야 하기 때문에 또 하나의

언어를 공부하는 것과 같다라고 보시면 됩니다.


----------------------

dtb를 만드는 dts를 보시면 관련 cpu에 대한 언급이 있습니다.

이 cpu를 string으로 받아서 적절하게 cpu chip id를 읽은 후에 비교를 해서

관련 코드를 셋업합니다.


그리고, 제가 간단하게 써 놓은 글도 참고가 되실겁니다.

고도리

2014.07.09 07:00:12
*.200.239.210

http://www.aesop.or.kr/Board_Documents_Linux_Kernel/111747

Supsupi

2014.07.09 08:51:21
*.203.232.74

답변 감사드립니다.

Linux문서들도 confidential이라니...

 

이래서 정보를 찾으려 했도 찾을 수 없었군요..

답변 감사드립니다.(_ _)

sakago2862

2014.07.10 23:59:59
*.111.135.254

저도 dtb이해 하는데 무척 애먹은 기억이 있네요.

고도리님 말씀대로 코드 유지보수 때문인데 개발자 입장에서는...유지보수가 되는건지......

예전에는 platform device에 등록을 할려면 일일이 작없을 해주었지만 이제 dtb에 넣어주기만 하면 

sysfs devices에 등록되어지는 부분은 정말 편리 하긴 하더군요,,(노드 작업을 해주어야 되지만....)


Supsupi

2014.07.12 01:40:13
*.254.202.140

답변 감사드립니다.


Xen 4.2 버젼 이하에서는 DomU생성시에 하드웨어 정보를 dtb로 넘겨주는데.

이쪽 코드를 분석중인데 여전히 잘 이해가 안됩니다. ㅠㅠ

List of Articles
번호 제목 글쓴이 날짜 조회 수
6108 멀티코어에서 각 코어는 모드별 스택주소를 공유하는게 맞나요. [2] 쁘앙쁘앙 2014-08-20 1276
6107 구글 CTS 인증 문의 드릴께요... 젤리빈 4.2.2 입니다. [2] 천동이 2014-08-14 1555
6106 ARM RESET VECTOR 와 Memory remapping 헷갈려요. [8] 쁘앙쁘앙 2014-08-12 2080
6105 리눅스 파일 크기가 달라요 [1] 김민욱 2014-08-12 1209
6104 Arndale octa (exynos 5420)보드 모듈 인스톨 관련 [1] 티모 2014-08-08 1431
6103 android mediaserver 만 restart어떻게 시키나요? [1] 시안 2014-08-05 1237
6102 Arndale Board용 linaro Kernel Build 방법? [1] Supsupi 2014-08-05 1528
6101 rtems 를 kvm으로 돌리려고 하는데 문제가 생겼습니다. dudu 2014-07-29 1264
6100 안드로이드폰을 이용한 CCTV 서버 및 클라이언트 구현 관련...... [2] blue0sky 2014-07-23 1558
6099 BCH Algorithm 관련 질문 [1] 주니74 2014-07-22 1438
6098 system call process 질문드립니다. [4] Supsupi 2014-07-22 1462
6097 인터럽트의 우선 순위를 바꾸려면 어떻게 하면 될까요? 혜민아빠 2014-07-17 1370
6096 CHIP ID 가 안읽어지는 경우 [3] lveritas 2014-07-15 1523
6095 키 이벤트 질문 드립니다. 하하호호하하 2014-07-15 1275
6094 sleep mode진입후 wakeup시 간혹 app가 안살아나는경우가 있는데요 [2] 문철민 2014-07-15 1547
6093 혹시 구글맵 올려보신 분 계신가요?? 천동이 2014-07-11 1305
6092 임베디드 리눅스 shutdown시에 필요한 전원 on상태의 유지시간? [2] 김민욱 2014-07-11 1663
6091 소스 분석하실때 주로 어떤 방법들을 이용하는지 알고 싶습니다. [4] Supsupi 2014-07-10 1699
6090 kikat 4.2.2 에서 surfaceflinger 초기화 하는 부분에 대해서 질문 ... [3] 시안 2014-07-08 1754
» dtb에 대해서 궁금합니다. [9] Supsupi 2014-07-08 1737

사용자 로그인