Day 5 - ARM7(Assembly)
·
IDEC 교육/Embedded C
ARM7 Reference해당 링크에서 레퍼런스 파일을 받을 수 있다.ARM7 Quick Card해당 링크에서 짧게 요약된 버전을 받을 수 있다.현재 Keil과 Segger 툴을 사용중이고, Assembly는 Segger Studio를 사용중이다.C와 Assembly 동시 사용main.c에서 assem.s라는 assembly 파일에 정의된 함수를 불러와서 쓸 수 있는데DoAdd라는 함수를 assembly에서 정의하여 불러와서 사용하는 예시이다.main.c#include #include extern int DoAdd(int, int);int main(void) { printf("Program Started\n"); int a = DoAdd(3, -1); printf("Add: %d\n", a); p..
Day 1 - Build 과정
·
IDEC 교육/Embedded C
Keil에서 Buildaxf / bin(optional) / hex(optional)axf: windows에서의 exe와 같은 실행 파일(elf = Executable and Linkable Format 의 변형)Code & Data (bin의 내용): .text(Code) / .ro / .rwDebug 정보: 소스 코드와 기계어 코드 간의 매핑을 위한 라인 번호, 함수 이름, 변수 이름 등의 정보Symbol Table: 프로그램 내의 함수와 변수의 이름 및 주소 정보를 포함Section Header & MetaData: 각 섹션의 시작 주소, 크기, 속성 등 상세 정보를 제공Relocation 정보(optional): 실행 시 주소 조정을 위해 필요한 경우, 코드와 데이터 위치를 재배치할 수 있는 정보..
Day 1 - Keil Settings & Global, Local Variable
·
IDEC 교육/Embedded C
Keil ToolProject SettingsTarget SettingsAddress of Variablemain.c#include #include "ARMCM3.h"#include "core_cm3.h"int gVar;int fputc(int c, FILE * fp){ ITM_SendChar(c); return c;}void MyFunc(){ int a, b; printf("%#010x \r\n", (int)&gVar); printf("%#010x, %#010x \r\n", (int)&a, (int)&b); return ;}void MyFunc2(){ MyFunc(); return ;}int main(){ printf("%#010x \r\n", (int)&gVar); MyFunc(); MyFun..