전체 글 35

[C언어] [컴파일러] [Embedded] 최적화와 오류에 대해

오늘은 Embedded환경에서 컴파일러의 역할과 최적화 오류에 대해 적어보려고 한다. 많은 Embedded 개발자가 항상 고민하는 부분은 메모리 사용량과 최적화, 시스템 속도 등일 것이다. 물론 최근에는 메모리 가격이 정말 많이 내려가서 메모리를 고려하지 않고도 Embedded Firmare를 만드는데 문제가 없긴 하다. 그래도 알아두어서 나쁠것은 없으니 한번 알아보도록 하자. 일반적으로 메모리를 많이 사용하면 속도를 올릴 수 있고, 메모리를 최적화 하려면 일부 속도를 포기해야 한다. 두개의 관계를 Trade-off 관계로 어느 것을 중점적으로 최적화 해야 할지 고민해야 하는 부분이다. 1. 개발자의 최적화 기법 개발자가 직접 최적화 코드를 고민하여 넣는 방법이다. 변수의 범위를 예측하여 최적화된 타입으..

Embedded 2023.01.11

[C언어] 데이터 타입 / 형 변환

오늘은 데이터 타입과 형 변환에 대해 적어보려고 한다. 먼저 아래 코드를 보자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 void main(void){ unsigned char c = 0xff; printf("%s\n", c==0xff?"true":"false"); } void main(void){ signed char c = 0xff; printf("%s\n", c==0xff?"true":"false"); } void main(void){ char c = 0xff; printf("%s\n", c==0xff?"true":"false"); } Colored by Color Scripter cs 3가지 케이스 모두 true가 나오지 않을 것이란 것은 감으로 알고 있지만 정확히 어떤 코드가 참..

C언어 2023.01.10

[C 언어] printf 파헤치기

C언어를 하는 사람치고 printf를 한번도 안쓴 사람은 없다. 그런데 printf를 제대로 아는 사람은 별로 없을 것이라 생각한다. 2가지 중요한 포인트가 있어 설명하려고 한다. 1. Format 문자열의 이해 먼저 아래 코드를 보면, 1 2 3 4 5 6 7 int main(void) { printf("Hello World!\n"); printf("Hello"" ""World!\n"); return 0; } Colored by Color Scripter cs 위 코드의 첫째줄은 흔히 사용하는 방식, 두번째 줄은 잘 사용하지 않는 방식이지만 정상적인 코드다. 물론 두줄의 코드 모두 "Hello World!"를 출력하게 된다. 이것에 대해 왜 이렇게 동작하는지 이해할 필요가 있다. printf의 원형을 ..

C언어 2023.01.08

방향

무엇인가를 시작할때는 방향이 참 중요하다. 내 경험과 노하우를 어떤 방향으로 적는 것이 좋을지 많이 고민이 되었고, 지금은 정리가 좀 된 것 같다. 가능하다면 하루에 한번씩 업데이트를 할 예정이고 내가 다루는 내용은 다소 거칠고 순서가 바뀔 수는 있겠지만 전체적으로는 아래의 내용을 써볼까 한다. C - 기초 - 개발 방법 이론과 현실 - 모듈화 표준화 라이브러리 - 컴파일러와 최적화 - 신뢰성, 클린코드 - 고급 포인터 활용 노하우 Embedded - 기초 - HW의 이해 - 콘솔, printf의 이해 - OS, NonOS 에 대하여 - Memory access - 외부장치(Pheriperal) - 통신 (UART) IoT - 무선 통신의 이해 - Platform - BLE - ZigBee - Platf..

Embedded 2023.01.07
728x90