2014-10-13 6 views
0

은 암 어셈블러와 호환되는 몇 가지 코드입니다. 이들을 gnu에 해당하는 것으로 변환하려고합니다. 기본적으로 베어 메탈 피질 -r4에서 코드를 실행하려고했는데 인터넷을 통해 gnu (cortex-r4 용)의 시작 및 링커 파일을 찾을 수 없으므로 마침내 이들을 GNU 어셈블리로 변환하기로 결정했습니다. 나는 시도하기 전에 다음을 변경하지만, 몇 가지 오류 (단 원활 컴파일 된 코드, 오류가 실행 된 시간)팔 조립자 지침에 해당하는 팔 조립자 지침 아래

PRESERVE8 
AREA VECTORS, CODE, READONLY  ; Name this block of code 
ENTRY 
EXPORT Start 
Start 
IMPORT  ||Image$$ARM_LIB_STACKHEAP$$ZI$$Limit|| 
LDR  SP, =||Image$$ARM_LIB_STACKHEAP$$ZI$$Limit|| 
DCD 
IF {TARGET_FPU_VFP} 

가 제공하거나 플러스

것이 시작 또는 링커 파일로 나를 인도 할 수있는 경우가 있었다

관련,

답변

1

키워드의 대부분 여기에 ARM 컴파일러/링커는 GNU의 직접적인 대응 C.

코드는 주어진 문자로 연료 소모량 단순히 스택 포인터 (SP)를 설정 "시작"생성과 특정 . 그리고이 코드를 메모리 맵의 읽기 전용 (RO) 영역에 넣도록 링커에 지시합니다. IF 절이있는 것처럼 코드가 불완전하지만.

ARM 코드를 이해했다면 간단한 ld 링커 스크립트로 변환하는 것이 상대적으로 쉽습니다. 여기에서 더 읽기 :
http://www.embedded.com/design/mcus-processors-and-socs/4026075/Building-Bare-Metal-ARM-Systems-with-GNU-Part-2
http://www.embedded.com/design/mcus-processors-and-socs/4026080/Building-Bare-Metal-ARM-Systems-with-GNU-Part-3