NẠP CODE CHO STM32 BẰNG BOOT LOADER

NẠP CODE CHO STM32 BẰNG BOOT LOADER

NẠP CODE VỚI BOOT LOADER STM32
  1. Boot loader là gì
  2. Nhìn sơ đồ chân của vi điều khiển STM32 có khi nào các bạn thắc mắc chân BOOT0, BOOT1 để làm gì không?? Không tự dưng mà nhà sản xuất lại thiết kế chúng mà không có ứng dụng gì. Mục đích của chân này để phân chia các chuẩn nạp code cho MCU tùy thuộc vào mục đích của người sử dụng. Các loại STM32Fxx khác cũng gần giống như STM32F1, hệ thống các chuẩn nạp được phân chia như sau:
    Có 3 chuẩn mode như hình ở trên:
    • Main flash memory: chuẩn này là chuẩn nạp code thông thường của MCU(dùng các mạch nạp như Stlink, Jlink….) thiết kế của nó là chân BOOT0 sẽ được nối đất. Vì lý do này nên chân BOOT đươc thiết kế là nối xuống GND thông qua trở kéo nguồn. Không có sự kết nối này, các mạch nạp sẽ không nhận dạng được IC được nạp và sẽ bị báo lỗi không tìm thấy MCU.
    • System memory : đây là chuẩn nạp code đặc biệt của MCU thông qua những chương trình nạp mà nhà sản xuất cung cấp. Tùy vào dòng MCU mà có các ngoại vi nạp khác nhau như : UART, SPI, USB, I2C.. Ở STM32F103C8T6 chuẩn nạp này chỉ được áp dụng ở UART1 trên chân PA9,PA10. Điều kiện là chân BOOT0 nối nguồn 3V3 và chân BOOT1(PB2) nối GND.
    • Embedded SRAM: chuẩn này cho phép truy cập địa chỉ SRAM nội bên trong IC. Điều kiện là chân BOOT0 nối nguồn 3V3 và chân BOOT1(PB2) nối 3V3. Chuẩn này mình chưa sử dụng, hy vọng có ai đó bổ sung chuẩn này.
  3. Sử dụng boot loader với chuẩn UART.
  4. Chương trình nạp: flash loader demo.
    Module UART: các module UART có bán trên thị trường : USB sang UART dùng PL2303, CH340, CP2102, FT232RL….
    Yêu cầu phần cứng:
    • Máy tính nhận cổng COM của các module UART(đã cài đặt driver….)
    • Cấp nguồn cho module UART, board STM32.
    • Chân BOOT0 nối 3V3, chân BOOT1 nối GND.
    • Có file code nạp đuôi ở 3 dạng file .s19; .hex; .bin.
    • Kiểm tra các bus nối đã được kết nối, không bị lỏng bất cứ chân nào.
    Các bước thực hiện:
    1. Tạo file hex trong Keil C.
    2. Mở keil C lên vào options for Target bằng các kích vào biểu tượng hoặc project -> Options for target, vào tab Output, click vào ô Create hex file sau đó nhấn Rebuild(F7).
      Như vậy là file hex đã được tạo, kiểm tra trong thư mục Object của project.
    3. Đấu nối các dây kết nối.
    4. Mở phần mềm flash loader demo và thực hiện theo như sau.
      • Chọn cổng COM tương ứng với cổng COM của module UART. Các thông số khác giữ nguyên, ngoại trừ baud rate(có thể thay đổi). Nhấn Next để tiếp tục.
      • Lưu ý: Bạn có thể mất vài lần cắm nếu phần mềm không kết nối được với MCU do một vài lỗi(Cắm dây lỏng, đấu nối dây sai hay thiếu, mạch bị hư…). Hãy reset lại mạch và kiểm tra kỹ lại.

      • Kích thước bộ nhớ flash của MCU sẽ xuất hiện. Nhấn next để tiếp tục.
      • Loại MCU và các page nhớ xuất hiện, nhấn Next để tiếp tục.
      • Xuất hiện Tab tiếp theo với nhiều lựa chọn, ở đây mình chọn là Nạp code mới và chọn đường dẫn đến file hex mà mình đã chuẩn bị. Nhấn Next để tiếp tục
      • Nhấn Next để nạp, sau khi nạp xong sẽ có thông báo đã nạp xong.
      • Sau khi nạp xong, đưa mạch trở về trạng thái Main flash memory(BOOT0 nối đất, BOOT1 tùy chỉnh). Reset mạch, mạch chạy bình thường.
      Ưu điểm của phương pháp này là không cần những mạch nạp đắt tiền vẫn nạp được code cho MCU, ứng dụng để tiết kiệm chân VĐK(PA14, PA13, PB3.. những chân cho mạch nạp) mà vẫn đầy đủ các chức năng cơ bản. Đó cũng là công nghệ giúp bảo mật các thiết kế(tìm hoài trên mạch không thấy chân nạp thông thường….).
      Nhược điểm: khá nhiều thao tác(cắm, cắm, reset, lỏng dây..), rườm rà, không debug được lỗi, dễ xảy ra sai sót, cũng như không nhiều chức năng được thêm vào. Và thường chỉ được sử dụng khi không có mạch nạp.

About: xuan minh

Mình muốn chia sẻ những kiến thức có được trong quá trình học tập và làm việc, hy vọng điều đó sẽ giúp ích cho các bạn.

You may also like :

10 comments :

  1. Dương Gia HUyJuly 10, 2019 at 2:03 PM

    Dùng các chân UART khác của STM32f103 được ko Ad?

    ReplyDeleteReplies
    1. xuan minhJuly 12, 2019 at 9:53 PM

      Không được nhé bạn. Nhà sản xuất đã cố định chức năng này. Tùy thuộc vào từng dòng chip mà có thể nạp boot loader không phải là UART nha.Tra cứu thêm trong file AN2606 của nhà sản xuất nhé.

      DeleteReplies
        Reply
    2. Reply
  2. QUOCBRAVEMarch 23, 2020 at 7:43 PM

    Cho em hỏi là file AN2606 ở đâu vậy anh?

    ReplyDeleteReplies
    1. xuan minhMarch 23, 2020 at 10:07 PM

      bạn chỉ cần search google là sẽ ra tài liệu này. Nó là tài liệu liên quan đến "system memory boot mode" do nhà sản xuất cung cấp.

      DeleteReplies
        Reply
    2. QUOCBRAVEMarch 24, 2020 at 1:14 PM

      Em cảm ơn anh!!!

      DeleteReplies
        Reply
    3. Reply
  3. thanhviet228December 15, 2021 at 12:33 AM

    Cái hướng dẫn này áp dụng được với stm32f4 không bạn ?

    ReplyDeleteReplies
    1. xuan minhDecember 17, 2021 at 9:58 PM

      Chào bạn, cái này áp dụng được cho STM32F4 nha bạn, nhưng bạn cần chú ý chân bootloader của từng dòng vi điều khiển riêng biệt.

      DeleteReplies
        Reply
    2. Reply
  4. AnonymousAugust 17, 2023 at 4:06 PM

    Sao mình ko kết nối được STM32F102

    ReplyDeleteReplies
    1. xuan minhDecember 17, 2023 at 9:08 AM

      Chào bạn,+ Bạn kiểm tra xem loại STM32F102 bạn sử dụng là loại cụ thể nào, nó hỗ trợ chuẩn nạp bootloader mặc định là loại nào(UART, USB....).+ Nếu đã xác định được loại kết nối hỗ trợ, bạn kiểm tra mức logic của các chân boot, nguồn cấp, các dây có kết nối hay chưa...

      DeleteReplies
        Reply
    2. Reply
  5. ThuongOctober 30, 2024 at 9:29 PM

    Mình có thể tự viết chương trình bootloader không vậy anh.

    ReplyDeleteReplies
      Reply
Add commentLoad more... Newer Post Older Post Subscribe to: Post Comments (Atom)

Bài đăng phổ biến

  • BÀI 08: UART TRONG STM32F103 BÀI 08: UART TRONG STM32F103. Sơ lược về lý thuyết. UART - Universal synchronous asynchronous receiver transmitter là một ngoại vi cơ...
  • BÀI 09: ADC TRONG STM32F103 BÀI 09: ADC TRONG STM32F103. Sơ lược về lý thuyết. ADC – Analog to digital Converter là bộ chuyển đổi tín hiệu tương tự sang tín hiệu...
  • BÀI 07: PWM TRONG STM32F103 BÀI 07: PWM TRONG STM32F103. Sơ lược về lý thuyết. PWM(pulse- with modulation) hay còn gọi nôm na là “băm xung” hay “điều khiển độ r...
  • BÀI 02 : GPIO VỚI STM32F1 BÀI 02 : GPIO VỚI STM32F1. Sơ lược về lý thuyết. GPIO là từ viết tắt của General purpose I/O po...
  • BÀI 00 : GIỚI THIỆU VỀ STM32F103C8T6 BÀI 00 : GIỚI THIỆU VỀ STM32F103C8T6. Giới thiệu sơ lược STM32 là một trong những dòng chip...
  • NẠP CODE CHO STM32 BẰNG BOOT LOADER NẠP CODE VỚI BOOT LOADER STM32 Boot loader là gì
  • BÀI 04 : SYSTEM TICK TIMER VỚI STM32F1 BÀI 04 : SYSTEM TICK TIMER VỚI STM32F1. Sơ lược về lý thuyết. System Tick Timer là bộ timer 24 bit độc lập nằm trong lõi cortex. Bộ t...
  • BÀI 06 : TIMER BASE trong STM32F103 BÀI 06 : TIMER BASE trong STM32F103. Sơ lược về lý thuyết. STM32f103C8 có tất cả 7 timer nhưng trong đó đã bao gồm 1 systick timer, 2...
  • BÀI 10: DMA VỚI STM32F103 BÀI 10: DMA VỚI STM32F1. Giới thiệu sơ lược về DMA. ...
  • BÀI 05 : Ngắt ngoài với STM32F1 BÀI 05 : Ngắt ngoài với STM32F1. Sơ lược về lý thuyết. NVIC - Nested vectored interrupt controller là bộ vector ngắt lồng nhau. Nghĩa...

About Me

xuan minh View my complete profile

Popular

Labels

Archive

Hướng dẫn tạo project trong STM8S với STVD

  • BÀI 07: PWM TRONG STM32F103 BÀI 07: PWM TRONG STM32F103. Sơ lược về lý thuyết. PWM(pulse- with modulation) hay còn gọi nôm na là “băm xung” hay “điều khiển độ r...
  • BÀI 09: ADC TRONG STM32F103 BÀI 09: ADC TRONG STM32F103. Sơ lược về lý thuyết. ADC – Analog to digital Converter là bộ chuyển đổi tín hiệu tương tự sang tín hiệu...
  • BÀI 08: UART TRONG STM32F103 BÀI 08: UART TRONG STM32F103. Sơ lược về lý thuyết. UART - Universal synchronous asynchronous receiver transmitter là một ngoại vi cơ...

Labels

  • 01. Giao tiếp với cảm biến ánh sáng BH1750.
  • 10. MXCUBE HAL STM32F407 SIMULATE EEPROM.
  • 13. FLASH và EEPROM TRONG STM8S.
  • 14. OPTION BYTES TRONG STM8S
  • ADC TRONG STM32F103
  • ADC TRONG STM8S
  • ADC với STM32F303CC.
  • BÀI 00 : GIỚI THIỆU VỀ STM32F103C8T6
  • BÀI 01 : HƯỚNG DẪN TẠO PROJETC STM32 VỚI KEIL V5.
  • BÀI 02 : GPIO VỚI STM32F1
  • BÀI 03 : CLOCK HỆ THỐNG VỚI STM32F1
  • BÀI 04 : SYSTEM TICK TIMER VỚI STM32F1
  • Bài 04. Giao tiếp với OLED 0.96 inch SSD1306.
  • Bài 05: PWM với STM32F303CC trong MXCUBE
  • BOARD STM32F103C8T6 - STLINK.
  • BOARD STM8S003F3P6 - UART.
  • BOOT LOADER VỚI STM32
  • Bootloader STM8S trên IAR.
  • CLOCK HỆ THỐNG TRONG STM8S
  • DAC với STM32F303CC
  • DMA VỚI STM32F103
  • ENCODER TRONG STM8S
  • ENCODER VỚI STM32F103
  • Export library from existing project in altium
  • EXTERNAL INTERRUPT với STM32F303CC
  • GPIO trong STM8S với STVD
  • GPIO với STM32CubeMX trong STM32F303
  • Hướng dẫn tạo project với STM32CubeMX
  • I2C VỚI IC DS1307
  • I2C VỚI STM32F1
  • NẠP CHƯƠNG TRÌNH VỚI CÁC CHÂN ALTERNATE FUNCTION(REMAP)TRONG STVP
  • NGẮT NGOÀI TRONG STM8S
  • Ngắt ngoài với STM32F1
  • PWM TRONG STM32F103
  • PWM trong STM8S
  • RTC VỚI STM32F103
  • RTC với STM32F303CC
  • SPI VỚI STM32F1
  • SRF05 VỚI STM8S
  • Tạo project cho STM8S với IAR for STM8S
  • Tạo project trong STM8S với STVD
  • THIẾT KẾ LED VỚI 2 CHÂN PB4 VÀ PB5
  • TIMER BASE trong STM32F103
  • TIMER BASE và NGẮT TIMER
  • TIMER BASE VỚI MXCUBE SỬ DỤNG STM32F303CC
  • TỐI ƯU CODE TRONG STVD
  • UART TRONG STM32F103
  • UART TRONG STM8S
  • UART với STM32F303CC trong MXCUBE

Blog Archive

  • ▼  2018 (36)
    • ▼  April (5)
      • BÀI 13: RTC VỚI STM32F103.
      • BÀI 12: I2C VỚI STM32F1.
      • BÀI 11: SPI VỚI STM32F1
      • BÀI 10: DMA VỚI STM32F103
      • NẠP CODE CHO STM32 BẰNG BOOT LOADER

Blogger templates

Blogroll

About

Copyrights at chia sẻ các vấn đề điện tử © - Powered By Xuan Minh

SEARCH ON chia sẻ các vấn đề điện tử

Từ khóa » Dfu Loader Là Gì