Việc phát triển trên Bộ xử lý ARM từ các nhà cung cấp khác nhau có khác nhau nhiều không?


7

Tôi đã bắt đầu phát triển các ứng dụng trên bảng đánh giá XMC 2. Tôi, ít nhiều, đã có ý tưởng. Nhưng nếu tôi cố gắng đi, hãy nói, STM32?

Đối với XMC1100, cài đặt pin 00 là đầu ra là

PORT1->IOCR0 &= ~PORT0_IOCR0_PC0_Msk;
PORT0->IOCR0 |= 0x0 << PORT0_IOCR0_PC0_Pos;

Nhưng tôi không nghĩ stm32 có IOCRđăng ký. Vì vậy, một kỹ sư nên tìm hiểu tất cả các tên đăng ký khác nhau?

Câu trả lời:


10

Có nó làm. Mặc dù tất cả các bộ điều khiển Cortex M sẽ chia sẻ cùng một lõi và một số thiết bị ngoại vi lõi, tất cả các thiết bị ngoại vi khác là dành riêng cho nhà cung cấp.

Ngay cả việc sử dụng CMSIS cũng không giúp bạn nhiều trong kịch bản đó vì nó sẽ chỉ bao gồm những thứ do ARM cung cấp, đó là lõi và các thiết bị ngoại vi cốt lõi (NVIC, Systick ...)

Vì vậy, cuối cùng nếu bạn chuyển từ nhà cung cấp này sang nhà cung cấp khác, bạn sẽ phải đọc bảng dữ liệu, hướng dẫn sử dụng (hoặc người dùng) và tìm hiểu cách thức hoạt động của công cụ. Bạn không nhất thiết phải tìm hiểu mọi tên đăng ký vì các nhà cung cấp hiện cung cấp các thư viện ngoại vi đặt một lớp trừu tượng lên trên phần cứng.

Nhưng nó không khó hay thách thức, đó là những gì bạn phải làm - Tôi nói đó thậm chí là một trong những phần thú vị hơn để tìm ra cách các thiết bị ngoại vi đó hoạt động.

Và sau khi bạn nhận ra điều này, bạn có thể muốn viết Lớp trừu tượng phần cứng để ngăn phần sụn của bạn hoàn toàn không sử dụng được cho bộ điều khiển khác. Nếu bạn có HAL ổn định, ít nhất bạn có thể đưa trình điều khiển thiết bị và các lớp ứng dụng qua bộ điều khiển tiếp theo của mình và chỉ phải thực hiện lại HAL.

Mặc dù các nhà cung cấp cung cấp các thư viện ngoại vi, hoạt động như một HAL, không có tiêu chuẩn nào giữa các nhà cung cấp. Vì vậy, ở mức thấp nhất, bạn sẽ phải điều chỉnh phần mềm của mình, đó là lý do tại sao tôi nói, rằng chính bạn có thể muốn viết HAL (trong đó bạn có thể sử dụng HAL của nhà cung cấp).

Nếu bạn muốn triển khai HAL ổn định, các tính năng của bạn rất có thể sẽ bị giới hạn ở chức năng rất cơ bản của các thiết bị ngoại vi thông thường, vì vậy mọi bộ điều khiển đều có thể được trừu tượng hóa. Thông thường, bạn sẽ mất một số tính năng nâng cao hơn của các thiết bị ngoại vi, vì chúng không có sẵn ở mọi nơi (giả sử cơ chế phát hiện baudrate hoặc thời gian chết tự động giữa các kênh PWM). Đó sẽ là cái giá phải trả. Nếu chúng ta cần những cơ chế đó cho ứng dụng của mình, chúng ta viết một trình điều khiển phần cứng chuyên dụng cho mục đích đó, vì vậy phần còn lại vẫn có thể hoạt động với HAL chung.

Sử dụng phương pháp này, tôi đã chuyển một ứng dụng cho hai bộ vi điều khiển khác chỉ thực hiện HAL, phần còn lại có thể được biên dịch mà không cần một thay đổi nào trong phần mềm.


1
Tôi đánh giá cao rằng bạn đã đề cập đến HAL. Làm thế nào về HALs mà các nhà cung cấp cung cấp? Họ có tuân theo một số loại tiêu chuẩn trên các bộ xử lý?
ozgur

4
@ozgur Nói một cách nhẹ nhàng là "không". Các HAL cụ thể của nhà cung cấp chỉ ở đó để cho phép bạn làm việc với tất cả các chip của họ với cùng một lệnh. Chẳng hạn như Atmel Software Framework, một bộ công cụ proto nhanh rất đẹp, có một số chức năng giống như các HAL của nhà cung cấp khác, nhưng không có gì được đảm bảo và thực sự tôi không thể làm được nếu không có HAL hoặc HALAL của riêng tôi (<- LOL! ) để trừu tượng hóa sự trừu tượng của họ.
Asmyldof

@ozgur Tôi đã cập nhật bài đăng của mình và mở rộng nó trên HALs của nhà cung cấp, tôi đồng ý với Asmyldof, không có tiêu chuẩn nào.
Arsenal

@Arsenal Hữu ích rất nhiều. Cảm ơn bạn rất nhiều, thật đấy.
ozgur

@Asmyldof bây giờ tin nhắn của bạn là rõ ràng. mặc dù thiếu tiêu chuẩn là một sự xấu hổ.
ozgur
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.