[임베디드] Clang 컴파일 시 BIN 파일 크기 문제 & ELF와 BIN 차이
요즘 LLVM Compiler를 사용해서 졸업 연구를 진행하고 있다. 임베디드 분야가 다 그런 것 같지만, 어디서 알려주는 데도 없고, 자료도 잘 없고, 있어도 거의 해외 영문 사이트인게 참 힘들다. 그래도 그런만큼 내가 직접 원인을 찾고 수정하는 묘미가 있는 분야이다.
요즘 LLVM Compiler를 사용해서 졸업 연구를 진행하고 있다. 임베디드 분야가 다 그런 것 같지만, 어디서 알려주는 데도 없고, 자료도 잘 없고, 있어도 거의 해외 영문 사이트인게 참 힘들다. 그래도 그런만큼 내가 직접 원인을 찾고 수정하는 묘미가 있는 분야이다.
요즘 자동차는 굴러가는 거대한 컴퓨터라고 해도 과언이 아닌 것 같다. 기계 제어에 의존도가 높던 과거와 달리, 최근 생산되는 자동차는 전자 제어기(Electronic Control Unit, 이하 ECU)의 사용 비중이 매우 높아지고 있다. 차량을 제작하는 회사와 ECU를 제작하는...
Makefile이 꼭 임베디드와 밀접한 관련이 있다..! 라고 할 수는 없지만..
Memory Protection(x86 시스템의 경우)
컴퓨터에서 사용하는 메모리의 종류는 다양하다.
요즘도 드론 보안에 대한 연구를 계속 하고 있다. 드론 통신 쪽을 보면, 특히 “프로토콜(Protocol)”이라는 말을 자주하게 되는데 네트워크 및 통신 분야에서 가장 많이 쓰게 되는 것 같다. 그러나 당연히, 이 프로토콜을 네트워크에서만 쓸 수 있는 말은 아니고, 컴퓨터에서 사용...
지난 번 UART 통신 포스팅에 이어, 이번에는 SPI 통신 방식에 대해 정리해본다.
임베디드 개발할 때 참 많이 쓰는 것 중 하나가 시리얼 통신, UART 통신이다.
FreeRTOS를 STM32 보드에 포팅하여 실행 시켰다! 그런데 태스크를 생성하는 코드를 돌렸을 때 SVC call에서 오류가 발생하는 경우가 있다 해당 오류를 해결하는 글이 한국인 중에 없어서 포스팅을 해본다 사실 외국에도 별로 없다 낄낄 ...
범용 레지스터
💡 본 글은 책 "임베디드 레시피" by 히언 을 참고하여 작성된 글입니다.
최근 포스팅 주기가 좀 길었다. 과제를 끝내고 논문, 보고서, 발표, 개발 등.. 7월 한 달 동안 해야 할 일이 좀 몰려 있었다.
전가상화, 반가상화는 모두 Type-1 가상화이다. Type-1 가상화는 베어메탈 하이퍼바이저를 이용하는 가상화이며, 따라서 베어 메탈 하드웨어 위에 하이퍼바이저가 직접 구동되고, 호스트 OS가 없다. 마이크로소프트의 Hyper-V 등이 이에 해당된다. 전가상화와 반가상화의 특징을...
💡 해당 포스팅은 isnt님의 블로그(링크: [https://m.blog.naver.com/ilikebigmac/222009981745])의 포스트를 보고 정리한 내용입니다. KVM
아두이노를 사용해 태스크 간 동기화 실습을 진행해본다.
MCU용 소프트웨어 개발 방법은 보통 두 가지로 나뉜다. 프로그램 개발 환경과 개발 프로그램이 실행되는 환경이 동일한 네이티브 개발(native development)과, 개발 환경과 실행 환경이 다른 크로스 플랫폼 개발이다. 이 중에서도 일반적으로 크로스 플랫폼 개발이 주로 사용...
요즘 코딩 테스트를 C++로 준비하고 있는데, 나는 그동안 개발하면서 C++을 C처럼 쓰고 있었구나 싶었다. 사실 임베디드 시스템에서는 C++이 꽤 무거워 쓰지 않는 경우가 많아, C++의 다양한 툴들이 더욱 낯설게 다가온 것 같다.
템플릿은 함수나 클래스를 개별적으로 다시 작성하지 않아도 여러 자료형으로 사용할 수 있도록 만들어 둔 틀이라고 보면 된다. Stack 구조의 경우 data가 homogeneous하기 때문에 데이터의 타입이 여러가지라면 타입 별로 스택을 하나하나 구현해야 한다. 이 때 templat...
코드가 목적에 맞게 굴러가는 것을 코딩 우선순위의 1순위로 둘 수 있지만, 훗날 코드의 유지 및 관리를 위해 “좋은 코드”를 작성하는 것 또한 매우매우 중요하다. 요즘은 객체지향프로그래밍을 연습해보고 있어서, 저명한 디자인 패턴에 대해 정리한다.
C로 짜여진 여러 코드들을 들여다보면, 함수의 선언과 정의를 분리하고, main 함수 위에 함수의 선언을, 정의는 main 함수의 아래에 하는 경우가 상당히 많이 보인다. 왜 굳이 둘을 나누는 것일까? 답은 ‘컴파일러에게 함수의 존재를 알리기 위함’에 있다.
예외(exception)란 컴퓨터 시스템이 동작하는 중에 예상하지 못한 오류가 발생하여 실행되고 있던 프로그램이 중지되는 것을 의미한다.
구조체는 모든 멤버가 기본적으로 public멤버로 작동한다.
동적 할당에 대해 알아보자. 정적으로 배열을 생성할 때는
Pass by values는 값에 의한 전달, Pass by reference는 참조에 의한 전달이다.
C++에서 포인터로 null 값을 지정하려면 리터럴 0으로 초기화하거나 할당하면 된다.
바인딩(binding)이란?
헤더파일과 라이브러리는 엄연히 다르다. 이걸 설명할 수 있느냐 없느냐의 차이도 큰 것 같다.
동적 할당(Dynamic allocation)
💡 해당 포스트는 아래 블로그의 내용을 통해 공부한 내용을 정리한 포스트입니다.
Heap이란?(정의)
Selection Sort
저번 시간에 이어서 포스팅을 해보록 하겠다.
트리(Tree) 정의 노드의 연결로 구성되어 있다 사이클이 생기면 안 된다, 즉 노드의 연결을 따라갔을 때 다시 돌아올 수 있어선 안 된다
Unsorted List(비정렬 리스트)
큐(Queue)란?
이번엔 스택을 연결 리스트(Linked list)로 구현해보자.
리스트를 구현하는 방법으로 두 가지가 있는데, 하나는 배열을 이용하는 것이고 다른 하나는 동적할당을 이용해 구현하는 것이다. 이 중에서도 동적할당 구현을 살펴본다.
dxdy 문제 기초 중의 기초..
필요 알고리즘:
Operation
모든 app 프로그램들은 자원을 사용하므로, 이러한 자원의 효율적 분배를 위해 os가 존재한다. os에는 다양한 서비스들이 정부 부처처럼 존재한다.
컴퓨터에서 사용하는 메모리의 종류는 다양하다.
페이징 기법: 프로세스를 일정 크기인 페이지 단위로 잘라서 메모리에 적재시킴. 물리적인 단위. 세그멘테이션: 프로세스를 세그먼트의 집합으로 생각함. 논리적 내용 단위임. 크기가 각각 다름.
조합 논리회로(Combination logic circuit)
x86-64 아키텍쳐: 레지스터
부모 프로세스 & 자식 프로세스
Memory Protection(x86 시스템의 경우)
정의 실제 또는 가상 프로세서에서 프로그램을 실행하여 컴퓨터 소프트웨어를 분석 특징 동적 분석을 효과적으로 수행하기 위해, 대상 프로그램이 흥미로운 동작을 일으키기에 충분한 테스트 입력으로 실행되어야 함 ...
정의 프로그램을 실행하지 않고 프로그램 분석 분석 대상 소스코드 오브젝트 코드 분석 방법: 구문 검사, 의미추론 등 Unit level ...
Taint Analysis란? 정의 프로그램에서 사용자 입력값으로 인해 어떤 레지스터와 메모리 영역이 제어 가능한지 확인하는 기법 특징 메모리 성능 확인, 보안 테스트 등에 사용 프로그램 소스 코드 없이 분석...
SSH(Secure Shell Protocol)
저자: JOGH A. STANKOVIC (University of Massachusetts, Amherst)
TCP/IP 프로토콜 그룹
TCP/IP란 TCP/IP : 컴퓨터-컴퓨터간의 LAN(지역 네트워크), WAN(광역 네트워크)에서 통신을 하기 위한 프로토콜. 미국 APRANET(아파넷)에서 시작되어 미국 방위 통신청에서 통신을 위해 TCP/IP를 사용하게 한 것이 시초. IP: 인터넷에 연결되어 있는...
DHCP(Dynamic Host Configuration Protocol)이란
리눅스 기반 OS에서 쉘 커맨드를 이용하다 보면 같은 명령어를 반복적으로 타이핑 할 필요 없이, 방향키를 통해 간단하게 이전 명령어들을 불러올 수 있다. 이건 시스템을 재부팅 시켜도 없어지지 않는데, 이 명령어들이 어디에 저장되며, 라이프 타임은 언제인지 궁금해져서 찾아봤다.
세그먼트(Segment)
Front-end Compilation
글쓴이는 2023년 상반기 H-모빌리티 클래스 자율주행 수강생이다.