Title Image

Blog Logo

🌱 STM32 - 20. Chuẩn CMSIS

🌱 STM32 - 20. Chuẩn CMSIS

    Các vi điều khiển dựa trên nền tảng ARM Cortex-M3/M4/M7 ngày càng phổ biến, và việc chúng ta học, hay làm việc với dòng nào cũng là sự lựa chọn đau đầu. Sự ra đời của chuẩn Cortex Microcontroller Software Interface Standard (CMSIS) làm cho việc tương thích phần mềm cũng như sử dụng lại mã nguồn trở nên đơn giản và dễ dàng. Điều này giúp ích rất nhiều cho người học cũng như làm việc với các vi điều khiển ARM. 

    👉 Tại sao cần có CMSIS?

    Đối với các ứng dụng Vi điều khiển, mỗi khi có thiết bị mới người lập trình phải viết lại phần mềm điều khiển tương thích với thiết bị mới. Hoặc thay đổi Chip chẳng hạn, ứng dụng cần được nâng cấp từ STM32F1 lên STM32F4, thì với các thông thường chúng ta phải phát triển lại toàn bộ chương trình. Các gói thư viện hay phần mềm điều khiển có sẵn rất khó tích hợp với phần cứng mới. 

    ➤ Điều này làm tăng thời gian phát triển cũng như rủi ro và giá thành của dự án.

    Để khắc phục điều đó, các nhà sản xuất chíp phải cung cấp một khung giao diện phần mềm chuẩn miễn phí cho việc điều khiển và truy cập thiết bị.

    ➤ Chuẩn CMSIS ra đời, do ARM cung cấp. 

    👉 CMSIS là viết tắt của Common Microcontroller Software Interface Standard. CMSIS là một lớp trừu tượng độc lập dành cho vi điều khiển, được xây dựng dựa trên vi xử lý ARM Cortex. Các công dụng chính của CMSIS mang lại:

  • Đơn giản hóa việc tái sử dụng phần mềm.
  • Giảm thời gian học tập cho người học và làm.
  • Giảm thời gian tiếp cận với các thiết bị phần cứng mới. 

    👉 Cấu trúc CMSIS

    Cấu trúc CMSIS được mô tả dưới hình sau:

CMSIS

    Có thể thấy CMSIS sẽ tương tác trực tiếp với Hardware, vì vậy, khi sử dụng CMSIS, người dùng sẽ không cần quan tâm nhiều đến phần cứng, các thanh ghi ngoại vi hay Interrupt Vector đều đã được định nghĩa trước trong một header file. 

  • Peripheral Access Layer (CMSIS-PAL): lớp này xác định tên, địa chỉ, và các hàm cần thiết để truy cập đến thanh ghi Core và thiết bị ngoại vi chuẩn. Ngoài ra CMSIS-PAL còn giới thiệu cách truy cập phù hợp với nhiều loại thiết bị ngoại vi bên trong lõi, và các vector xử lý ngoại lệ (exception) và ngắt. Cùng với đó là các hàm khởi động các thiết lập ban đầu cho hệ thống, hệ thống hàm giao diện chuẩn để giao tiếp với nhân của hệ điều hành và hệ thống hỗ trợ sửa lỗi.
  • Middleware Access Layer (CMSIS-MAL): cung cấp các phương thức để truy cập vào thiết bị ngoại vi từ các lớp ứng dụng phía trên. Lớp này được quy định bởi hiệp hội các nhà sản xuất chip, do đó giúp tái sử dụng lại các thư viện cấp cao và phức tạp. Hiện nay, CMSIS-MAL vẫn đang trong quá trình phát triển và được hỗ trợ bởi IAR, Keil, Micrium, Segger và nhiều nhà sản xuất phần mềm khác.
    👉 CMSIS là một lớp tách biệt với phần cứng, chúng ta không cần sử dụng CMSIS thì vẫn có thể lập trình thao tác với thanh ghi, tuy nhiên làm vậy rất mất thời gian phát triển phần mềm. Vì vậy, việc học tập bằng thanh ghi là rất tốt, nhưng khi muốn phát triển phần mềm, làm ứng dụng, hãy cân nhắc sử dụng CMSIS bởi sự hiệu quả của nó. CMSIS cũng không gây tốn tài nguyên của Vi điều khiển, cũng như có sự hướng dẫn từ ARM rất nhiều. 
    Các bạn có thể tham khảo Tài liệu hỗ trợ CMSIS tại đây!

    👉 Cấu trúc các file trong CMSIS


  • File core_cm3.h/.c cung cấp các define, function chung của Cortex M3, trong đó có các define liên quan đến thanh ghi core, ngoại vi core như NVIC, MPU, ... và một số API mà chúng ta thường gặp như __NVIC_EnableIRQ, __NVIC_DisableIRQ, ....
  • File system_<device>.h/.c cung cấp các define, function riêng cho từng dòng chip, chẳng hạn system_stm32f1xx.h sẽ khác với system_stm32f4xx.h. Điểm chung là chúng lưu các define về thanh ghi ngoại vi, các biến toàn cục, các function hỗ trợ như SystemInit(), ...
  • File <device>.h đã include các file còn lại, device ở đây là tên của phần cứng sử dụng. Một ví dụ mà chúng ta thường sử dụng đó chính là STM32F4xx.h

>>>= Follow ngay =<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

                                        

Đăng nhận xét

0 Nhận xét