Day 1 - Modular(%) vs Bit-wise AND(&)
·
IDEC 교육/Embedded C
Modular(%): 나머지를 구하는 연산자 Bit-wise AND(&): 논리적 AND 연산자 '&'가 '%'연산을 대체k = 1011_0110k % 16 = 0000_0110k & 0x0F = 0000_0110특수한 Case에서만 사용가능(2의 제곱)연산 속도는 bit 연산이 5배 빠름Modular는 Library 사용Bit-wise는 ALU에서 바로 연산Examplek의 값이 0, 1, 2, 3 을 반복하는 코드int main(){ int k = 0; while(1){ printf("%d", k++); k = k & 3 ; } return 0;} 10000, 1000, 100, 10 자리수 출력하는 코드int k = 123456;int main()..
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 - Hex 단위, Data Type
·
IDEC 교육/Embedded C
2진수 & 16진수기본 단위2¹⁰ (1K) = 0x 4002¹² (4K) = 0x 10002¹⁶ (64K) = 0x 100002¹⁷ (128K) = 0x 200002²⁰ (1M) = 0x 1000002³⁰ (1G) = 0x 400000002⁴⁰ (1T) = 0x100000000추가 예시50K = 32K + 16K + 2K = 0x8000 + 0x4000 + 0x800 = 0xC800 100K = 64K + 32K + 4K = 0x10000 + 0xC800 + 0x1000 = 0x1D80050K = 32K + 16K + 2K = 0x8000 + 0x4000 + 0x800 = 0xC800 100K = 64K + 32K + 4K = 0x10000 + 0xC8..
Day 1 - Variable의 선언 vs 정의
·
IDEC 교육/Embedded C
Declare vs Define선언: Type을 Comiler에게 알려주는 역할 (메모리 할당 X)extern int a;정의: 변수명 지정으로 실체화 (메모리 할당 O)int a;
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..