SlideShare a Scribd company logo
부트로더
Hancheol Cho
● 어플리케이션/펌웨어가 실행되기전에 초기화하고 다운로드 기능
부트로더란?
STM BOOTLOADER
● STM MCU 내부에 기본 내장되어 있는 부트로더
○ BOOT 핀 상태로 부트로더 실행 모드 선택함
STM BOOTLOADER
FLASH 메모리 맵
● STM32F746의 FLASH 매모리 구성
FLASH 메모리 맵
● FLASH 메모리의 영역 할당
부트로더 실행
● 부트로더 실행을 위한 별도 버튼 할당
부트로더 실행
● 부팅 순서 정의
펌웨어 이미지 생성
● 부트로더에서 펌웨어 버전을 확인 할 수 있도록 특정 위치에 펌웨어 버전을
위치시킴
프로젝트
Build
펌웨어 버전
인터럽트 벡터
펌웨어 Binary
펌웨어 코드
0x08040000
0x08040800
0x08041000
FLASH
펌웨어 이미지 생성
● 프로젝트 빌드 후에 생성된 펌웨어 Binary에 대한 정보를 Tag정보로 Flash에
저장
○ Tag는 펌웨어 Binary의 유효성 검증용
펌웨어
Binary
프로젝트
Build
펌웨어
Binary
Tag
다운로드 프로그램
Tag
펌웨어
Binary
펌웨어 Tag 구성
펌웨어
Binary
Tag
● 펌웨어 Tag에는 펌웨어 유효성을 검증할 수 있는 데이터가 포함
○ 펌웨어 위치 및 크기와 CRC 데이터를 이용하여 검증 함
Tag를 포함한 Memory Map
Firmware
Tag 32KB
736KB
메모리 정의
● hw_def.h 에 메모리 주소 정의
통신 프로토콜
● 시리얼 통신 프로토콜 정의 - 송신 패킷
STX Cmd Error LENGTH_L LENGTH_H Data[0] ... Data[n] CheckSum ETX
0x02
0x00
~
0xFF
0x00
~
0xFF
0x00
~
0xFF
0x00
~
0xFF
0x00
~
0xFF
0x00
~
0xFF
0x00
~
0xFF
CheckSum 0x03
● 시리얼 통신 프로토콜 정의 - 수신 패킷
STX Cmd Option LENGTH_L LENGTH_H Data[0] ... Data[n] CheckSum ETX
0x02
0x00
~
0xFF
0x00
~
0xFF
0x00
~
0xFF
0x00
~
0xFF
0x00
~
0xFF
0x00
~
0xFF
0x00
~
0xFF
CheckSum 0x03
프로토콜 데이터 수신 처리
CMD_STATE_WAIT_STX
CMD_STATE_WAIT_CMD
CMD_STATE_WAIT_LENGTH_L
CMD_STATE_WAIT_LENGTH_H
CMD_STATE_WAIT_DATA
CMD_STATE_WAIT_CHECKSUM
CMD_STATE_WAIT_ETX
데이터 송/수신 타임아웃
Host Slave
STX
CMD_STATE_WAIT_STX
CMD_STATE_WAIT_CMD
CMD
CMD_STATE_WAIT_CMD
CMD_STATE_WAIT_STX
Timeout 발생
● Host->Slave로 전송하는 바이트 사이의 타임아웃 발생 처리
데이터 송/수신 타임아웃
Host Slave
명령 송신
Timeout 발생
● Host->Slave로 전송하는 명령어 패킷에 대한 응답 타임아웃 발생 처리
응답 송신
명령 재송신
응답 송신
명령어 구성
● 부트로더를 위한 명령어
명령어 처리 순서
● cmdReceivePacket함수에서 통신 프로토콜 분석 후 정상 패킷 수신
● 수신된 패킷의 명령어에 따라 해당 함수를 수행함
cmdReceivePacket()
bootProcessCmd()
펌웨어 다운로드 순서
Host Slave
명령 송신
응답 송신
ReadVersion
버전 정보 송부
ReadBoardName
보드 이름 송부
FlashEraseFw
펌웨어 영역을 지움
펌웨어 다운로드 순서
Host Slave
명령 송신
응답 송신
FlashWriteFw
수신된 데이터 만큼
Flash에 저장
FlashWriteTag
FlashVerifyFw Flash에 저장된 펌웨어여여의
Check Sum을 구하고 Tag의
Check Sum과 비교
Tag 정보 Flash에 저장
JumpToFw
펌웨어를 실행함

More Related Content

What's hot

Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
Sherif Mousa
 
What is Bootloader???
What is Bootloader???What is Bootloader???
What is Bootloader???
Dinesh Damodar
 
아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작
chcbaram
 
A practical guide to buildroot
A practical guide to buildrootA practical guide to buildroot
A practical guide to buildroot
Emertxe Information Technologies Pvt Ltd
 
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
ryuz88
 
LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platform
Linaro
 
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareHKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareLinaro
 
LCU14 500 ARM Trusted Firmware
LCU14 500 ARM Trusted FirmwareLCU14 500 ARM Trusted Firmware
LCU14 500 ARM Trusted Firmware
Linaro
 
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini
 
QEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded DevelopmentQEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded Development
GlobalLogic Ukraine
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
Leon Anavi
 
Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8
Linaro
 
LCA14: LCA14-418: Testing a secure framework
LCA14: LCA14-418: Testing a secure frameworkLCA14: LCA14-418: Testing a secure framework
LCA14: LCA14-418: Testing a secure framework
Linaro
 
自力でゲームのSEを生成する方法 by 「ADX2 LE」
自力でゲームのSEを生成する方法 by 「ADX2 LE」自力でゲームのSEを生成する方法 by 「ADX2 LE」
自力でゲームのSEを生成する方法 by 「ADX2 LE」
Takaaki Ichijo
 
RISC-V software state of the union
RISC-V software state of the unionRISC-V software state of the union
RISC-V software state of the union
RISC-V International
 
ROS/ROS2 Distributed System with Kubernetes
ROS/ROS2 Distributed System with KubernetesROS/ROS2 Distributed System with Kubernetes
ROS/ROS2 Distributed System with Kubernetes
Tomoya Fujita
 
Introduction to yocto
Introduction to yoctoIntroduction to yocto
Introduction to yocto
Alex Gonzalez
 
Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0
Emertxe Information Technologies Pvt Ltd
 
U-Boot - An universal bootloader
U-Boot - An universal bootloader U-Boot - An universal bootloader
U-Boot - An universal bootloader
Emertxe Information Technologies Pvt Ltd
 
Multicore and AUTOSAR
Multicore and AUTOSARMulticore and AUTOSAR
Multicore and AUTOSAR
Hansang Lee
 

What's hot (20)

Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
 
What is Bootloader???
What is Bootloader???What is Bootloader???
What is Bootloader???
 
아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작
 
A practical guide to buildroot
A practical guide to buildrootA practical guide to buildroot
A practical guide to buildroot
 
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
 
LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platform
 
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareHKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
 
LCU14 500 ARM Trusted Firmware
LCU14 500 ARM Trusted FirmwareLCU14 500 ARM Trusted Firmware
LCU14 500 ARM Trusted Firmware
 
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
 
QEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded DevelopmentQEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded Development
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
 
Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8
 
LCA14: LCA14-418: Testing a secure framework
LCA14: LCA14-418: Testing a secure frameworkLCA14: LCA14-418: Testing a secure framework
LCA14: LCA14-418: Testing a secure framework
 
自力でゲームのSEを生成する方法 by 「ADX2 LE」
自力でゲームのSEを生成する方法 by 「ADX2 LE」自力でゲームのSEを生成する方法 by 「ADX2 LE」
自力でゲームのSEを生成する方法 by 「ADX2 LE」
 
RISC-V software state of the union
RISC-V software state of the unionRISC-V software state of the union
RISC-V software state of the union
 
ROS/ROS2 Distributed System with Kubernetes
ROS/ROS2 Distributed System with KubernetesROS/ROS2 Distributed System with Kubernetes
ROS/ROS2 Distributed System with Kubernetes
 
Introduction to yocto
Introduction to yoctoIntroduction to yocto
Introduction to yocto
 
Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0
 
U-Boot - An universal bootloader
U-Boot - An universal bootloader U-Boot - An universal bootloader
U-Boot - An universal bootloader
 
Multicore and AUTOSAR
Multicore and AUTOSARMulticore and AUTOSAR
Multicore and AUTOSAR
 

Similar to 강좌 06 부트로더

How to install printer driver into the PC
How to install printer driver into the PC How to install printer driver into the PC
How to install printer driver into the PC
samil copy
 
(111217) #fitalk rootkit tools and debugger
(111217) #fitalk   rootkit tools and debugger(111217) #fitalk   rootkit tools and debugger
(111217) #fitalk rootkit tools and debugger
INSIGHT FORENSIC
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
pyrasis
 
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
수정 김
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
Hwan Min
 
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
Byunghyun Ban
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
YEONG-CHEON YOU
 
SkyRover Firmware
SkyRover FirmwareSkyRover Firmware
SkyRover Firmware
chcbaram
 

Similar to 강좌 06 부트로더 (8)

How to install printer driver into the PC
How to install printer driver into the PC How to install printer driver into the PC
How to install printer driver into the PC
 
(111217) #fitalk rootkit tools and debugger
(111217) #fitalk   rootkit tools and debugger(111217) #fitalk   rootkit tools and debugger
(111217) #fitalk rootkit tools and debugger
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
 
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
[1장] 파이썬 개발환경 구축하기 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
SkyRover Firmware
SkyRover FirmwareSkyRover Firmware
SkyRover Firmware
 

강좌 06 부트로더