Toby's Study Blog
article thumbnail
Published 2024. 3. 21. 17:27
Flash Reprogramming 정리 embedded

πŸ“₯ Flash Reprogramming μ΄λž€?

μž„λ² λ””λ“œλŠ” κ°œλ°œμ€ 보톡 ECU(μ „μž μ œμ–΄ μž₯치)λ₯Ό κ°œλ°œμžκ°€ 코딩을 톡해 κ°œλ°œν•œ μ†Œν”„νŠΈμ›¨μ–΄(νŽŒμ›¨μ–΄)λ₯Ό μ‚¬μš©ν•΄ μ›ν•˜λŠ” κΈ°λŠ₯을 ν•˜λ„λ‘ ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€. 
이 λ•Œ, ECU에 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ—…λ°μ΄νŠΈ ν•˜λŠ” 과정을  Flash Reprogramming 이라고 λΆ€λ₯Έλ‹€. 
개발 단계 이후 μ–‘μ‚° λ‹¨κ²Œμ—μ„œλ„ μ˜€μž‘λ™μ„ μˆ˜μ •ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•˜λŠ” λ“±μ˜ μ†Œν”„νŠΈμ›¨μ–΄ μ—…λ°μ΄νŠΈκ°€ ν•„μš”ν•œ 경우 
Flash Reprogramming을 톡해 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ—…λ°μ΄νŠΈ ν•  수 μžˆλ‹€.
μžλ™μ°¨μ˜ OBD-II ν¬νŠΈμ— μ œμ‘°μ‚¬λ³„λ‘œ μ‚¬μš©ν•˜λŠ” νŽŒμ›¨μ–΄ μ—…κ·Έλ ˆμ΄λ“œ μž₯λΉ„λ₯Ό μ—°κ²°ν•΄ Flash Memory에 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ—…λ°μ΄νŠΈ ν•˜λŠ” 방식을 μ‚¬μš©ν•œλ‹€. 

OBD - II λ‹¨μž ꡬ성 좜처 : https://m.blog.naver.com/suresofttech/221282372396


πŸ“₯
μ£Όμš” ꡬ성 μš”μ†Œ

Flash Reprogramming 과정은 Flash Memory 곡간에 μƒˆλ‘œμš΄ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κΈ°λ‘ν•˜μ—¬ ECU의 κΈ°λŠ₯을 μ—…λ°μ΄νŠΈν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ΄λ‹€. μ£Όμš” ꡬ성 μš”μ†ŒλŠ” μ•„λž˜μ™€ κ°™λ‹€.
Flash Memory 곡간을 μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” Flash MemoryλŠ” 전원이 꺼져도 계속 μœ μ§€λ˜κΈ° λ•Œλ¬Έμ— μ†Œν”„νŠΈμ›¨μ–΄κ°€ 계속 μœ μ§€λ  수 있으며, CPU에 직접 접근이 κ°€λŠ₯ν•œ κ³΅κ°„μœΌλ‘œ 읽기 μ“°κΈ° 속도가 λΉ λ₯΄κΈ° λ•Œλ¬Έμ— 기본적으둜 νŽŒμ›¨μ–΄(μ†Œν”„νŠΈμ›¨μ–΄)λŠ” 
λ””μŠ€ν¬, λ©”λͺ¨λ¦¬ 곡간이 μ•„λ‹Œ Flash Memory 곡간에 μ €μž₯λœλ‹€. 

좜처 : https://buildstorm.com/blog/automotive-bootloader-fbl/

Application Software 

C, C++ λ“±μ˜ μ–Έμ–΄λ‘œ μž‘μ„±λœ ECU의 μ—¬λŸ¬κ°€μ§€ κΈ°λŠ₯ μˆ˜ν–‰μ„ μœ„ν•œ μ†Œν”„νŠΈμ›¨μ–΄

PreLoader 

μ‹œμŠ€ν…œ λΆ€νŒ… μ‹œ κ°€μž₯ λ¨Όμ € μ‹€ν–‰λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ λͺ¨λ“ˆμ΄λ©° 주둜 μ•„λž˜ 2가지 λ™μž‘μ„ μˆ˜ν–‰ν•œλ‹€.

  1. Application λ˜λŠ” FBL λΆ€νŒ… κ²°μ •
    μ‹œμŠ€ν…œμ΄ λΆ€νŒ…λ  λ•Œ μ–΄λ–€ μ†Œν”„νŠΈμ›¨μ–΄ λͺ¨λ“ˆμ„ 싀행할지 κ²°μ •ν•œλ‹€.
    (β€» 예λ₯Ό λ“€μ–΄ μ—…λ°μ΄νŠΈκ°€ ν•„μš” -> Flash Bootloader, λ™μž‘μ΄ ν•„μš” -> Application Software)
  2. μ‹ κ·œ μ—…λ°μ΄νŠΈλ‚˜ μ†μƒλœ Application 처리
    λ§Œμ•½ μƒˆλ‘œμš΄ μ†Œν”„νŠΈμ›¨μ–΄ μ—…λ°μ΄νŠΈκ°€ μ€€λΉ„λ˜μ–΄ μžˆκ±°λ‚˜, ν˜„μž¬ μ‹€ν–‰ 쀑인 Application이 μ†μƒλœ 경우, PreLoaderλŠ” 보톡 λΆ€νŠΈλ‘œλ”(FBL)λ‘œλΆ€ν„° μ‹œμŠ€ν…œμ„ λΆ€νŒ…ν•˜μ—¬ μƒˆλ‘œμš΄ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ‘œλ“œν•˜κ±°λ‚˜, μ†μƒλœ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λŒ€μ²΄ν•œλ‹€.

Primary Bootloader

주둜 μ—…λ°μ΄νŠΈλœ ν”„λ‘œκ·Έλž¨μ„ Flash λ©”λͺ¨λ¦¬μ— μ“°λŠ” λ“±μ˜ μ—…λ°μ΄νŠΈ ν”„λ‘œμ„ΈμŠ€μ™€ 기타 μ•„λž˜ λ™μž‘μ„ μˆ˜ν–‰ν•œλ‹€.

  1. μ—…λ°μ΄νŠΈ 처리 루틴
    μƒˆλ‘œμš΄ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό Flash λ©”λͺ¨λ¦¬μ— μ“°λŠ” λ“±μ˜ μ—…λ°μ΄νŠΈ ν”„λ‘œμ„ΈμŠ€λ₯Ό 처리
  2. λ‚΄λΆ€ λ³΄μ•ˆ 인증 절차
    λ³΄μ•ˆμ„ κ°•ν™”ν•˜κΈ° μœ„ν•΄ Flash BootloaderλŠ” μ—…λ°μ΄νŠΈ ν”„λ‘œμ„ΈμŠ€μ—μ„œ λ‚΄λΆ€ λ³΄μ•ˆ 인증 절차λ₯Ό 거쳐 μ™ΈλΆ€λ‘œλΆ€ν„°μ˜ λΆˆλ²•μ μΈ μ—…λ°μ΄νŠΈλ₯Ό λ°©μ§€ν•˜κ³ , μ˜€μž‘λ™μ„ λ°©μ§€ν•œλ‹€.
  3. λ°”μ΄λ„ˆλ¦¬μ˜ μ •ν•©μ„± 및 동일성 검사 (β˜… μ€‘μš”)
    μ†Œν”„νŠΈμ›¨μ–΄κ°€ Flash λ©”λͺ¨λ¦¬μ— 쓰여진 ν›„, Flash BootloaderλŠ” μ“°κΈ°κ°€ μ™„λ£Œλ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ λ°”μ΄λ„ˆλ¦¬μ˜ μ •ν•©μ„± 및 동일성을 κ²€μ‚¬ν•œλ‹€. (β€» μ†Œν”„νŠΈμ›¨μ–΄κ°€ μ˜¬λ°”λ₯΄κ²Œ μ—…λ°μ΄νŠΈλ˜μ—ˆλŠ”μ§€ 확인)
  4. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ μ œμ–΄ μ œμ–΄
    λͺ¨λ“  μ—…λ°μ΄νŠΈμ™€ 검사가 μ™„λ£Œλ˜λ©΄, Flash BootloaderλŠ” μƒˆλ‘œμš΄ μ†Œν”„νŠΈμ›¨μ–΄λ‘œ μ œμ–΄λ₯Ό λ„˜κ²¨μ£Όμ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜λ„λ‘ ν•œλ‹€.

Secondary Bootloader

일반적으둜 μž₯μ• κ°€ λ°œμƒν•  경우 μ‹œμŠ€ν…œμ„ λ³΅κ΅¬ν•˜κ±°λ‚˜ μ†μƒλœ 뢀뢄을 μˆ˜μ •ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°
주둜 κΈ°λ³Έ λΆ€νŠΈλ‘œλ”μ˜ μ‹¬κ°ν•œ 였λ₯˜λ‚˜ 손상 μ‹œμ—λ§Œ ν™œμ„±ν™”λ˜λ©°, 이 κ²½μš°μ—λ§Œ μž‘λ™ν•œλ‹€.
Window둜 치면 μΌμ’…μ˜ λ°”μ΄μ˜€μŠ€μ΄λ‹€.

 

πŸ“₯ Reprogramming Process

μ•ˆμ „ν•˜κ²Œ μ—…λ°μ΄νŠΈ 되기 μœ„ν•΄ μ•„λž˜ 3가지 단계λ₯Ό 거쳐 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ—…λ°μ΄νŠΈν•œλ‹€.

Pre Programming 

λ¦¬ν”„λ‘œκ·Έλž˜λ° μ„Έμ…˜μ„ μ„€μ •ν•˜κ³  ECU의 μƒνƒœλ₯Ό μ€€λΉ„ν•˜λ©°, 이 λ‹¨κ³„μ—μ„œλŠ” λ³΄μ•ˆ μž κΈˆμ„ ν•΄μ œν•˜κ³ , μ†Œν”„νŠΈμ›¨μ–΄ 정보λ₯Ό μ½μ–΄μ˜¨λ‹€. μΆ”κ°€λ‘œ ECU의 진단 κΈ°λŠ₯을 λΉ„ν™œμ„±ν™”ν•˜μ—¬ μ•ˆμ •μ„±μ„ ν™•λ³΄ν•˜λŠ” 과정이닀.
(β€» μ„Έμ…˜ : 두 개 μ΄μƒμ˜ μž₯치 간에 μΌμ–΄λ‚˜λŠ” νŠΉμ • κΈ°κ°„ λ™μ•ˆμ˜ 톡신 ν™œλ™)

  1. Extended Diagnostic μ„Έμ…˜ μ§„μž… μš”μ²­ 및 TP λ©”μ‹œμ§€ 전솑
     Flash Reprogramming을 μ‹œμž‘ν•˜κΈ° μ „, λͺ¨λ“  ECUμ—κ²Œ Extended Diagnostic μ„Έμ…˜μ— μ§„μž…ν•˜λ„λ‘ μš”μ²­ν•˜κ³ ,
     ν•΄λ‹Ή μ„Έμ…˜μ„ μœ μ§€ν•˜μ—¬ ν”„λ‘œκ·Έλž˜λ° μ„Έμ…˜μ΄ μ‹œμž‘λ˜κΈ° 전에 톡신이 μ›ν™œν•˜κ²Œ μ΄λ£¨μ–΄μ§€κ²Œ ν•œλ‹€.
    (β€» Extended Diagnostic μ„Έμ…˜ : ECU와 진단 도ꡬ간 μ—¬λŸ¬κ°€μ§€ 정보 νšλ“μ„ μœ„ν•œ 톡신 ν™œλ™)
  2. μ„Έμ…˜ λ³€κ²½ μš”μ²­
    λ„€νŠΈμ›Œν¬μ— μ—°κ²°λœ λͺ¨λ“  ECU에 λŒ€ν•΄ Extended Diagnostic μ„Έμ…˜μ— μ§„μž…ν•˜λ„λ‘ μš”μ²­ν•œλ‹€. μ΄λ•Œ
    TP λ©”μ‹œμ§€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„Έμ…˜μ„ μœ μ§€ν•˜μ—¬, 톡신이 μ€‘λ‹¨λ˜κ±°λ‚˜ μ„Έμ…˜μ΄ λ§Œλ£Œλ˜λŠ” 것을 λ°©μ§€ν•œλ‹€.
    (β€» TP λ©”μ‹œμ§€ : μ„Έμ…˜ μ‹œμž‘, μ„Έμ…˜ μ’…λ£Œ λ“±μ˜ 진단 도ꡬ와 ECU간에 μ£Όκ³  λ°›λŠ” 각쒅 λ©”μ‹œμ§€) 
  3. OBD λ³΄μ•ˆ 잠금 ν•΄μ œ μš”μ²­
    ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ OBD λ³΄μ•ˆ μž κΈˆμ„ ν•΄μ œ μš”μ²­μ„ 보내어 ν”„λ‘œκ·Έλž˜λ° μž‘μ—…μ„ κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€. 
    (β€» OBD (Ontario Board Diagnostics)  : 차의 내뢀에 λ‚΄μž₯된 진단 μ‹œμŠ€ν…œμœΌλ‘œ μ—¬λŸ¬ 문제λ₯Ό λͺ¨λ‹ˆν„°λ§) 
  4. ν”„λ‘œκ·Έλž˜λ° 식별 정보 읽기
    각 ECU에 λŒ€ν•΄ ν”„λ‘œκ·Έλž˜λ°μ— ν•„μš”ν•œ Part number와 version ID λ“±μ˜ 식별 정보λ₯Ό 읽어와 ν”„λ‘œκ·Έλž˜λ° ν”„λ‘œμ„ΈμŠ€μ˜
    μΌλΆ€λ‘œ ν™œμš©ν•œλ‹€. 
    (β€» Part number : μ œν’ˆμ˜ 일련 λ²ˆν˜Έλ‚˜ λΆ€ν’ˆ 번호, Version ID : ECUμ—μ„œ μ‚¬μš©μ€‘μΈ μ†Œν”„νŠΈμ›¨μ–΄ 버전)
  5. ECU의 DTC μ„€μ • λΉ„ν™œμ„±ν™” μš”μ²­
    ν”„λ‘œκ·Έλž˜λ° 쀑에 λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ λ„€νŠΈμ›Œν¬μ— μ—°κ²°λœ λͺ¨λ“  ECU의 DTC 섀정을 λΉ„ν™œμ„±ν™”ν•œλ‹€.
    (β€» DTC (Diagnostic Trouble Code) : μžλ™μ°¨μ˜ 진단 μ‹œμŠ€ν…œμ—μ„œ λ°œμƒν•œ 문제λ₯Ό μ‹λ³„ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” μ½”λ“œ)  
  6. ECU의 non-diagnostic λ©”μ‹œμ§€ μ†‘μˆ˜μ‹  λΉ„ν™œμ„±ν™” μš”μ²­
    ν”„λ‘œκ·Έλž˜λ° μ„Έμ…˜ λ™μ•ˆ ECUκ°€ λΉ„ 진단 λ©”μ‹œμ§€λ₯Ό μ†‘μˆ˜μ‹ ν•˜μ§€ μ•Šλ„λ‘ λΉ„ν™œμ„±ν™”ν•œλ‹€.

Server Programming 

μ„œλ²„μ—μ„œ μ†Œν”„νŠΈμ›¨μ–΄ μ—…λ°μ΄νŠΈλ₯Ό μ‹œμž‘ν•˜κ³ , 이 κ³Όμ •μ—μ„œ λ³΄μ•ˆ 접근을 μ„€μ •ν•˜κ³  데이터λ₯Ό μ—…λ‘œλ“œν•œλ‹€.
μ΅œμ’… μ—…λ°μ΄νŠΈ ν›„ ECUλ₯Ό μž¬μ„€μ •ν•˜μ—¬ μƒˆλ‘œμš΄ μ†Œν”„νŠΈμ›¨μ–΄κ°€ 적용될 수 μžˆλ„λ‘ ν•œλ‹€.

  1. μ„Έμ…˜ λ³€κ²½ μš”μ²­
    ν”„λ‘œκ·Έλž˜λ° μ„Έμ…˜μ— μ§„μž…ν•˜κΈ° μœ„ν•΄ 각 λŒ€μƒ ECU에 μ„Έμ…˜ μ§„μž…μ„ μš”μ²­
    (β€» ν”„λ‘œκ·Έλž˜λ° μ„Έμ…˜ : ECU에 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ“°κ±°λ‚˜ μ—…λ°μ΄νŠΈν•˜λŠ” 톡신 ν™œλ™)
  2. Security Access μš”μ²­ 및 κΆŒν•œ 수령
    각 λŒ€μƒ ECU에 λŒ€ν•΄ λ³΄μ•ˆ μ•‘μ„ΈμŠ€λ₯Ό μš”μ²­ν•˜κ³  κΆŒν•œμ„ 수령
  3. Tester μ‹œλ¦¬μ–Ό λ„˜λ²„ μ“°κΈ° μš”μ²­
    좔적 및 기둝, λ³΄μ•ˆ 인증을 μœ„ν•΄ ν”„λ‘œκ·Έλž˜λ° κ³Όμ •μ—μ„œ Tester의 μ‹œλ¦¬μ–Ό λ„˜λ²„λ₯Ό λŒ€μƒ ECU에 μ“°κΈ° μœ„ν•΄ μš”μ²­ 
  4. Programming Date μ“°κΈ° μš”μ²­
    λŒ€μƒ ECU에 ν”„λ‘œκ·Έλž˜λ° λ‚ μ§œλ₯Ό μ“°κΈ° μœ„ν•΄ μš”μ²­
  5. μ—…λ°μ΄νŠΈν•  μ˜μ—­ μ‚­μ œ μš”μ²­
    λŒ€μƒ ECU에 λŒ€ν•΄ μ—…λ°μ΄νŠΈν•  μ˜μ—­μ„ μ‚­μ œν•˜κ³  μ΄ˆκΈ°ν™”ν•˜κΈ° μœ„ν•΄ μš”μ²­
  6. μ—…λ°μ΄νŠΈν•  data segment λ‹¨μœ„λ‘œ 전솑 μš”μ²­
    λŒ€μƒ ECU에 λŒ€ν•΄ μ—…λ°μ΄νŠΈν•  데이터λ₯Ό segment λ‹¨μœ„λ‘œ μ „μ†‘ν•˜κΈ° μœ„ν•΄ μš”μ²­
  7. λ‹€μš΄λ‘œλ“œλœ data μ •ν™•μ„± 체크
    μ „μ†‘λœ λ°μ΄ν„°μ˜ 정확성을 ν™•μΈν•˜κ³  κ²€μ¦ν•˜κΈ° μœ„ν•΄ λ‹€μš΄λ‘œλ“œλœ 데이터λ₯Ό 체크
  8. ECU Reset:
    ν”„λ‘œκ·Έλž˜λ°μ΄ μ™„λ£Œλ˜λ©΄ λŒ€μƒ ECUλ₯Ό μž¬μ„€μ •ν•˜μ—¬ μƒˆλ‘œμš΄ μ†Œν”„νŠΈμ›¨μ–΄κ°€ μ μš©λ˜λ„λ‘ ν•œλ‹€. 

Post Programming 

μ—…λ°μ΄νŠΈ ν›„ ECU의 μƒνƒœλ₯Ό λ³΅κ΅¬ν•˜κ³  λ¦¬ν”„λ‘œκ·Έλž˜λ° μ„Έμ…˜μ„ μ’…λ£Œν•œλ‹€.
이 λ‹¨κ³„μ—μ„œλŠ” λ³΄μ•ˆ 섀정을 λ‹€μ‹œ ν™œμ„±ν™”ν•˜κ³ , ECUλ₯Ό κΈ°λ³Έ μ„Έμ…˜μœΌλ‘œ λ³΅μ›ν•˜μ—¬ 정상적인 μž‘λ™μ„ 보μž₯ν•œλ‹€.

  1. μ„Έμ…˜ λ³€κ²½ μš”μ²­
     ν”„λ‘œκ·Έλž˜λ°μ΄ μ™„λ£Œλœ ν›„, λŒ€μƒ ECU에 λŒ€ν•΄ Extended Diagnostic Session에 λ‹€μ‹œ μ§„μž…ν•˜κΈ° μœ„ν•œ μš”μ²­μ„ 보낸닀. 
  2. λ„€νŠΈμ›Œν¬μ— μ—°κ²°λœ λͺ¨λ“  ECU non-diagnostic λ©”μ‹œμ§€ μ†‘μˆ˜μ‹  ν™œμ„±ν™” μš”μ²­
    ν”„λ‘œκ·Έλž˜λ°μ΄ μ™„λ£Œλ˜κ³  정상적인 톡신이 재개된 ν›„, λ„€νŠΈμ›Œν¬μ— μ—°κ²°λœ λͺ¨λ“  ECU의 λΉ„ 진단 λ©”μ‹œμ§€ μ†‘μˆ˜μ‹ μ„ λ‹€μ‹œ
    ν™œμ„±ν™”ν•œλ‹€. 
  3. λ„€νŠΈμ›Œν¬μ— μ—°κ²°λœ λͺ¨λ“  DTC setting On μš”μ²­
     ν”„λ‘œκ·Έλž˜λ°μ΄ μ™„λ£Œλœ ν›„, λ„€νŠΈμ›Œν¬μ— μ—°κ²°λœ λͺ¨λ“  ECU의 DTC 섀정을 λ‹€μ‹œ ν™œμ„±ν™”ν•œλ‹€.
  4. μ„Έμ…˜ λ³€κ²½ μš”μ²­
    ν”„λ‘œκ·Έλž˜λ°μ΄ μ™„λ£Œλœ ν›„, λ„€νŠΈμ›Œν¬μ— μ—°κ²°λœ λͺ¨λ“  ECU에 λŒ€ν•΄ Default Session에 μ§„μž…ν•˜κΈ° μœ„ν•œ μš”μ²­μ„ 보낸닀.

μ°Έμ‘°

https://blog.naver.com/mdstec_auto/222175529338

https://buildstorm.com/blog/automotive-bootloader-fbl/

https://m.blog.naver.com/suresofttech/221282372396

 

 

'embedded' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

CAN λ„€νŠΈμ›Œν¬ λ§€λ‹ˆμ§€λ¨ΌνŠΈ(NM) 정리  (0) 2024.03.21
SOC(FPGA/ASIC) 정리  (0) 2024.03.12
AutoSAR 정리  (0) 2024.01.16
Simulink 정리  (0) 2024.01.11
MATLAB 정리  (0) 2024.01.08
profile

Toby's Study Blog

@Toby12

ν¬μŠ€νŒ…μ΄ μ’‹μ•˜λ‹€λ©΄ "μ’‹μ•„μš”β€οΈ" λ˜λŠ” "κ΅¬λ…πŸ‘πŸ»" ν•΄μ£Όμ„Έμš”!

검색 νƒœκ·Έ