임베디드 시스템의 아키텍처는 MCU를 중심으로 peripheral 및 외부 세계와 통신하기 위한 특별한 인터페이스 모음을 갖고 있다. MCU는 프로세서, RAM, Flash, serial tx/rx 등을 포함한 SoC이다.임베디드 프로그래밍에서 중요한 부분은 주변장치(
이번 chapter에서는 특정 타겟을 위한 펌웨어 이미지를 생성하는 툴체인(toolchain)에 대해 배운다.C 컴파일러는 GNU/리눅스 배포판의 GCC가 대표적이며 .c 소스코드를 .o 오브젝트 파일로 만든다.컴파일을 수행한 host와 타겟 디바이스의 아키텍처가 동일
개발의 효율을 높이기 위해 협동 및 동기화를 최적화한다.리비전 제어 - Git을 이용한 버전 관리가 여기에 해당한다.이슈 추적 - 시스템의 알려진 버그와 활동을 계속 추적한다.코드 리뷰지속 통합 - 주기적으로 또는 코드 변경 시에 자동으로 동작을 수행하고, 테스트 결과
IVT는 인터럽트를 처리하기 위한 핸들러 함수인 ISR (Interrupt Service Routain)의 포인터를 모아둔 배열이다.IVT는 보통 바이너리 이미지의 시작 부분에 있고, flash의 가장 낮은 시작 주소에 저장된다.ARM Cortex-M에서 정의한 시스템
ARM Cortex-M의 총 주소 공간은 6개의 큰 구역으로 나뉘며 각 구역은 그 목적에 따라 각기 다른 권한을 가진다. 개발자가 링커 스크립터와 소스코드에서 사용 가능한 주소 공간을 파악하기 위해서는 타겟 플랫폼의 하드웨어의 메모리 섹션과 위치를 data sheet를
이번 chapter는 NVIC, clock, tick interrupt & timer, GPIO, watchdog 5가지의 사용방법에 대해 배운다. 간단한 개념과 상세한 코드 상 구현에 대한 내용이 이어지므로 이해가 힘들고 정리가 어려워 개념 위주로 정리하고 넘어간다.
이번 chapter에서는 대표적인 serial bus protocol인 UART, SPI, I2C에 대해 배운다.Serial communication을 위해서는 receiver와 transmitter 사이에 반드시 clock 동기화가 이뤄져야 한다. 하지만, UART는
이 chapter에서 우리는 MCU의 저전력 동작을 위한 방법론과 ARM에서 제공하는 동작모드에 대해서 배운다.Active low 회로와 풀업 저항을 사용해서 전력 낭비를 막는다.누설전류를 최소화 하는 회로를 설계한다.(대충 지금 고성능 MCU는 70년대 컴퓨터보다 성
임베디드 시스템의 아키텍처는 MCU를 중심으로 peripheral 및 외부 세계와 통신하기 위한 특별한 인터페이스 모음을 갖고 있다. MCU는 프로세서, RAM, Flash, serial tx/rx 등을 포함한 SoC이다.임베디드 프로그래밍에서 중요한 부분은 주변장치(