전체 글 121

STM32F103x Memory map

- STM32F103의 메모리 맵은 Cortex-M3 코어를 기반으로 설계된 마이크로컨트롤러의 주소 공간 구조- 메모리 맵은 다양한 메모리와 주변 장치의 주소를 정의하며, 다음의 사진과 같음 1. 코드 메모리 영역 (0x0000 0000 ~ 0x1FFF FFFF)- 부트 메모리: 0x0000 0000 ~ 0x1FFF FFFF- 초기 부트 로더 코드가 위치. 부팅 모드에 따라 플래시 메모리, SRAM, 또는 시스템 메모리로 매핑 2. SRAM (0x2000 0000 ~ 0x3FFF FFFF)- 내부 SRAM: 0x2000 0000 ~ 0x2000 4FFF (20KB)- 일반 데이터 저장용. Cortex-M3 코어에서 빠르게 액세스 가능- 추가로 사용 가능한 SRAM 주소는 비워진 공간에 의해 확장될 수 있..

ST MCU/MPU Security Features

- ST의 MCU(마이크로컨트롤러 유닛)에는 다양한 보안 기능이 탑재되어 디바이스와 애플리케이션을 보호- ST의 보안 기능은 주로 소프트웨어 보호, 메모리 보호, 암호화, 부팅 보호 등을 포함아래는 이러한 보안 기능을 요약한 표 기능설명적용 MCU 시리즈RDP (Readout Protection)MCU의 플래시 메모리에서 데이터를 읽어오는 것을 방지하는 기능레벨 0, 1, 2로 구성되며, 레벨 2는 완전한 보안으로 디버깅 및 펌웨어 업그레이드 불가STM32 전 제품군PCROP (Proprietary Code Read-Out Protection)플래시 메모리의 특정 섹터를 보호하여, 외부에서 접근할 수 없도록 하는 기능메모리 보호와 동시에 코드 실행은 가능STM32L4, STM32L5, STM32H7Tru..

CMSIS

CMSIS(Common Microcontroller Software Interface Standard)는 Arm Cortex 프로세서를 기반으로 하는 마이크로 컨트롤러용 벤더 독립 추상화 레이어.CMSIS는 범용 툴인터페이스를 정의하고 일관된 디바이스 지원 가능. CMSIS 소프트웨어 인터페이스는 소프트웨어 재사용을 단순화하고 마이크로컨트롤러 개발자의 학습 곡선을 줄이며 새로운 기기의 시장 출시 기간을 단축. CMSIS는 프로세서 및 주변기기, 실시간 운영체제 및 미들웨어 컴포넌트에 대한 인터페이스를 제공. CMSIS에는 디바이스, 보드 및 소프트웨어의 전송 메커니즘이 포함되어 있어 여러 벤더의 소프트웨어 컴포넌트를 조합 가능. https://www.keil.arm.com/cmsis Arm KeilKei..

STM32 CubeMX LL driver

CubeMX에서 pheriperal인 GPIO, USART, TIMER, PWM를 설정할때 기본이 HAL divrer로 설정된다.하지만 HAL driver는 이식성을 좋게 하기 위해 용량이 커지고 코드 실행 시간이 길어진다. 그래서 코드 최적화 하여 코드 실행 시간을 줄일 수 있는 LL driver 설정 방법은 다음과 같다. 1. CubeMX 실행 2. CubeMX - Project Manager 3. CubeMX - Project Manager - Advanced Settings: HAL 또는 LL driver 선택

STM32 Driver(Library)

보통 STM32를 F/W를 개발할 때 HAL(Hardware Abstraction Layer) driver를 사용하는데, 이 driver 말고도 아래와 같이 다양한 library가 있다.https://www.st.com/content/ccc/resource/sales_and_marketing/presentation/product_presentation/37/55/ff/bc/a8/71/4f/c5/stm32_embedded_software_offering.pdf/files/stm32_embedded_software_offering.pdf/jcr:content/translations/en.stm32_embedded_software_offering.pdf  ST에서 제공하는 library는 아래와 같다.1. S..

Linker Script(2) - 구조 및 설명

MCUSTM32F103VCT(ST)IDEAtollic(TrueSTUDIO), STM32CubeMX목표Linker Script 구조 분석 1. MEMORY아래는 STM32F103VCT의 Linker Script의 일부분이다.MEMORY{RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48KFLASH (rx) : ORIGIN = 0x8000000, LENGTH = 256K} RAM과 FLASH로 구분되어 있다.RAM(xrw)은 48KbyteFLASH(rx)은 256Kbyte 2. SECTION아래는 STM32F103VCT의 Linker Script의 일부분이다.SECTIONS{ /* The startup code goes first into FLASH */ ...

Linker Script(1) - Segment

MCUSTM32F103VCT(ST)IDEAtollic(TrueSTUDIO), STM32CubeMX목표Linker Script 구조 분석 - CompileC 코드를 기계어로 만드는 작업을 Compile이라고 하고, 이 작업에 Compiler라는 프로그램이 필요 - Linkermain.c와 control.c 소스를 컴파일을 하면 오브젝트 파일이 생성되고, 이 오브젝트 파일을 하나의 바이너리로 만듦 아래는 Compile 과정을 그림으로 그려 보았다.source codemain.ccontrol.ccompiling↓↓object codemain.ocontrol.oLinking↓↓excutable*.hex(*.bin) - 그러면 이걸 꼭 알아야 하나?MCU에 RAM을 추가로 붙이려면?제조사 제공 Bootloader..

ST 개발 보드 소개(1) - STM32duino(Blue Pill)

- 아두이노는 원래 ATMEL사의 Atmega MCU를 기반으로 개발되었지만 사용자가 많아지면서 여러 제조사가 아두이노 IDE 개발 환경을 지원하고 있음- 개발자는 MCU가 달라지더라도 아두이노 IDE를 사용하면 기개발되어 있는 라이브러리를 사용할 수 있어 디바이스 드라이버 개발 및 검증 시간이 대폭 축소- STM32duino(Blue Pill)는 STM32F103C8T6 32비트 MCU 탑재 되었으며 아두이노 용으로 개발 되었지만 STM32F1 series 를 저렴하게 테스트 할 수 있음