2012-05-16 5 views
1

Sony Ericsson ARC S가 있습니다. ARM 어셈블리 언어로 프로그램을 작성하고 싶습니다. 나는 MIPS 아키텍처와 약간의 X86에 익숙하다.Sony Ericsson ARC S에서 ARM 프로세서 프로그래밍 프로그래밍

간단한 프로그램을 작성하고 어떤 프로그램, 시뮬레이터 또는 다른 작업을 수행해야하는지 알려주세요. 다른 프로세서에 사용되는 즉, 이클립스, GNU, 비주얼 스튜디오, 연타 등이 하나가 86 대신 초를 설치하고 다운로드 ARM을하는대로

+0

저는 많은 임베디드 암 예제와 몇 가지 시뮬레이터를 http://github.com/dwelch67에 가지고 있습니다. mbed는 도구를 구할 수있는 정보를 가지고 있다고 생각합니다. amber_samples와 thumbulator는 시뮬레이터이며, 프로세서 코어에 달려 있습니다. 어디에서 교육에 집중해야합니까? –

답변

1

gnu 기반의 크로스 컴파일러가 많이 있으며, binutils 만 빌드해야하는 어셈블리 언어 만 원할 경우에는 자신 만의 esp를 만드는 것이 매우 쉽습니다.

wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.gz 
tar xzvf binutils-2.22.tar.gz 
cd binutils-2.22 
../configure --target=arm-none-eabi --prefix=/pick/a/path --disable-werror --disable-nls 
make 
sudo make install 

당신이 설치하고 싶은 곳을 선택해야합니다./gnuarm myself./opt/gnuarm 또는 원하는 것을 시도해보십시오.

시도해보고 싶지 않다면 codeourcery.com으로 이동하십시오. 그러면 code sourcery를 구매 한 멘토 그래픽으로 연결됩니다. ARM을위한 LITE 버전을 찾으십시오. gnueabi 버전은 괜찮습니다. Linux 버전도 괜찮 으면서 어셈블러와 링커 또는 컴파일러, 어셈블러 및 링커 만 있으면됩니다.

emdebian은 툴체인을 사용했으나 한동안 시도하지 않았습니다. 사람들은 여전히 ​​ygarto를 사용하고, Windows의 경우 winarm을 사용합니다.

당신이 껍질-M 기반의 코어는 다음 mbed 경우, stm32f4d, thumbulator을 전체 ARM 명령어를 지원하는 코어를 실행하는 경우 나는 등 http://github.com/dwelch67 LPC-h2148_samples 또는 beaglebone_samples, yagbat에있는 예제를가 볼에서 . 보통 어셈블리에 하나만있는 경우 blinker01 예제를 작성한 다음 나중에 몇 가지 예제를 추가하여 어셈블리로 전환합니다.

아는 것이면 mips 만 있으면됩니다. 팔은 어느면에서 더 간단합니다. Mips는 다소 비표준 적이기 때문에 대부분의 프로세서는 캐리 플래그, 네거티브 플래그, 제로 플래그, 부호있는 오버플로 플래그 (CNZV)와 함께 프로그램 상태 워드를 사용하고 일반 명령어, add, sub 등으로 플래그를 설정 한 다음 분기합니다 그들. mips를 사용하면 상태 플래그가 없으므로 대신 두 개의 레지스터를 지정하고 분기가 같으면 분기를 수행 한 다음 빼기를 수행합니다. 빼기를하는 다른 프로세서는 빼기를 수행하거나 뺄셈을 수행하지만 플래그 이외의 결과를 저장하지 않는 비교를 수행합니다. ARM의로드 및 저장은 sw $ 4,0x10 ($ 5) 대신 str r4, [r5, # 0x10] 대신 다른 구문을 사용합니다. 대괄호는 간접적 인 수준을 나타내며 #은 상수보다 우선합니다. 암 즉시 수는 일반적으로 8 또는 9 비트이며 여기서 밉 수는 16 비트입니다. arm을 사용하면 하나의 명령에 여러 개의 레지스터를 저장할 수 있습니다. stm r0, {r1, r2, r3, r4}는 r0의 주소에 r1을, r0 + 0x04의 주소에 r2를, r0 + 0x08의 주소에 r3을 저장합니다. 에. 이것은 일반적으로 스택을 켜거나 끄기 위해 사용됩니다. 팔을 사용하면 저장소 또는로드에서 기본 레지스터를 수정할 수 있습니다. 예를 들어, ldr r1, [r0], # 4는 대괄호 바깥 쪽을 의미하고 r0의 주소에 r1을 저장 한 다음 r0에 4를 추가하면 저장하지 않아도됩니다. 추가 r0, r0, # 4 명령.Mips는 분기 연기 슬롯이있는 유일한 프로세서는 아니지만 실용적인 목적으로 다른 프로세서에 지연 슬롯이 없다고 가정하므로 분기 이후에 명령어를 넣고 실행하려고하지 마십시오. 브랜치 후에 멍청한 녀석들이 필요해.

gdb에는 armulator가 오픈되어있는 armulator 시뮬레이터가있다. qemu는 팔을 많이지지하지만 눈에 잘 띄지 않습니다. 난 엄지 손가락 만 (팔 명령의 축소 버전은 16 비트 밉스 명령 세트와 매우 유사하게 설정된 32 비트 밉 명령 세트와 유사 함) 엄지 손가락이지만 시뮬레이터의 변화에 ​​대한 느낌을 줄 것이다. 읽기 쉽고 임의대로 수정하여 메모리 버스, 레지스터 등을 볼 수 있습니다. skyeye에는 수많은 프로세서 시뮬레이터가 있으며 vba 및 nintendo ds 시뮬레이터에는 암 프로세서 시뮬레이터가 포함되어 있습니다. 팔 프로세서가 포함 된 50 달러 이하의 무수한 보드와 20 달러 미만의 마이크로 컨트롤러 보드.

0

하나는 같은 도구를 사용합니다. 하나는 암 워크 스테이션을하지 않는

, 당신은 ARM에 따라서 어떤 수단을 조립/당신의 86 상자와 크로스 컴파일 작업을 할 것이다는 ARM 기계 상에 컴파일 된 코드를 얻을 필요가있다. 디버깅은 시리얼 워크 스테이션을 통해 원격으로 수행되기 때문에 심볼 테이블을 사용할 수 있습니다.

+0

내가 일식을 사용하여 ARM 어셈블리 언어를 작성할 수 있습니까 ??? 방법? 더 설명해 주시겠습니까? – Soroush

관련 문제