2011년8월31일_ARM_ADS v1.2의 환경 설정 및 C언어 프로그램 작성
● 기존 프로젝트 열기
첫 화면...비주얼 스튜디오와 비슷한 사용자 인터페이스를 갖고 있고 비슷한 메뉴구성이다. (비슷함)
타이틀바에 있는 Warrior라는 단어를 보니 왠지 강해보인다.
기존 프로젝트를 열어야 하니 메뉴 File - Open을 클릭하거나 Ctrl키와 O키를 동시에 누른다.
다른 프로그램들도 이와같은 단축키를 쓰니 알아 두면 편리할 것이다.
파일을 탐색할 수 있는 대화상자가 나오고 프로젝트파일인 mcp확장자로 끝나는 Xads.mcp를 열어 보자.
그럼 열릴 것이다.
처음 시작이니 프로젝트가 없을 것이다. 그러니 새로운 프로젝트를 만들어 보자.
● 새로운 프로젝트 생성
메뉴 File - New를 클릭하여 새로운 프로젝트를 생성하자.
단축키가 조금 복잡하고 일반적으로 쓰는 Ctrl + N과 다르다.
우리는 프로젝트를 생성해야 하니 Project탭을 선택한 후 프로젝트가 담길 폴더를 선택하기 위해 Set…버튼을 클릭한다.
적당한 폴더를 선택하고 저장을 클릭한다.
(폴더 생성 체크박스가 있으니 특정 프로젝트 폴더만 지정하면 프로젝트명에 따라 폴더가 생성되니 편리하다.)
처음이니까 First라는 이름으로 프로젝트를 만들어 보자.
확인 클릭…
내부에 새로운 First.mcp라는 이름의 창이 떳다.
뭔가 단순해 보인다.
새로운 그룹을 생성하기 위해 하얀부분에서 오른 클릭을 한 후 Create Group을 클릭한다.
(왜 그룹을 생성해야 하는지는 아직은 모르겠다. 여러 파일들을 관리하기 쉽도록 하기 위한 것일까?)
그룹의 이름을 적어 주고 OK버튼을 클릭한다.
이름이 Cstartup이니 ARM프로세서 기동을 위한 소스코드들이 들어가겠지?
폴더아이콘 모양이 생겼다.
그 위에서 오른 클릭하여 파일들을 추가하자. 우선 Cstartup.s파일을 추가한다.
Debug폴더에는 디버그정보가 포함된 실행파일이 생성되고 최적화를 적게함,
Release폴더에는 디버그정보가 없이 최적화를 많이 함.
DebugRel폴더에는 디버그정보와 최적화를 중간정보 처리한 실행파일이 있음.
VS2005에서도 이와같이 디버그와 릴리즈 두 가지 실행파일이 출력되는 점이 비슷하다.
보통 개발단계에선 디버그할 일이 많으니 디버그만 체크하고 빠르게 빌드하는게 좋을 듯 함.
그러나 이번은 처음이니까 모두 다 체크하자.
Cstartup그룹에 Cstartup.s파일이 등록되었다.
두 개의 파일을 더 추가해야 되니 상기와 같은(오른클릭-추가) 방법으로 추가해 보자.
retarget,c
Cstartup_SAM7.c
상기 두 개의 파일들을 추가하자.
마찬가지로 모두 체크하고 OK버튼을 클릭.
main()가 들어가는 실행파일을 등록하기 위해 이번엔 하얀부분에서 오른클릭-파일추가하자.
윤교수님책에는 다른 예제파일이 추가되었으나,
나는 프로젝트명하고 똑같이 했다.
마찬가지로 모두 체크하고 OK버튼 클릭...
● 프로젝트 환경 설정
빌드(컴파일)환경설정을 하기 위해 메뉴 – Edit – DebugRel Settings를 클릭한다.
첫 번째 Target Settings에서,
Post-linker항목을 ARM fromELF로 설정한다.
이제부터 나오는 스크린샷에 빨간색 사각형표시가 되지 않은 부분은 건들지 말고 디폴트 상태로 그냥 두세요.
ARM Assembler에서,
Floating Point항목을 No floating point로 바꾼다.
실수연산을 하지 않겠다는 뜻인가 보다.
ARM C Compiler에서,
Target and Source탭은 건들 것이 없으나 어떤 건지 대충살펴볼것.
실수연산은 하는 것 같고 리틀엔디안방식으로 메모리에 값들의 바이트순서를 낮은 번지부터 하고,
대부분의 기능이 ANSI C표준을 따른다.
Debug/Opt탭 (디버그/최적화)
디버그 컨트롤과 최적화옵션들을 상기와 같이 선택한다.
All은 최적화를 최대한 한다는 것이고,
For time은 코드실행속도를 빠르게 한다는 것이다. (Flash메모리 용량이 부족하면 For space를 선택)
ARM Linker에서,
Output탭,
RO Base는 Read Only 메모리의 시작주소로 AT91SAM7S256의 경우 0번지부터 시작한다.
최초 실행시 Remap이 되어 있지 않으므로 0번지는 Flash메모리가 맵핑되어 있다.
RW Base는 Read Write 메모리의 시작주소로 AT91SAM7S256의 경우 0x00200000번지~0x0020FFFF번지까지 SRAM이다.
(64KBytes의 저장공간)
아래의 Equivalent Command Line은 상기의 라디오버튼과 텍스트박스, 체크박스를 바꾸면 자동으로 완성이 되니..
건들지 말자. 옵션을 추가하고 싶은데 선택하는 부분이 없을 때만 다루자.
아직 초보니까 건들 일은 없을 것이다.
Layout탭에서,
Object/Symbol텍스트박스에 Cstartup.o파일이름을 넣자.
Section에는 reset을 입력하자.
(왜 넣는지는 당연히 모른다. 링크단계에서 부트코드가 필요하니 하는 것 같다.)
Listings탭에서,
Image map을 체크하고,
List file텍스트박스에 프로젝트명하고 같은 First.map을 기입하자.
책에는 Test.map이라 되어 있으니 따라해서 똑같이 기입한다.
Give Information on항목은 map파일에 어떤 정보를 담을 것인가 선택하는 항목같다.
(잘 몰라유)
ARM fromELF에서,
출력파일포맷을 바이너리 파일로 하자.
클릭해보면 모토롤라 32bit HEX, 인텔HEX등 다른 여러 파일 포맷이 나오는데,
HEX파일은 16진수를 문자로 바꾼 텍스트파일이다.
● 편집창 설정
텍스트편집창을 보기 좋게 바꾸기 위해,
메뉴 – Edit - Preferences를 클릭한다.
들여쓰기를 할 때 보통 공백문자8칸이니 Tab을 8로 바꾼다.
디폴트는 9로 되어 있어 소스코드를 열어 보면 지저분하게 텍스트가 배치되어 읽기 어렵게 된다.
나는 Tab을 4로 하고 싶은데 윤교수님 소스코드는 8로 되어 있으니 그대로 따르자.
이상 프로젝트를 생성하여 파일을 등록하고 빌드(컴파일) 환경설정을 하였다.
● 컴파일
프로젝트 파일들을 볼 수 있는 창에서 Make아이콘을 클릭하니..
정상적으로 컴파일이 되어 프로젝트폴더\First_Data\DebugRel폴더에 First.bin파일이 생성되었다.
D:\ARM_project\20110831_BUILD\First\First_Data\DebugRel
F5키를 누르니 상기와 같이 1개의 경고메세지만 뜨고 컴파일된 후에 시뮬레이터 비슷한 창이 하나 더 떳다.