Thông qua các giai đoạn của quá trình biên dịch, chương trình ứng dụng được người dùng phát triển trên ngôn ngữ bậc cao như C/C++ sẽ được chuyển thành ngôn ngữ máy để thiết bị nhúng có thể hiểu và thực thi được. Chương trình ứng dụng sẽ được truyền thành từng chuỗi byte sau khi nó được chuyển thành định dạng tập tin phổ biến như *.hex hoặc *.bin từ các ngôn ngữ lập trình thường sử dụng khi lập trình nhúng như C/C++. Chuỗi byte này có liên quan tới địa chỉ bộ nhớ của vi điều khiển.  Có thể nạp hay thay đổi chương trình đang chạy trên thiết bị bằng cách cắm dây nạp trực tiếp từ máy tính xuống thiết bị thông qua các mạch nạp (programmer).  Trong trường hợp các thiết bị nhúng hỗ trợ cập nhật chương trình từ xa thì tập tin chương trình từ máy chủ quản lý dữ liệu sẽ được tải xuống thiết bị nhúng thông qua môi trường Internet và được ghi vào bộ nhớ. Bài viết này sẽ phân tích định dạng của tập tin chương trình ở định dạng HEX và tập tin chương trình ở định dạng BIN. Việc hiểu được định dạng các tập tin giúp các bạn có thể triển khai các tính năng như cập nhật chương trình từ xa (FOTA) hoặc có thay đổi chương trình ứng dụng thông qua một chuẩn giao tiếp phổ biến như UART (In-Application Programming – IAP) mà không cần sử dụng mạch nạp để ghi trực tiếp chương trình vào bộ nhớ . Continue Reading

Thiết kế của vi xử lý ARM Cortex M3/4 định nghĩa và phân chia các vùng nhớ khác nhau trong không gian bộ nhớ của vi xử lý. Sau đó, các hãng vi điều khiển như STMicroelectronics sẽ thiết kế các bộ nhớ khác nhau của họ như bộ nhớ FLASH, bộ nhớ SRAM và các ngoại vi khác nhau như ADC, TIMER, USB… vào các vùng nhớ tương ứng với không gian bộ nhớ của vi xử lý.Continue Reading

Dòng vi xử lý ARM Cortex M là một dòng vi xử lý được thiết kế tối ưu cho giá thành và năng lượng tiêu thụ của vi điều khiển, được sử dụng trong rất nhiều ứng dụng nhúng khác nhau. Trong bài viết này, mình sẽ cung cấp một số thông tin về Vi xử lý ARM Cortex M, quá trình khởi động của các vi điều khiển được thiết kế dựa trên vi xử lý này và việc áp dụng các kiến thức trên để thiết kế tính năng cập nhật chương trình từ xa.  Continue Reading

Có hai cách để MCU trao đổi dữ liệu với các thiết bị bên ngoài, đó là truyền dữ liệu nối tiếp và song song. Đối với kênh truyền nối tiếp, một số giao thức chúng ta thường sử dụng: SPI, I2C và UART. Bài viết này sẽ giúp các bạn hiểu rõ về chuẩn giao tiếp SPI và hướng dẫn các bạn giao tiếp SPI với STM32F4.Continue Reading

Đối với những lập trình viên đã và đang làm việc với vi điều khiển STM32 chắc hẳn từng đọc qua các lưu ý khi viết một chương trình phục vụ ngắt, trong đó có lưu ý không nên sử dụng hàm HAL_Delay ở các chương trình này. Vậy việc gọi HAL_Delay trong các chương trình phục vụ ngắt sẽ tác động đến luồng thực thi của vi điều khiển như thế nào?Continue Reading

Board STM32 BluePill là một Board mạch phát triển STM32 đơn giản với vi điều khiển STM32F103C8T6. Board mạch này không phải chính hãng của STMicroelectronics, sử dụng kèm với một mạch nạp/debugger ST-Link. Có giá thành rẻ nên thường được các bạn sinh viên lựa chọn khi mới bắt đầu học/tìm hiểu về dòng vi điều khiển STM32 lõi ARM. Tuy nhiên, trên thị trường hiện nay có xuất hiện nhiều board mạch này được thiết kế sử dụng chip fake. Bài viết này sẽ trình bày các vấn đề gặp phải và cách khắc phục giúp các bạn có thể sử dụng STM32CubeIDE để lập trình, debug được board mạch STM32F103 BluePill.Continue Reading

Trong chuỗi bài viết hướng dẫn cập nhật chương trình từ xa (FOTA) cho dòng vi điều khiển STM32F103, mình đã trình bày tổng quan về mô hình FOTA ở phần 1, cách viết chương trình Bootloader ở phần 2, và giải thích về cấu trúc của một file chương trình IntelContinue Reading

Để sử dụng tính năng FOTA, bộ nhớ chương trình trong STM32F103RCT6 sẽ chia làm 4 chương trình chính tại 4 vị trí khác nhau là: Bootloader Firmware, FOTA Firmware, Factory Firmware và Current Firmware. Trong đó, FOTA Firmware có nhiệm vụ thực hiện việc cập nhật chương trình bằng cách kết nối và tải chương trình mới từ server về và lưu vào bộ nhớ flash để thay đổi Current Firmware cho cho thiết bị. Bài viết này sẽ phân tích và hướng dẫn các bạn viết chương trình cho FOTA Firmware.Continue Reading

Hệ sinh thái STM32Cube là một giải pháp phần mềm hoàn chỉnh cho các dòng vi điều khiển STM32 và các dòng vi xử lý. Hệ sinh thái này dành cho những người dùng đang tìm kiếm một môi trường phát triển đầy đủ và miễn phí cho STM32, cũng như dành cho những người đang sử dụng một số IDE khác như KeilC hoặc IAR. Trong hệ sinh thái này có sự tích hợp của các thành phần gồm STM32CubeMX, STMCubeProgrammer và STM32CubeMonitor.Continue Reading

File firmware định dạng hex là một tập tin chứa nội dung chương trình cùng các thông tin chỉ dẫn với 6 loại HEX record khác nhau theo định dạng Intel HEX. Mỗi record sẽ bao gồm nhiều ký tự ASCII biểu diễn các giá trị theo mã hexadecimal. Trong quá trình FOTA, từ File Intel HEX chúng ta phải tách nội dung chương trình ra và lưu vào bộ nhớ flash của vi điều khiển theo các chỉ dẫn địa chỉ đi kèm trong file.Continue Reading