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

안녕하세요?

처음 글을 질문을 드려 죄송하게 생각합니다만, 달리 질문을 할 데가 없네요.


beaglebone 보드를 구입해 처음부터 공부를 하고 있습니다.

ti am3359 라는 cortex-a8 프로세서를 달고 있습니다.

ti에서 제공하는 am3359용 startware 라는 것을 받아 bootloader를 컴파일 해보고 있습니다.

startware에는 gcc, 코드콤포저, iar 환경을 위한 프로젝트 를 같이 제공해 주고 있습니다.


그런데 cygwin에서 arm-none-eabi-* (yagarto) 를 사용해 컴파일 하면


selected processor does not support requested special purpose register -- `msr cpsr_c,#MODE_UND|I_F_BIT'


라는 에러를 만납니다.


ARM사에서 제공하는 퀵 인스트럭션 카드를 보면 틀리지 않은 구문 같은데요.

이 문장이 ccs 에서는 잘 컴파일이 되어서 빌드가 됩니다.

ccs에서 사용하는 컴파일러는 ccs 설치할때 같이 설치된 것입니다.


그런데 재미나는 것은 iar에서는 저렇게 immediate 값을 쓰지 않고 구현이 되어있습니다.


<iar 용 소스>

         mrs     r0,cpsr                       ; Original PSR value

         bic     r0,r0,#MODE_MSK               ; Clear the mode bits

         orr     r0,r0,#MODE_SVC|I_F_BIT       ; Set Supervisor mode bits

         msr     cpsr_c,r0                     ; Change the mode

         ldr     sp,=SFE(SVC_STACK)            ; End of SVC_STACK


참고로,


<gcc 용 소스>

         LDR   r0, =_stack                     @ Read the stack address

         MSR   cpsr_c, #MODE_UND|I_F_BIT       @ switch to undef  mode

         MOV   sp,r0                           @ write the stack pointer

         SUB   r0, r0, #UND_STACK_SIZE         @ give stack space


<ccs용 소스>

         LDR   r0, _stackptr                     ; Read the stack address

         MSR   cpsr_c, #MODE_UND|I_F_BIT       ; switch to undef  mode

         MOV   sp,r0                           ; write the stack pointer

         SUB   r0, r0, #UND_STACK_SIZE         ; give stack space



gnu as 문서를 살펴봤지만, msr에 대한 단서는 못찾았습니다. 당연한가요? ㅜㅜ

arm 좀 어렵네요. 찾아봐야 할 문서의 양은 둘째치고 체계적으로 정리해나가기가 참 힘듭니다.


장황해서 다시 질문을 요약하겠습니다.


위 gcc용 소스에서 왜 다음과 같은 컴파일 에러가 날까요?


selected processor does not support requested special purpose register -- `msr cpsr_c,#MODE_UND|I_F_BIT'


답변 부탁드립니다.

감사합니다.


고도리

2012.08.30 00:04:26
*.140.70.27

gcc 버전의 문제이거나, gcc 옵션의 문제입니다.

 

즉, 해당 명령어는 선택된 cpu에는 지원하지 않는다는 것이거든요.

대부분 이런 경우는 툴체인 문제거나, 아니면 컴팔옵션 중 cpu 옵션 문제입니다.

쿨한넘

2012.08.30 00:27:21
*.37.136.147

답변 감사합니다.

말씀을 참고해서 테스트를 해봤는데,


-mcpu=cortex-a8 옵션을 빼면 컴파일이 잘 됩니다.


이 옵션을 빼고 빌드를 진행해도 괜찮을까요?


고도리

2012.08.30 03:45:32
*.200.239.210

큰 문제는 없을 겁니다만....


해당칩이 진짜 cortex-A8인지는 확인해봐야할 듯 합니다.

CP15관련 명령이라 저런 경우 문제가 생기면 대부분 실제 칩이 틀린 경우거든요...



쿨한넘

2012.08.30 21:24:05
*.37.136.147

감사합니다. 일단 CP15 를 잘 몰라서 (ㅜㅜ) 코드를 살펴보고 테스트를 해보겠습니다.

다시한번 감사드립니다.

고도리

2012.08.30 22:49:39
*.200.239.210

mrs 등의 명령은 co-processor 15번에 access할 때 주로 사용하는 명령어로 기억이 납니다. 해서 답글을 그렇게 단 것입니다.


보통 cp15 명령어가 안 먹는 경우는 진짜 cpu가 틀린 경우가 많거든요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
5508 I2C와 I2S에 관해 질문이 있습니다. [5] bfvconfidenc 2012-09-13 1833
5507 s3c2450 datasheet는 없나요? [2] Supsupi 2012-09-13 1309
5506 V210 에 ICS를 올렸는데 ConnectionManager에서 WiFi 정보가 없... [2] 양동석 2012-09-10 1152
5505 jellybean 7.1채널 지원 하나요? [6] ljcg 2012-09-10 1115
5504 ADK를 이렇게 가능한가요 ? [2] 김경식 2012-09-07 1422
5503 wifi 포팅중인데요.. 다음과 같은 에러가 납니다 [1] 김민욱 2012-09-07 1426
5502 ICS의 설정 메뉴에서 "WIRELESS & NETWORKS"부분이 활성화 않... [1] 김민욱 2012-09-06 976
5501 vmware 에 설치된 리눅스에서 공유폴더에 파일을 복사하는 방법 [1] blue0sky 2012-09-06 1748
5500 [C110] 마이크 입력관련문의.. [2] 박한수 2012-09-05 1652
5499 linux kernel영역에서 system() 함수 호출하기.. [3] 양파링 2012-09-04 1421
5498 USB HOST, client I/F 관련해서 여쭤보고자 합니다. [4] 어떤이의꿈 2012-09-04 1535
5497 [문의]ADS1.2 컴파일러 버그 관련. [2] 김기범 2012-09-03 1704
5496 ICS에 동영상 넣기 [1] 김민욱 2012-09-03 687
5495 mp2530f 용 uboot 컴파일 할때 오류가 납니다. [3] 스티브잡스 2012-09-01 1264
5494 Software Watchdog & SoC Watchdog 관련 질문...................... [2] 스페셜 2012-08-31 1127
5493 ICS WebView Mouse over 이벤트 문의 jaeokbr 2012-08-31 825
» gcc 어셈블리 컴파일 에러 [5] 쿨한넘 2012-08-29 1620
5491 pcb를 제작하려고 하는데 [7] Supsupi 2012-08-29 1417
5490 이더넷포트 6개-8개 정도 사용할수 있는 보드 추천 부탁드립니다. [2] 은민아빠 2012-08-29 1269
5489 [질문]PCB 설계에서 메모리 길이는? [3] 비둘기사냥꾼 2012-08-29 1640

사용자 로그인