O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

강좌 06 부트로더

1.901 visualizações

Publicada em

강좌 06 부트로더

Publicada em: Tecnologia
  • It's been such a relief to work with a team of professionals instead of following the advice of some faceless internet tipster. These guys really know what they're talking about. You can definitely see what a difference field research makes when you look at the results. I'm making more than £3,000 weekly and it feels fantastic! Thanks guys. ☺☺☺ https://w.url.cn/s/AYQ6fO0
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • If we are speaking about saving time and money this site ⇒ www.HelpWriting.net ⇐ is going to be the best option!! I personally used lots of times and remain highly satisfied.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

강좌 06 부트로더

  1. 1. 부트로더 Hancheol Cho
  2. 2. ● 어플리케이션/펌웨어가 실행되기전에 초기화하고 다운로드 기능 부트로더란?
  3. 3. STM BOOTLOADER ● STM MCU 내부에 기본 내장되어 있는 부트로더 ○ BOOT 핀 상태로 부트로더 실행 모드 선택함
  4. 4. STM BOOTLOADER
  5. 5. FLASH 메모리 맵 ● STM32F746의 FLASH 매모리 구성
  6. 6. FLASH 메모리 맵 ● FLASH 메모리의 영역 할당
  7. 7. 부트로더 실행 ● 부트로더 실행을 위한 별도 버튼 할당
  8. 8. 부트로더 실행 ● 부팅 순서 정의
  9. 9. 펌웨어 이미지 생성 ● 부트로더에서 펌웨어 버전을 확인 할 수 있도록 특정 위치에 펌웨어 버전을 위치시킴 프로젝트 Build 펌웨어 버전 인터럽트 벡터 펌웨어 Binary 펌웨어 코드 0x08040000 0x08040800 0x08041000
  10. 10. FLASH 펌웨어 이미지 생성 ● 프로젝트 빌드 후에 생성된 펌웨어 Binary에 대한 정보를 Tag정보로 Flash에 저장 ○ Tag는 펌웨어 Binary의 유효성 검증용 펌웨어 Binary 프로젝트 Build 펌웨어 Binary Tag 다운로드 프로그램 Tag 펌웨어 Binary
  11. 11. 펌웨어 Tag 구성 펌웨어 Binary Tag ● 펌웨어 Tag에는 펌웨어 유효성을 검증할 수 있는 데이터가 포함 ○ 펌웨어 위치 및 크기와 CRC 데이터를 이용하여 검증 함
  12. 12. Tag를 포함한 Memory Map Firmware Tag 32KB 736KB
  13. 13. 메모리 정의 ● hw_def.h 에 메모리 주소 정의
  14. 14. 통신 프로토콜 ● 시리얼 통신 프로토콜 정의 - 송신 패킷 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
  15. 15. 프로토콜 데이터 수신 처리 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
  16. 16. 데이터 송/수신 타임아웃 Host Slave STX CMD_STATE_WAIT_STX CMD_STATE_WAIT_CMD CMD CMD_STATE_WAIT_CMD CMD_STATE_WAIT_STX Timeout 발생 ● Host->Slave로 전송하는 바이트 사이의 타임아웃 발생 처리
  17. 17. 데이터 송/수신 타임아웃 Host Slave 명령 송신 Timeout 발생 ● Host->Slave로 전송하는 명령어 패킷에 대한 응답 타임아웃 발생 처리 응답 송신 명령 재송신 응답 송신
  18. 18. 명령어 구성 ● 부트로더를 위한 명령어
  19. 19. 명령어 처리 순서 ● cmdReceivePacket함수에서 통신 프로토콜 분석 후 정상 패킷 수신 ● 수신된 패킷의 명령어에 따라 해당 함수를 수행함 cmdReceivePacket() bootProcessCmd()
  20. 20. 펌웨어 다운로드 순서 Host Slave 명령 송신 응답 송신 ReadVersion 버전 정보 송부 ReadBoardName 보드 이름 송부 FlashEraseFw 펌웨어 영역을 지움
  21. 21. 펌웨어 다운로드 순서 Host Slave 명령 송신 응답 송신 FlashWriteFw 수신된 데이터 만큼 Flash에 저장 FlashWriteTag FlashVerifyFw Flash에 저장된 펌웨어여여의 Check Sum을 구하고 Tag의 Check Sum과 비교 Tag 정보 Flash에 저장 JumpToFw 펌웨어를 실행함

×