cpu/arm920t/start.s 파일에서
relocate:
adr r0, _start
ldr r1, _TEXT_BASE
cmp r0, r1
beq stack_setup
ldr r2, _armboot_start
ldr r3, _bss_start
sub r2, r3, r2
addr2, r0, r2
copy_loop:
*
*
*
stack_setup:
*
*
뭐 이런식으로 진행이 되는데요. relocate에서 cmp r0, r1이 같을 경우에 바로 stack_setup으로 jump를 하게 되어 있잔아요. 이렇게 하는 이유는 메모리맵이 1M이던데요. NOR Flash가 1M이고 XIP가 지원되면 ram으로 copy u-boot code는 복사하지 않아도 되기 때문을 의미하는건가요?
댓글 6
-
백창우
2006.06.28 11:20
full 소스를 올려라. 그래야 보지. -
이일렬
2006.06.28 18:29
XIP와 관련이 있는것 같군요 -
원민수
2006.06.28 21:32
흐.. 다들 u-boot source를 가지고 계실거 같아서.. 파일하고 위치만 말씀 드린건데요.. ㅠㅠ 네.. 집에 가는 대로 full source를 올릴께요~ -
고정웅
2006.07.11 08:54
일렬님 말씀이 맞습니다~ (XIP 관련 부분이) 맞고요~ ^^;;;;
예전에 봤던거라 가물가물... ^^ㅋ 거리지만서도... 지금은 하드가 날아가서 코드가 없지만 기억을 살려보면...(다들 고수분들이라 아시리라 생각되지만 첫 방문에 발자취를 남기는 샘치고~~~ ㅎㅎㅎ)
_start는 runtime상의 code 시작 심볼입니다. 또 _TEXT_BASE는 compile상의 code 시작 심볼이고요. (반대일지도 모릅니다. ㅡㅡㅋ)
그래서 그 둘이 일치하지 않으면 XIP가 아닌것으로 판단하여 u-boot가 자신의 code 영역을 flash에 있는 현재영역(즉, compile time상의 _TEXT_BASE영역)에서 실행할 영역(즉, runtime상의 _start)영역으로 복제하게 됩니다.
-
고정웅
2006.07.11 08:59
무림의 고수분들의 열정에 박수를 드립니다.
깊은 내공에도 불철주야 더욱더 깊은 무공을 연마하심에 탄복할 따름입니다.~~~ *^^*
앞으로 IT강국 대한민국을 위해 각 문파마다 제자가 가득히 모이길 빌겠습니다~~~ ^^a
그럼 저는 이만 암행~~~ 하겠습니다.~~~ 오늘 하루도 즐겁게 맞이하시길~~~ -
백창우
2006.08.01 13:10
아... 고정웅님 왔다 가셨군요. ^^
이제서야 봤습니다.
좋은 글 감사드리고, 앞으로도 많이 오세요.
1기/2기 한번 모여서 회식한번 하죠. :)
.