Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Triển khai API Lớp trừu tượng nền tảng

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Xem nguồn trên GitHub

OpenThread là hệ điều hành và nền tảng không thể xác định, với một Lớp trừu tượng nền tảng hẹp (PAL). PAL này xác định:

Kiến trúc chuyển đổi
  • Giao diện chuông báo cho đồng hồ hẹn giờ chạy miễn phí, có chuông báo
  • Giao diện xe buýt (WART, SPI) để giao tiếp thông báo CLI và Spinel
  • Giao diện vô tuyến cho giao tiếp IEEE 802.15.4-2006
  • Quy trình khởi tạo dành riêng cho GCC
  • Entropy để tạo số ngẫu nhiên thực
  • Dịch vụ cài đặt cho bộ nhớ cấu hình không dễ thay đổi
  • Giao diện nhật ký để gửi tin nhắn nhật ký OpenThread
  • Quy trình khởi tạo dành riêng cho hệ thống

Tất cả các API nên được triển khai dựa trên Gói hỗ trợ bản dựng phần cứng (HAL) cơ bản.

Tệp API phải được đặt trong các thư mục sau:

Loại Thư mục
Triển khai PAL dành riêng cho nền tảng /openthread/examples/platforms/platform-name
Tệp tiêu đề – API lưu trữ không thay đổi /openthread/examples/platforms/utils
Tất cả các tệp tiêu đề khác /openthread/include/openthread/platform
VÉ HAL /openthread/third_party/platform-name

Báo thức

Khai báo API:

/openthread/include/openthread/platform/alarm-milli.h

API Alarm cung cấp các dịch vụ thời gian và báo thức cơ bản cho cách triển khai bộ tính giờ trên lớp.

Có hai loại dịch vụ báo thức, mili giâyvi mô giây. Milli giây là yêu cầu bắt buộc đối với nền tảng phần cứng mới. Micro giây là tùy chọn.

UART

Khai báo API:

/openthread/examples/platforms/utils/uart.h

API UART triển khai giao tiếp cổng nối tiếp cơ bản thông qua giao diện UART.

Mặc dù tiện ích bổ sung CLINCP của OpenThread phụ thuộc vào giao diện UART để tương tác với phía máy chủ, nhưng việc hỗ trợ API UART là không bắt buộc. Tuy nhiên, ngay cả khi bạn không có kế hoạch sử dụng những tiện ích bổ sung này trong ví dụ về nền tảng phần cứng mới, bạn nên thêm hỗ trợ vì một vài lý do:

  • CLI hữu ích cho việc xác thực rằng cổng hoạt động chính xác
  • Harness Automation Tool sử dụng giao diện UART để kiểm soát OpenThread cho các mục đích thử nghiệm và chứng nhận

Nếu nền tảng phần cứng mục tiêu hỗ trợ mô-đun USB CDC thay vì UART, hãy đảm bảo:

  • Cài đặt đúng trình điều khiển USB CDC ở phía máy chủ
  • Thay thế phương thức triển khai API UART bằng trình điều khiển USB CDC (cùng với SWF) ở phía OpenThread, sử dụng cùng nguyên mẫu hàm

Radio

Khai báo API:

/openthread/include/openthread/platform/radio.h

API Radio xác định tất cả các chức năng cần thiết được gọi bằng lớp MAC của IEEE 802.15.4 phía trên. Chip radio phải tuân thủ đầy đủ thông số kỹ thuật IEEE 802.15.4-2006 2,4 GHz.

Do tính năng công suất thấp nâng cao, OpenThread yêu cầu tất cả các nền tảng phải triển khai khung tự động đang chờ xử lý (truyền gián tiếp) theo mặc định và bảng so khớp địa chỉ nguồn cũng phải được triển khai trong tệp nguồn radio.h.

Tuy nhiên, nếu ví dụ mới về nền tảng phần cứng bị giới hạn về tài nguyên, thì bảng địa chỉ nguồn có thể được xác định là độ dài bằng 0. Hãy xem bài viết Tự động lấy khung hình đang chờ xử lý để biết thêm thông tin.

Khác/Đặt lại

Khai báo API:

/openthread/include/openthread/platform/misc.h

API Sai/Đặt lại cung cấp phương thức để đặt lại phần mềm trên chip và truy vấn lý do đặt lại lần cuối.

Entropy

Khai báo API:

/openthread/include/openthread/platform/entropy.h

API Entropy cung cấp một trình tạo số ngẫu nhiên (TRNG) thực sự cho lớp trên. Lớp này được dùng để duy trì nội dung bảo mật cho toàn bộ mạng OpenThread . API phải đảm bảo rằng một số ngẫu nhiên mới được tạo cho mỗi lệnh gọi hàm. Các tài sản bảo mật chịu ảnh hưởng của TRNG bao gồm:

  • Định danh AES CCM
  • Thời gian dao động ngẫu nhiên bị trễ
  • Thiết bị\39; địa chỉ mở rộng
  • Khoảng thời gian ngẫu nhiên ban đầu trong đồng hồ hẹn giờ
  • Mã thông báo/mã thông báo CoAP

Xin lưu ý rằng nhiều nền tảng đã tích hợp trình tạo số ngẫu nhiên, hiển thị API trong gói SWF. Trong trường hợp nền tảng phần cứng mục tiêu không hỗ trợ TRNG, hãy cân nhắc tận dụng việc lấy mẫu mô-đun ADC để tạo một số ngẫu nhiên có độ dài cố định. Lấy mẫu nhiều lần nếu cần thiết để đáp ứng các yêu cầu của TRNG (uint32_t).

Khi macro MBEDTLS_ENTROPY_HARDWARE_ALT được đặt thành 1, API này cũng sẽ cung cấp một phương thức để tạo entropy phần cứng được sử dụng trong thư viện mbedTLS.

Bộ nhớ không biến động

Khai báo API:

/openthread/include/openthread/platform/flash.h

hoặc

/openthread/include/openthread/platform/settings.h

Bạn có thể đáp ứng yêu cầu về dung lượng lưu trữ không thay đổi bằng cách triển khai một trong hai API nêu trên. API Flash triển khai trình điều khiển lưu trữ flash, trong khi API Cài đặt cung cấp các chức năng để triển khai thao tác flash cơ bản đến lớp trên.

Các API này hiển thị với lớp trên:

  • Dung lượng lưu trữ không biến động có sẵn dùng để lưu trữ dữ liệu ứng dụng (ví dụ: tập dữ liệu hoạt động/đang hoạt động, các thông số mạng và thiết bị luồng hiện tại; thông tin đăng nhập để đính kèm lại sau khi đặt lại)
  • Đọc, ghi, xóa và truy vấn các thao tác trạng thái flash

Hãy dùng OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE trong tệp cấu hình cốt lõi của ví dụ trên nền tảng của bạn để cho biết nền tảng nên sử dụng API nào. Nếu đặt thành 1, thì bạn phải triển khai API Flash. Nếu không, bạn phải triển khai API Cài đặt.

Bạn phải đặt cờ này trong tệp /openthread/examples/platforms/platform-name/openthread-core-platform-name-config.h.

Logging

Khai báo API:

/openthread/include/openthread/platform/logging.h

API Ghi nhật ký triển khai chức năng ghi nhật ký và gỡ lỗi của OpenThread & 39; với nhiều cấp độ đầu ra gỡ lỗi có sẵn. API này là không bắt buộc nếu bạn không định sử dụng tính năng ghi nhật ký trong OpenThread\39; mẫu mới của nền tảng phần cứng.

Cấp cao nhất và chi tiết nhất là OPENTHREAD_LOG_LEVEL_DEBG để in tất cả thông tin gói và nhật ký dạng gói thông qua cổng nối tiếp hoặc trên thiết bị đầu cuối. Chọn một cấp gỡ lỗi đáp ứng tốt nhất nhu cầu của bạn.

Dành riêng cho hệ thống

Khai báo API:

/openthread/examples/platforms/openthread-system.h

API dành riêng cho hệ thống chủ yếu cung cấp các thao tác khởi tạo và hủy khởi chạy cho nền tảng phần cứng đã chọn. API này không được gọi bởi chính thư viện OpenThread, nhưng có thể hữu ích cho hệ thống/RTOS của bạn. Bạn cũng có thể triển khai khởi chạy các mô-đun khác (ví dụ: UART, Radio, Ngẫu nhiên, Mic/Đặt lại) trong tệp nguồn này.

Việc triển khai API này phụ thuộc vào trường hợp sử dụng của bạn. Nếu muốn sử dụng các ứng dụng CLI và NCP đã tạo cho nền tảng mẫu, bạn phải triển khai API này. Nếu không, bạn có thể triển khai bất kỳ API nào để tích hợp các trình điều khiển trên nền tảng mẫu vào hệ thống/RTOS.