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

리눅스 말고 


그냥 bare-metal 코드로요. 보드는 exynos4412에요.


지금 u-boot에서 리눅스 대신 main()만 만들어두고 그리로 PC값 점프시켜서 printf 출력되게 해놨거든요.

MMU설정은 u-boot의 설정을 그대로 쓰고 있어요.


ARM공식 싸이트 예제 보면 bare-metal code로 secondary cpu를 WFI 걸어두고 CPU0가 main()에서 


send_sgi로 깨우더라구여. 그런데 u-boot는 secondary cpu들을 부팅시킨 후


lowlevel_init.S 파일의 "nscode_base"로 오게해서 WFE를 걸어두네요. 

https://github.com/hardkernel/u-boot/blob/odroid-v2012.07/board/samsung/smdk4x12/lowlevel_init.S#L306


그런데 ARM 문서를 보면 리셋시에는 모든 코어가 0번지 부터 fetch를 시작하는 것으로 나오고 예제를 봐도 HW reset이 되면 일단 모든 코어가 reset벡터부터 실행되다가 cpu id를 읽고나서 자신이

secondary면 WFI를 걸고 대기하도록 되어 있는데요.


그래서 일단 secondary core가 살아났는지 확인하려고 u-boot에서 secondary가 WFE를 거는 인스트럭션 실행하기 바로 전에 보드의 LED를 off하는 코드를 심어봤는데 LED반응이 없네요. 이부분에 전역변수 넣고 +1 하게 한 뒤 u-boot 프롬포트가 떴을 때 내장 명령어 추가로 해당 변수값 출력해봐도 system.map상의 변수 주소는 일치하는데 값은 0이에요.

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

ldr r1,=0x11400080

mov r2,#0x3

str r2,[r1]

WFE

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

 linux 의 boot_secondary 함수를 보면 

198 #ifdef CONFIG_ARM_TRUSTZONE

199         if (soc_is_exynos4412())

200             exynos_smc(SMC_CMD_CPU1BOOT, cpu, 0, 0);

와 같이 HW적인 리셋을 다시 하도록 되어 있는 것 같은데
그럼 u-boot에서는 처음 부팅됐을 때 secondary는 어디서 뭐하고 있는 걸까요.

ARM example은 전원이 인가되면 4코어 모두 동작을 시작해서 cpu id 확인하는 부분부터 서로 다른 부분으로
분기하도록 되어 있는데,

u-boot의 WFE호출 직전에  코드를 넣어보면 아무 반응이 없고. 

리눅스 없이 secondary 코어 깨우는법 조금이라도 아시는분 힌트 부탁드려요.

유희재

2014.09.10 21:07:56
*.32.72.57

 ldr  r1, =START_ADDR  

@exynos는 다른 코어들이 iRom에서 Exception Entry 값을 받을때 까지 루프로 돌고 있었던걸로 기억합니다.

ldr  r0, =V_ADDR  

@Exception Entry 넣어 주시면 됩니다. 값을 넣어주면 분기 해서 실행 될껍니다.

 STR  r0, [r1]
 SEV


List of Articles
번호 제목 글쓴이 날짜 조회 수sort
6128 aESOP 가지고놀기 라는 PDF 자료중 yaffs 관련 문의 입니다.-&gt... [1] 공경준 2006-08-28 2685
6127 [질문] LX800 보드 부품수급 관련 질문` [2] 박명대 2007-11-03 2675
6126 [질문]RTC 오차 관련해서 질문 드립니다. [3] 백승준 2008-06-10 2674
6125 YAFFS2 마운트는 되는데 파일쓰기 에러... [1] 공정표 2009-08-03 2673
6124 터치 스크린.. [3] 이재철 2006-09-16 2667
6123 mf2530f의 연산 성능은 s3c2440a에 비해서 어떠한가요? [3] 성진호 2007-10-24 2664
6122 안드로이드 디바이스 드라이버 [1] jacket 2010-01-13 2653
6121 log 출력에 관해서. [3] 권윤택 2009-07-15 2652
6120 cygwin을 사용하여 u-boot 컴파일 가능? [2] 한석준 2009-03-03 2648
6119 안드로이드 overlay 서정민 2009-06-09 2642
6118 NAND 변경시 나온 문제 (OverWrite 문제) [2] cshqq 2013-12-09 2634
6117 XPe용 VGA 비디오 드라이버를 구할곳이 있나요 [3] 정인수 2007-05-30 2634
6116 [질문]LCD 백라이트 하드웨어적으로 ON 시키는 방범좀...(완료) [6] 안문기 2007-05-14 2630
6115 Android Kernel 2.6.29로 업데이트 방법? [1] 김태준 2009-05-15 2628
6114 mkyaffsimage 질문입니다...[완료] [4] 이홍석 2006-05-07 2624
6113 Android kernel 2.6.28 재업 smdk6410 커널용 [2] 최종환 2009-04-09 2622
6112 화면잔상 해결법? [1] 이동술 2007-05-14 2621
6111 Android 동작시 mtd부분에서 uevent관련 하여 죽어 버립니다. [3] 최종환 2009-03-26 2614
6110 U-boot상에서 Ping 테스트 에러(LAN91C111 이더넷 드라이브 사용) [2] 한석준 2009-03-11 2612
6109 tftp 파일 수신 시 timeout 이 발생 [8] blue0sky 2012-08-23 2607

사용자 로그인