Đơn vị 6 / 12

Trí tuệ nhân tạo trong hệ thống nhúng và phát triển phần sụn

Lợi nhuận:

  • Khả năng tăng tốc các bản phác thảo khung chương trình cơ sở, trình điều khiển và trạng thái của bộ vi điều khiển bằng AI
  • Khả năng xem xét ngắt, thời gian, cơ quan giám sát và logic năng lượng thấp với sự hỗ trợ của AI
  • Khả năng xác minh mã chương trình cơ sở do AI tạo thông qua phân tích tĩnh, kiểm tra phần cứng và yêu cầu bảo mật

Hệ thống nhúng là một thiết bị điện tử được xây dựng xung quanh một bộ vi điều khiển (một máy tính nhỏ chứa bộ xử lý, bộ nhớ và các thiết bị ngoại vi trên một con chip) được thiết kế để thực hiện một công việc cụ thể: bộ điều chỉnh nhiệt, modem, nút cảm biến, trình điều khiển động cơ. Firmware là phần mềm chạy trực tiếp phần cứng của thiết bị này. Trong phần này, bạn sẽ học cách sử dụng AI làm công cụ tăng tốc trong quá trình phát triển chương trình cơ sở (ghi trình điều khiển, máy trạng thái, logic ngắt và thời gian, quản lý năng lượng thấp). AI thực sự mạnh mẽ trong việc viết mã; Nhưng trong thế giới nhúng, mã được đan xen với phần cứng, thời gian thực và thường là bảo mật. Vì vậy, mọi dây chuyền mà AI tạo ra đều phải trải qua quá trình phân tích tĩnh, kiểm tra đăng ký/bảng dữ liệu và thử nghiệm thực tế trong phần cứng.

Đâu là mạnh, đâu là rủi ro trong firmware AI

AI rất mạnh về phần "khuôn" và "khuôn" của phần sụn: cấu trúc của trình điều khiển I2C/SPI, khung của máy trạng thái (logic xác định trạng thái và chuyển đổi của thiết bị), triển khai bộ đệm vòng, trình phân tích lệnh, khung kiểm tra. Nó có thể đọc bảng đăng ký trong một biểu dữ liệu phức tạp và tạo mã khởi tạo. Có thể giải thích lỗi, diễn giải cảnh báo của trình biên dịch.

Nơi có rủi ro là bản chất của hệ thống nhúng:

  • Đăng ký địa chỉ và trường bit: AI có thể ghi sai bản đồ đăng ký của chip; Mỗi địa chỉ và bit phải được xác minh từ biểu dữ liệu.
  • Thời gian và thời gian thực: Một thao tác mất bao nhiêu micro giây, tần suất xuất hiện ngắt, tùy thuộc vào phần cứng; AI dự đoán, bạn đo lường.
  • Đồng thời: Nếu các biến được chia sẻ giữa quy trình dịch vụ ngắt (ISR) và vòng lặp chính không được bảo vệ bởi quyền truy cập nguyên tử và dễ thay đổi, sẽ xảy ra các lỗi thầm lặng, không thể lặp lại.
  • Giới hạn tài nguyên: Tràn ngăn xếp, rò rỉ bộ nhớ, hết thời gian chờ của cơ quan giám sát có nghĩa là lỗi nhúng.

Ngắt, định thời gian và cơ quan giám sát

Ngắt là khi một sự kiện xảy ra (dữ liệu đến, bộ đếm thời gian hết hạn), bộ xử lý sẽ từ bỏ công việc chính và chuyển sang quy trình dịch vụ (ISR: Quy trình dịch vụ ngắt). ISR là đoạn mã nhạy cảm nhất trong hệ thống nhúng. Các quy tắc cơ bản: ISR phải ngắn (công việc dài được để lại cho vòng lặp chính), không được có các thao tác chặn (chờ, in) trong đó, các biến dùng chung phải được bảo vệ.

Watchdog là cơ chế bảo mật tự động khởi động lại thiết bị nếu phần mềm gặp sự cố; Phần sụn "cung cấp" nó thường xuyên, nếu không, hệ thống sẽ được đặt lại. AI soạn thảo các cấu trúc này, nhưng thời lượng giám sát, mức độ ưu tiên gián đoạn và ngân sách lập kế hoạch cần phải được xác thực theo tải thực tế trên hệ thống của bạn.

Mẹo: Khi in ISR cho AI, hãy hướng dẫn rõ ràng nó "giữ ISR ngắn gọn, không chặn, đánh dấu các biến dùng chung có quyền truy cập dễ thay đổi và nguyên tử, ủy thác công việc dài cho vòng lặp chính bằng cờ". Sau đó kiểm tra từng dòng trong mã mà nó tạo ra để đảm bảo rằng các quy tắc này thực sự được áp dụng.

Điện năng thấp và an ninh

Quản lý năng lượng thấp rất quan trọng trong các thiết bị chạy bằng pin: đặt bộ xử lý ở chế độ ngủ, tắt các thiết bị ngoại vi, đánh thức một sự kiện. AI phác thảo các chuyển đổi chế độ ngủ và logic đánh thức, nhưng mức tiêu thụ dòng điện thực tế chỉ được xác định bằng phép đo (đồng hồ đo dòng điện ở mức microampe); AI nói rằng "nó rút ra ~2 µA ở chế độ này" chỉ là phỏng đoán.

Từ góc độ bảo mật, các thiết bị nhúng ngày càng được nối mạng và các lỗ hổng phần sụn (tràn bộ đệm, đầu vào không được xác thực, mật mã yếu, giao diện gỡ lỗi mở) là những rủi ro nghiêm trọng. AI có thể nhắc nhở bạn về các nguyên tắc mã hóa an toàn, nhưng tính bảo mật của mã được tạo sẽ được xác minh bằng các công cụ phân tích tĩnh, đánh giá mã và kiểm tra bảo mật khi cần thiết. Trong các hệ thống quan trọng về an toàn (y tế, ô tô, công nghiệp), đầu ra AI không bao giờ được thay thế các quy trình được yêu cầu bởi sự phê duyệt của kỹ sư có thẩm quyền và tiêu chuẩn an toàn liên quan (ví dụ: IEC 61508, ISO 26262).

ba trường hợp nhỏ

Trường hợp 1 - Biến chia sẻ không được bảo vệ. Một kỹ sư yêu cầu UART nhận mã từ AI. Mã tăng một bộ đếm trong ISR và vòng lặp chính đọc bộ đếm này; nhưng bộ đếm không dễ bay hơi và việc đọc nhiều byte không phải là nguyên tử. Thiết bị hoạt động hầu hết thời gian nhưng đôi khi đọc sai số lượng dữ liệu và lỗi không thể lặp lại. Phân tích tĩnh và xem xét mã bắt thiếu biến động; Lỗi biến mất khi bộ đếm được bảo vệ. Bài học: lỗi đồng thời xảy ra thường xuyên và nguy hiểm trong mã AI; Nó là cần thiết để đọc và xác minh.

Trường hợp 2 - Bit đăng ký sai. Một thực tập sinh tải lên mã khởi tạo ADC do AI tạo ra; ADC đọc các giá trị không mong muốn. So sánh với biểu dữ liệu, có vẻ như AI đã đặt bit cấu hình sai vị trí (bản đồ cho một biến thể khác của chip). Khi bit được sửa, ADC hoạt động chính xác. Bài học: xác minh từng cách viết của thanh ghi đối với biến thể chính xác của biểu dữ liệu.

Trường hợp 3 - Sử dụng đúng. Một kỹ sư yêu cầu AI cung cấp bộ khung máy trạng thái cho một giao thức cảm biến phức tạp; mô tả các trạng thái, chuyển tiếp và các nhánh hết thời gian chờ. AI tạo ra một framework rõ ràng, dễ đọc. Kỹ sư sử dụng khung này, xác minh từng quyền truy cập đăng ký bằng biểu dữ liệu, đo thời gian bằng máy hiện sóng và kiểm tra nó trong phần cứng. Quá trình phát triển sẽ kết thúc sau vài giờ thay vì vài ngày. Bài học: AI tăng tốc bộ xương; Kỹ sư thực hiện việc xác minh.

Mẫu lời nhắc có thể sao chép

MẪU THIẾT BỊ ĐIỀU KHIỂN"Viết khung của trình điều khiển [I2C/SPI/UART] cho [chip/ngoại vi]: các chức năng khởi tạo, đọc, ghi, xử lý lỗi. Để lại địa chỉ thanh ghi và trường bit trong PLACEHOLDER (ví dụ: REG_XXX) và lưu ý 'điền và xác minh chúng từ biểu dữ liệu'. Sử dụng thời gian chờ thay vì chặn chờ. Chỉ định những gì mỗi chức năng giả định bằng một dòng nhận xét."

MẪU BẢO MẬT ISR"Viết bản nháp quy trình dịch vụ ngắt (ISR) cho sự kiện sau: [sự kiện]. Quy tắc: Giữ ISR ngắn gọn, không chặn, đánh dấu các biến được chia sẻ bằng quyền truy cập vivolatile và nguyên tử, ủy quyền công việc dài cho vòng lặp chính bằng một lá cờ. Ở cuối mã, hãy ghi thành từng mục nơi áp dụng từng quy tắc này để tôi có thể xác minh."

MẪU MÁY TRẠNG THÁI"Viết khung máy trạng thái cho giao thức/quy trình sau: [mô tả trạng thái, sự kiện, chuyển tiếp và thời gian chờ]. Chỉ định hành động vào/ra và nhánh lỗi/hết thời gian cho từng trạng thái. Để lại các giá trị dành riêng cho phần cứng (đăng ký, thời lượng) làm phần giữ chỗ và lưu ý rằng chúng cần được xác minh."

MẪU ĐÁNH GIÁ MÃ "Kiểm tra mã chương trình cơ sở sau đây từ góc độ được nhúng và gắn cờ rủi ro: biến chia sẻ không được bảo vệ (dễ biến động/tính nguyên tử), hoạt động kéo dài/chặn trong ISR, nguy cơ tràn ngăn xếp, chờ mà không hết thời gian chờ, lỗi đăng ký, nguồn cấp dữ liệu của cơ quan giám sát. Đề xuất cách tôi nên kiểm tra/xác minh cho từng phát hiện. Mã: [dán]."

Dấu nhắc yếu / Dấu nhắc mạnh

NHẮC NHỞ YẾU: "Viết cho tôi trình điều khiển UART."

NHẮC NHỞ MẠNH: "Viết khung trình điều khiển nhận UART dựa trên ngắt cho [vi điều khiển]. Sử dụng bộ đệm vòng; giữ ISR ngắn và chỉ ghi vào bộ đệm, xử lý trong vòng lặp chính. Làm cho các chỉ mục được chia sẻ dễ bay hơi và nguyên tử. Để lại địa chỉ đăng ký trong phần giữ chỗ, đánh dấu chúng để được xác minh từ biểu dữ liệu. Ở cuối mã, hãy liệt kê những gì tôi cần kiểm tra về mặt đồng thời và thời gian."

Dấu nhắc yếu tạo ra mã không phù hợp với phần cứng và đồng thời; Lời nhắc mạnh mẽ áp đặt các quy tắc và lời nhắc được nhúng cho danh sách xác minh.

Các lớp xác minh phần sụn

lớp

cái gì bắt được

Vai trò của AI

Kiểm tra bảng dữ liệu

Đăng ký/bit sai

Tạo phần giữ chỗ và ghi chú kiểm soát

Phân tích tĩnh (linter)

lỗi dễ bay hơi, loại, ranh giới

Danh sách quy tắc và giải thích

Cảnh báo trình biên dịch

Chuyển đổi ngầm định, giá trị không được sử dụng

Bình luận cảnh báo

Kiểm thử phần cứng

Thời gian, hành vi thực tế

Đề xuất kịch bản thử nghiệm

Máy hiện sóng/máy phân tích

Độ chính xác của tín hiệu và giao thức

Điểm đo và sóng dự kiến

Thận trọng: Chỉ vì phần sụn "biên dịch" và "hoạt động hầu hết thời gian" không có nghĩa là nó đúng. Lỗi đồng thời và thời gian chỉ xảy ra trong một số điều kiện nhất định; Đó là lý do tại sao việc phân tích tĩnh và kiểm tra thực tế phần cứng là không thể thiếu.

Những lỗi thường gặp

  • Không bảo vệ các biến được chia sẻ. Dữ liệu giữa ISR và vòng lặp chính phải dễ bay hơi và nguyên tử.
  • Không xác minh địa chỉ/bit đăng ký với biểu dữ liệu. AI có thể ánh xạ biến thể sai.
  • Giữ ISR dài hoặc chặn trong đó. Hệ thống không thể phản hồi, các ngắt bị bỏ qua.
  • Giả sử thời gian mà không cần đo lường. Thời gian thực tế phụ thuộc vào phần cứng; xác nhận bằng máy hiện sóng.
  • Để lại mã quan trọng về bảo mật/an toàn cho AI phê duyệt. Một kỹ sư có năng lực và quy trình tiêu chuẩn có liên quan là rất cần thiết.

Tóm lại

Trong phần này, bạn đã sử dụng AI như một công cụ tăng tốc mạnh mẽ trong việc tạo khung chương trình cơ sở, trình điều khiển, máy trạng thái và bản phác thảo ISR. Nhưng trong thế giới nhúng, mã được đan xen với phần cứng, thời gian thực và bảo mật: giá trị thanh ghi/bit được xác minh từ biểu dữ liệu, tính đồng thời được xác minh từ phân tích tĩnh, thời gian được xác minh từ máy hiện sóng, hành vi được xác minh từ thử nghiệm thực tế trong phần cứng. AI cung cấp bộ xương trong vài phút; Kỹ sư xác minh phần sụn hoạt động chính xác, an toàn và đúng thời gian. Trong các hệ thống quan trọng về an toàn, đầu ra AI không thay thế các quy trình của tiêu chuẩn an toàn liên quan và sự phê duyệt của kỹ sư có thẩm quyền.

Nhiệm vụ ứng dụng

Chọn một thiết bị ngoại vi (ví dụ: cảm biến I2C). Với mẫu “bộ khung trình điều khiển”, hãy yêu cầu AI cung cấp bộ khung trình điều khiển để lại các thanh ghi trong phần giữ chỗ. Sau đó, tạo bản phác thảo ISR cho ngắt sẵn sàng dữ liệu từ cảm biến này bằng mẫu "bảo mật ISR". Cuối cùng, quét mã mà nó tạo ra bằng mẫu "Đánh giá mã" để tìm các rủi ro tiềm ẩn và viết ít nhất ba bước xác minh/kiểm tra.

danh sách kiểm tra

  • [ ] Tôi đã xác minh từng địa chỉ thanh ghi và bit từ biến thể biểu dữ liệu chính xác.
  • [ ] Tôi đã tạo các biến được chia sẻ giữa ISR và vòng lặp chính dễ bay hơi và nguyên tử.
  • [ ] Tôi giữ ISR ngắn, không chặn, giao công việc dài cho vòng lặp chính.
  • [ ] Tôi dự định kiểm tra thời gian và hành vi thực tế trong phần cứng và bằng máy hiện sóng.
  • [ ] Tôi đã quét mã với các cảnh báo phân tích tĩnh và trình biên dịch.
  • [ ] Tôi đã để các bộ phận quan trọng về an ninh/an toàn cho kỹ sư có thẩm quyền phê duyệt và quy trình tiêu chuẩn liên quan.