Chính xác sản xuất PCB, PCB tần số cao, PCB cao tốc, PCB chuẩn, PCB đa lớp và PCB.
Nhà máy dịch vụ tùy chỉnh PCB & PCBA đáng tin cậy nhất.
Công nghệ PCB

Công nghệ PCB - Nhiều thủ thuật cho bo mạch chủ PCB nhúng

Công nghệ PCB

Công nghệ PCB - Nhiều thủ thuật cho bo mạch chủ PCB nhúng

Nhiều thủ thuật cho bo mạch chủ PCB nhúng

2021-11-06
View:514
Author:Will

Trở thành một kỹ sư thiết kế và phát triển bo mạch chủ PCB nhúng chính thức là một quá trình khó khăn đòi hỏi các nhà phát triển phải duy trì và quản lý từng bit và byte của hệ thống. Từ chu kỳ phát triển thông số kỹ thuật đến việc thực hiện nghiêm ngặt và kiểm tra hệ thống, có rất nhiều công nghệ cho phép phát triển các hệ thống nhúng có độ tin cậy cao. Hôm nay tôi sẽ giới thiệu 7 công nghệ PCB dễ vận hành và có thể được sử dụng trong một thời gian dài. Chúng rất hữu ích trong việc đảm bảo hệ thống hoạt động đáng tin cậy hơn và nắm bắt hành vi bất thường.

Các nhà phát triển phần mềm có xu hướng là một nhóm người rất lạc quan, miễn là mã của họ hoạt động trung thực trong một thời gian dài, và đó là tất cả. Có vẻ như rất hiếm khi một vi điều khiển nhảy ra khỏi không gian ứng dụng và thực thi nó trong không gian mã bất ngờ. Tuy nhiên, cơ hội xảy ra điều này không kém gì sự cố tràn bộ đệm hoặc con trỏ sai bị mất tham chiếu. Nó sẽ xảy ra! Sau khi điều này xảy ra, hành vi của hệ thống là không chắc chắn vì không gian bộ nhớ theo mặc định là 0xFF hoặc vì vùng bộ nhớ thường không được ghi, giá trị này có thể chỉ có Chúa mới biết.

Tuy nhiên, có khá đầy đủ các kỹ năng liên kết hoặc IDE có thể được sử dụng để giúp xác định các sự kiện như vậy và khôi phục hệ thống từ chúng. Bí quyết là sử dụng lệnh FILL để điền vào ROM không sử dụng với các mẫu bit đã biết. Có nhiều kết hợp khác nhau có thể được sử dụng để lấp đầy bộ nhớ không sử dụng, nhưng nếu bạn muốn xây dựng một hệ thống đáng tin cậy hơn, lựa chọn rõ ràng nhất là đặt trình xử lý sự cố ISR ở những vị trí đó. Nếu có vấn đề với hệ thống và bộ xử lý bắt đầu thực thi mã bên ngoài không gian chương trình, nó sẽ kích hoạt ISR và cung cấp cơ hội lưu trữ bộ xử lý, thanh ghi và trạng thái hệ thống trước khi quyết định hành động khắc phục.

Bảng mạch

Một trong những lợi thế lớn của các kỹ sư nhúng là IDE và chuỗi công cụ của chúng tôi có thể tự động tạo ra một ứng dụng hoặc kiểm tra không gian bộ nhớ (checksum) để xác minh rằng ứng dụng vẫn còn nguyên vẹn dựa trên tổng kiểm tra đó. Điều thú vị là trong nhiều trường hợp, checksum chỉ được sử dụng khi mã chương trình được tải vào thiết bị.

Tuy nhiên, nếu CRC hoặc checksum được lưu trong bộ nhớ, xác minh rằng ứng dụng vẫn còn nguyên vẹn khi khởi động (hoặc thậm chí là thường xuyên đối với các hệ thống chạy trong thời gian dài) là một cách tuyệt vời để đảm bảo không có gì bất ngờ xảy ra. Ngày nay, khả năng các ứng dụng lập trình thay đổi là rất nhỏ, nhưng với hàng tỷ vi điều khiển được cung cấp mỗi năm và môi trường làm việc khắc nghiệt tiềm ẩn, khả năng các ứng dụng thiết bị y tế sụp đổ không phải là bằng không. Nhiều khả năng, một lỗ hổng trong hệ thống có thể làm hỏng tính toàn vẹn của ứng dụng bằng cách gây ra ghi flash hoặc xóa flash trong một sector nhất định.

Kiểm tra RAM khi khởi động

Để xây dựng một hệ thống đáng tin cậy và mạnh mẽ hơn, điều quan trọng là phải đảm bảo phần cứng hệ thống hoạt động tốt. Rốt cuộc, phần cứng sẽ bị hỏng. (May mắn thay, phần mềm không bao giờ thất bại, phần mềm chỉ làm những gì mã muốn nó làm, đúng hay sai). Xác minh rằng không có vấn đề với RAM bên trong hoặc bên ngoài tại thời điểm khởi động là một cách tuyệt vời để đảm bảo rằng phần cứng có thể hoạt động như mong đợi.

Có nhiều cách khác nhau để thực hiện kiểm tra RAM, nhưng cách phổ biến là viết một mẫu đã biết và chờ một thời gian ngắn trước khi đọc lại. Kết quả là những gì bạn đọc là những gì bạn viết. Sự thật là, trong hầu hết các trường hợp, kiểm tra RAM đã vượt qua và đó là kết quả mà chúng tôi muốn. Tuy nhiên, khả năng kiểm tra sẽ không vượt qua là rất nhỏ, điều này tạo cơ hội tuyệt vời để hệ thống chỉ ra sự cố phần cứng.

Sử dụng Stack Monitor

Stack dường như là một lực lượng khá bí ẩn đối với nhiều nhà phát triển nhúng. Khi những điều kỳ lạ bắt đầu xảy ra, các kỹ sư cuối cùng cũng gặp khó khăn và họ bắt đầu suy nghĩ về những gì có thể xảy ra trong ngăn xếp. Kết quả là mù quáng thay đổi kích thước và vị trí của ngăn xếp, v.v. Nhưng lỗi thường không liên quan đến ngăn xếp, nhưng làm thế nào nó có thể chắc chắn như vậy? Rốt cuộc, có bao nhiêu kỹ sư thực sự thực hiện phân tích kích thước ngăn xếp trong trường hợp xấu nhất?

Kích thước ngăn xếp được gán tĩnh tại thời điểm biên dịch, nhưng ngăn xếp được sử dụng theo cách động. Các biến, địa chỉ trả về và các thông tin khác mà ứng dụng cần được lưu trữ liên tục trong ngăn xếp khi mã được thực thi. Cơ chế này cho phép ngăn xếp phát triển trong bộ nhớ được phân bổ của nó. Tuy nhiên, sự gia tăng này đôi khi vượt quá giới hạn dung lượng được xác định tại thời điểm biên dịch, khiến ngăn xếp phá hủy dữ liệu trong vùng bộ nhớ liền kề.

Một cách tuyệt đối để đảm bảo ngăn xếp hoạt động là thực hiện Stack Monitor như một phần của mã "sức khỏe" của hệ thống (có bao nhiêu kỹ sư làm điều này?). Stack Monitor tạo ra một bộ đệm giữa ngăn xếp và vùng bộ nhớ "khác" và điền vào nó với các mẫu bit đã biết. Sau đó, màn hình sẽ liên tục theo dõi nếu có bất kỳ thay đổi nào trong chế độ. Nếu mô hình bit thay đổi, điều đó có nghĩa là ngăn xếp đang phát triển quá nhiều và hệ thống sắp bị đẩy xuống địa ngục tối! Tại thời điểm này, màn hình có thể ghi lại sự xuất hiện của các sự kiện, trạng thái hệ thống và bất kỳ dữ liệu hữu ích nào khác để chẩn đoán sự cố trong tương lai.

Stack Monitor được cung cấp trong hầu hết các hệ điều hành thời gian thực (RTOS) hoặc hệ thống vi điều khiển thực hiện Bộ bảo vệ bộ nhớ (MPU). Điều đáng sợ là các tính năng này bị tắt theo mặc định hoặc thường bị các nhà phát triển cố tình tắt. Một tìm kiếm nhanh trên web đã phát hiện ra rằng nhiều người khuyên bạn nên tắt màn hình ngăn xếp trong hệ điều hành thời gian thực để tiết kiệm 56 byte dung lượng flash và hơn thế nữa. Đó là mất nhiều hơn được!

Sử dụng MPU

Trước đây, các đơn vị bảo vệ bộ nhớ (MPU) rất khó tìm thấy trong các vi điều khiển nhỏ và rẻ tiền, nhưng điều đó đã bắt đầu thay đổi. Giờ đây, các vi điều khiển từ cao cấp đến thấp cấp đã có MPU, tạo cơ hội cho các nhà phát triển phần mềm PCB nhúng cải thiện đáng kể độ bền firmware.

MPU đã dần dần được ghép nối với hệ điều hành để thiết lập một không gian bộ nhớ nơi xử lý được tách ra hoặc nhiệm vụ có thể thực hiện mã của nó mà không sợ bị giẫm đạp. Nếu có điều gì đó xảy ra, việc xử lý không kiểm soát sẽ bị hủy bỏ và các biện pháp bảo vệ bổ sung sẽ được thực hiện. Hãy chú ý đến các vi điều khiển với các thành phần như vậy và nếu có, hãy tận dụng các tính năng của nó nhiều hơn.

Xây dựng một hệ thống watchdog mạnh mẽ

Một trong những triển khai watchdog yêu thích mà bạn thường tìm thấy là nơi watchdog được kích hoạt (đó là một nơi tuyệt vời để bắt đầu), nhưng bạn cũng có thể sử dụng bộ đếm thời gian định kỳ để xóa watchdog; Việc kích hoạt bộ hẹn giờ hoàn toàn tách biệt với bất kỳ điều gì xảy ra trong chương trình. Mục đích của việc sử dụng Watchdog là giúp đảm bảo rằng Watchdog không bị xóa nếu có lỗi xảy ra, nghĩa là khi công việc bị tạm dừng, hệ thống sẽ buộc phải thực hiện thiết lập lại phần cứng để khôi phục. Ngay cả khi hệ thống bị lỗi, việc sử dụng một bộ đếm thời gian độc lập với hoạt động của hệ thống có thể giữ cho người giám sát ở trạng thái rõ ràng.

Làm thế nào để tích hợp các tác vụ ứng dụng vào hệ thống Watch Dog, các nhà phát triển bo mạch chủ PCB nhúng cần phải suy nghĩ và thiết kế cẩn thận. Ví dụ, có một kỹ thuật cho phép mỗi nhiệm vụ chạy trong một khoảng thời gian cụ thể chỉ ra rằng họ có thể hoàn thành nhiệm vụ của mình thành công. Trong trường hợp này, Watchdog sẽ không bị xóa mà thay vào đó buộc phải thiết lập lại. Ngoài ra còn có một số công nghệ tiên tiến hơn, chẳng hạn như sử dụng bộ xử lý Watchdog bên ngoài, có thể được sử dụng để theo dõi hành vi của bộ xử lý PCB chính và ngược lại. Đối với một hệ thống đáng tin cậy, điều quan trọng là phải có một hệ thống giám sát mạnh mẽ.

Tránh phân bổ bộ nhớ volatile

Các kỹ sư không quen làm việc trong môi trường có nguồn lực hạn chế có thể cố gắng sử dụng các tính năng của ngôn ngữ lập trình của họ, cho phép họ sử dụng phân bổ bộ nhớ PCB dễ bay hơi. Rốt cuộc, đây là một công nghệ PCB thường được sử dụng trong các hệ thống máy tính. Trong một hệ thống máy tính, bộ nhớ chỉ được phân bổ khi cần thiết. Ví dụ, khi sử dụng C để phát triển, các kỹ sư có thể có xu hướng sử dụng malloc để phân bổ không gian trên heap. Một chiến dịch sẽ được thực hiện. Sau khi hoàn tất, bạn có thể sử dụng free để trả về bộ nhớ được cấp phát để sử dụng heap.