Giới thiệu
Các vi điều khiển dựa trên nền tảng ARM Cortex-M3 đang trở nên rất phổ biến trong
các thiết bị công nghiệp. Gần đây là sự giới thiệu của dòng Cortex-M0 với các đặc tính kỹ
thuật nổi trội cùng với chi phí thấp hơn. Cùng với đó là 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.
Trong các dòng vi xử lý hiện nay thì loại đa dụng (general-purpose MCU) là dòng có nhiều biến thể nhất. Kiến trúc của vi điều khiển cũng thay đổi rất nhiều trong suốt 20 năm phát triển vừa qua, chủ yếu là dòng 8 bit và 16 bit. Những năm gần đây, những kiến trúc hiện thời đã được thay đổi nhằm đáp ứng yêu cầu ngày càng cao của thực tế. Bộ hỗ trợ tính toán, hay bộ tính toán chuyển đổi hệ tọa độ (CORDI) đã được bổ sung nhằm tăng hiệu suất thực thi cho vi điều khiển.
Khi chưa có hệ thống thiết bị ngoại vi và giao diện phần mềm chuẩ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. Như vậy kiểu lập trình hướng đối tượng tiên tiến không được áp dụng. 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ị.
Hạn chế trong quá trình sửa lỗi
Một trong các hạn chế lớn nhất của kiến trúc 8 bit và 16 bit hiện nay là khả năng sửa lỗi chương trình. Trong nhiều trường hợp chúng ta chỉ có thể sử dụng điểm dừng (breakpoint) để sửa lỗi chương trình còn theo dõi dữ liệu động khi chương trình đang thực thi thì không thể. Với các chương trình đơn giản, các hạn chế trên có thể không ảnh hưởng nhiều đến việc sửa lỗi, nhưng với các ứng dụng phức tạp, lượng mã nguồn nhiều và có sự tích hợp với nhiều thành phần cứng và mềm thì hạn chế trên làm phức tạp quá trình sửa lỗi ảnh hưởng đến tiến độ, thậm chí là sự thành công của dự án. Một ví dụ thực tế trên nền tảng PC, khi chuẩn phần cứng dành cho PC ra đời (Ethernet, USB, Firewire…), cộng thêm sự hỗ trợ đắc lực từ phần cứng đối với việc theo dõi lỗi, rất nhiều phần mềm hữu ích đã được phát triển và triển khai thành công.
Bộ xử lý Cortex-M3 tích hợp nhân CPU 32-bit, bộ điều khiển đánh thức khi có ngắt giúp cho các hoạt động tiêu tốn ít năng lượng hơn, và hệ thống điều khiển ngắt lồng nhau (nested vector interrupt controller-NVIC) cho phép rút ngắn thời gian trì hoãn đáp ứng ngắt (tức hệ thống đáp ứng ngắt nhanh hơn) với nhiều mức ưu tiên khác nhau. ETM là viết tắt của cụm từ “embedded trace macrocell”, đây là hệ thống chuẩn cung cấp đầy đủ chức năng sửa lỗi và theo dõi biến của chương trình. Nó cho phép lấy thông tin từ CPU trước và sau khi thực thi lệnh. ETM có thể được cấu hình bởi phần mềm và thông qua cổng giao tiếp đặc biệt(serial wire viewer) từ đó chương trình ở ngoài có thể giao tiếp, cấu hình và lấy các thông tin cần thiết cho việc sửa lỗi mà không ảnh hưởng gì đến chương trình đang thực thi.
|
Hình 1. Các thành phần chính của vi xử lí Cortex-M3 |
Chuẩn phần mềm
Để chuẩn bị cho việc mở rộng và phổ biến nhân xử lý Cortex trong tương lai, chuẩn CMSIS đã ra đời nhằm giải quyết các vấn đề tương thích giữa phần mềm và phần cứng. CMSIS là chuẩn đặt ra bởi các nhà sản xuất phần cứng và phần mềm nhằm tạo nên một chuẩn phần mềm được chấp thuận rộng rãi trong công nghiệp.
|
Hình 2. Kiến trúc các lớp trừu tượng hoá của CMSIS |
Dễ dàng sử dụng và dễ dàng học, cung cấp các chuẩn giao tiếp cho các thiết bị ngoại vi, hệ điều hành thời gian thực và phần mềm hỗ trợ là mục tiêu chính của CMSIS. Ngoài ra CMSIS cũng tương thích với các trình biên dịch phổ biến hiện nay như GCC, IAR, Keil…
CMSIS gồm 2 lớp:
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 của lõi 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.
Sự xuất hiện của CMSIS hoàn toàn không ảnh hưởng đến các thiết bị phần cứng hiện thời cũng như các hệ thống sẵn có. Chúng ta hoàn toàn có thể dùng các cách thông thường để truy cập trực tiếp đến thanh ghi để điều khiển thiết bị mà không cần dùng CMSIS. Tài nguyên hệ thống dành cho CMSIS-PAL cũng không đáng kể. CMSIS-MAL chỉ đòi hỏi giao diện mềm và chuẩn cho các lớp bên trên, do vậy cũng không làm tiêu tốn tài nguyên. Xây dựng hệ thống dựa trên chuẩn CMSIS sẽ tạo nên một bộ khung lập trình rõ ràng, dễ dàng theo dõi, mở rộng và tái sử dụng. Thêm vào đó mã nguồn chuẩn CMSIS được hỗ trợ bởi nhiều trình biên dịch. Nhằm tạo sự dễ dàng cho các nhà phát triển, ARM đã biên soạn hệ thống tài liệu tham khảo dành cho Cortex-M3 cũng như các thiết bị ngoại vi đi kèm tương thích với CMSIS.
Tính ổn định của CMSIS
CMSIS đươc thiết kế độc lập với trình biên dịch. Hệ thống hàm chuẩn được hỗ trợ bởi phần cứng và phần mềm cung cấp khung phần mềm chuẩn do đó giảm thiểu rủi ro trong quá trình phát triển. Một khi chuẩn được sử dụng rộng rãi, mã nguồn sẽ trở nên dễ hiểu, dễ sử dụng lại, cũng như dễ dàng chỉnh sửa lỗi.
Trong công nghiệp, hệ thống tiêu chuẩn kỹ thuật rất quan trọng trong việc cải tiến chất lượng sản phẩm, phát triển các thành phần phụ cũng như giảm chi phí phát triển. Tuy nhiên sự phát triển của bộ vi xử lý lại không tuân theo một chuẩn nhất định, mỗi nhà sản xuất lại sử dụng những hệ thống riêng biệt không tương thích lẫn nhau. Do đó với sự ra đời của vi xử lý chuẩn Cortex-M3 không chỉ cho phép sử dụng lại bộ công cụ phát triển mà cùng với CMSIS giúp làm giảm chi phí, thời gian triển khai cùng với rủi ro kỹ thuật. Các nhà phát triển phần cứng có thể tập trung nguồn lực phát triển tính năng nổi trội của thiết bị và hỗ trợ ngoại vi.
Kết luận
Phát triển một hệ thống tiêu chuẩn phần cứng và phần mềm chính là chìa khóa cho việc phát triển hệ thống nhúng. Với quy luật phát triển của kỹ thuật, các thiết bị phần cứng ngày càng tốt và phức tạp hơn, việc tái sử dụng mã nguồn giúp quá trình triển khai ứng dụng nhanh, giảm rủi ro và chi phí tạo điều kiện để phát triển các ứng dụng tốt hơn. Hi vọng rằng CMSIS sẽ được sự ủng hộ mạnh mẽ của giới lập trình nước nhà.
Nguồn: ARM Việt Nam