- 1. Yêu cầu phát triển sản phẩm
- 2. Thiết kế hệ thống và phát triển thuật toán
- 3. Mã hóa cho chương trình cơ sở nhúng
- Kiểm tra chương trình cơ sở nhúng
Phát triển phần mềm nói chung là khó nhưng đối với một hệ thống nhúng, nó ở một mức độ khó hoàn toàn mới. Các nhà phát triển phần cứng cần có kiến thức tốt về phát triển phần cứng và hiểu hoạt động bên trong của một bộ xử lý nhúng. Đối với Bài viết hôm nay, tôi sẽ chia sẻ các công cụ và thủ thuật có thể được sử dụng để đạt được mức hiệu quả cao và loại bỏ một số điều khiến việc phát triển phần sụn trở nên tẻ nhạt.
Phát triển phần mềm nhúng trải qua quá trình phát triển tương tự với phát triển phần mềm "thông thường". Bất kể mô hình phát triển / quản lý được áp dụng, Phát triển phần mềm nhúng thường bao gồm các bước sau:
- Phát triển yêu cầu sản phẩm
- Thiết kế hệ thống và phát triển thuật toán
- Mã hóa
- Thử nghiệm
Chúng tôi sẽ xem xét một số khó khăn đi kèm với các giai đoạn này và một số công cụ có thể tăng hiệu quả và năng suất.
1. Yêu cầu phát triển sản phẩm
Thông số kỹ thuật của sản phẩm thường được thực hiện với các nhà thiết kế bảng. Nó thường chứa ít thông tin có thể hỗ trợ phát triển phần mềm, do đó, nhà phát triển phần mềm nhúng kết thúc với một tài liệu 250 trang (trung bình) thiếu sót không thể được sử dụng để tham khảo và nếu không được xem xét cẩn thận có thể dễ dàng dẫn đến sơ suất trong thiết kế, do đó sẽ, dẫn đến khung thời gian của dự án bị kéo dài nếu không nói là thất bại tổng thể của dự án. Các tài liệu hiếm khi chứa thông tin về thanh ghi hoặc trường bit của chúngtrong số những thứ khác và điều này khiến các nhà phát triển phần sụn tiêu tốn vài giờ làm việc khi họ tìm kiếm trong tài liệu để xác định những thứ như thanh ghi nào thuộc nhóm nào và trường bit nào thuộc thanh ghi nào. Dưới đây là một số mẹo có thể được xem xét để đảm bảo việc phát triển các tài liệu đặc tả dự án hữu ích hơn.
Sử dụng Mô tả Đăng ký
Như đã thảo luận ở trên, các nhà phát triển phần sụn cần hiểu sự phức tạp của tất cả các thanh ghi, bộ nhớ, v.v. của tất cả các yếu tố điều khiển (CPU, MCU, v.v.) trong một dự án để có thể kiểm soát hiệu quả tất cả các phần của hệ thống. Để giải quyết vấn đề này, các nhà phát triển phần sụn có thể đảm bảo tài liệu đặc tả mang mô tả phù hợp về các thanh ghi cùng với bản đồ bộ nhớ. Tất cả các thanh ghi trong phần tử điều khiển có thể được gán một tên đặc biệt giúp chúng dễ dàng xác định trên toàn bộ tài liệu và tất cả chúng đều có thể được liên kết nóng để dẫn đến một danh sách trong tài liệu nêu tên, vị trí, khối và địa chỉ của mỗi thanh ghi.
Mô tả nhiệm vụ
Một cách khác mà thông qua đó, các tài liệu đặc tả có thể trở nên hữu ích cho các nhà phát triển phần mềm nhúng là mô tả những gì mỗi khối phải làm và cách nó thực hiện. Cũng trong giai đoạn này, cần có các phương án xử lý lỗi theo từng khối. Về cơ bản, điều này trông giống như nhà phát triển phần sụn nói; “Khi tôi đến đây, tôi phải làm điều này, điều này và điều này, đảm bảo điều này, điều này và điều kia, không xảy ra”. Điều này giúp hướng dẫn công việc của nhà phát triển và giúp đánh giá dự án ngay cả trước khi thiết kế bắt đầu để xác định các lỗi và lỗi tiềm ẩn, tiết kiệm thời gian và tiền bạc quý báu.
Có những yếu tố khác bao gồm cấu trúc tài liệu, việc sử dụng phông chữ dễ đọc (thứ mà các nhà phát triển có thể làm việc ngay cả khi mệt mỏi), biểu đồ và hình ảnh nếu có thể, tất cả đều có thể tăng hiệu quả của nhóm phần sụn sau giai đoạn này.
2. Thiết kế hệ thống và phát triển thuật toán
Giai đoạn này liên quan đến việc phát triển mã giả, lưu đồ, máy trạng thái và mọi thứ liên quan đến việc thiết kế phần sụn. Đối với giai đoạn này, khá nhiều công cụ có thể được sử dụng để giúp tổ chức suy nghĩ, khám phá phần mềm kế thừa / đã viết trước đó xung quanh dự án và phát triển lưu đồ của riêng bạn, máy trạng thái, v.v. Một số công cụ này được thảo luận dưới đây.
PIM
Ở giai đoạn phát triển sản phẩm này, các nhà phát triển có xu hướng viết nguệch ngoạc rất nhiều khi họ thu thập tài nguyên về dự án từ liên kết web đến công thức, v.v. Một trong những cách tốt nhất để theo dõi thông tin này để chúng hữu ích sau này là sử dụng PIM (quản lý thông tin sản phẩm) công cụ. Hiện có khá nhiều PIM nhưng tôi sẽ đề cập đến một số ít với một số tính năng nổi bật.
1. Evernote
Evernote giúp bạn ghi chú có sẵn trên bất kỳ nền tảng nào để bạn có thể kiểm tra ghi chú bạn đã thực hiện trên PC khi ở trên xe buýt về nhà. Các ghi chú được sắp xếp tốt và hoàn toàn có thể tìm kiếm được nên bạn sẽ luôn tìm thấy những gì mình cần.
2. TrunkNote
Ghi chú thân cây là một ứng dụng ghi chú giống như Wiki. Nó mang tất cả sức mạnh tổ chức của wiki để ghi chú. Nó là một ứng dụng dựa trên điện thoại di động nhưng có thể dễ dàng đồng bộ hóa với PC thông qua WIFI.
Các loại PIM khác như Tiddlywiki, v.v. Mỗi loại đều đi kèm với các tính năng có thể làm cho nó hấp dẫn hơn đối với các cá nhân cụ thể và có thể lấy một số mẫu trước khi bạn quyết định cuối cùng.
Hiểu mã kế thừa
Một nhóm công cụ khác rất hữu ích trong giai đoạn thiết kế là các công cụ để hiểu các mã kế thừa. Trong các tình huống mà sản phẩm đang được thiết kế là phiên bản cải tiến của sản phẩm trước đó, nhà phát triển có thể thấy hữu ích khi xem lại công việc đã được thực hiện để có một số ý tưởng và có thể là các đoạn mã cho dự án mới này. Đây có thể là một chặng đường khá dài, đặc biệt nếu bạn không phải là thành viên của nhóm đã xây dựng phần mềm trước đó. Có khá nhiều phần mềm giúp xây dựng cây, tạo tài liệu và sơ đồ từ mã đã viết sẵn.
1. Doxygen
Doxygen là một công cụ khá mạnh giúp tạo tài liệu từ mã nguồn. Nó được thiết kế chủ yếu để hoạt động với C ++ nhưng cũng hoạt động với C, Python và một số ngôn ngữ khác. Nó có khả năng trích xuất cấu trúc mã của bất kỳ mã nào, cung cấp đồ thị phụ thuộc được tạo tự động và biểu đồ Kế thừa để giúp trực quan hóa mã.
2. Graphviz
Theo trang web của họ, graphviz giúp trình bày thông tin cấu trúc dưới dạng sơ đồ của các đồ thị và mạng trừu tượng. Nó có thể được sử dụng cùng với Doxygen để hiểu rõ hơn về đồ họa do nó tạo ra.
3. Srecord
Srecord là một công cụ mạnh mẽ để điều khiển hình ảnh phần sụn và chuyển đổi giữa các định dạng tệp khác nhau. Nó có thể được sử dụng để tính toán và thực hiện CRC và Tổng kiểm tra trên các khối byte, sửa các tệp lỗi được tạo do các dãy công cụ bị lỗi và lọc hoặc di chuyển các phần của tệp trong số những thứ khác. Thông tin thêm về việc sử dụng nó có thể được tìm thấy trên trang SourceForge của nó.
Một số công cụ khác thuộc danh mục này là CrystalRev và Hexplorer trong số những công cụ khác.
Phát triển các thuật toán
Tất cả các nghiên cứu và ghi chú tổng hợp vào sự phát triển của các thuật toán chuyển thành mã giả và lưu đồ cho dự án. Một số công cụ tồn tại để phát triển lưu đồ và trong khi hầu hết chúng không dành riêng cho việc phát triển phần sụn, chúng cung cấp các tính năng hữu ích và quan trọng giúp hoàn thành công việc một cách đơn giản và cũng giúp duy trì các biểu đồ trong suốt chu kỳ phát triển sản phẩm. Dưới đây là một số công cụ tốt nhất hiện có để tăng áp.
1. QFSM
QFSM là một công cụ đồ họa để thiết kế và mô phỏng các máy trạng thái hữu hạn. Khả năng mô phỏng các thiết kế của nó làm cho nó tốt hơn hầu hết các phần mềm khác trong nhóm này. Nó đặc biệt hữu ích khi bạn đang thiết kế máy trạng thái cho FPGA và phần cứng mục tiêu tương tự.
2. Biểu đồ Lucid
Biểu đồ Lucid được cho là phần mềm tăng lưu lượng tốt nhất và linh hoạt nhất hiện có. Nó dựa trên web và có các tính năng nhóm cho phép bạn làm việc giữa nhiều thiết bị và cộng tác trong thời gian thực với các đồng đội.
3. Microsoft Visio
Visio là một trong những công cụ đồ họa tốt nhất hiện nay. Nó có một mảng các đối tượng từ các trường khác nhau giúp bạn dễ dàng mô tả bất kỳ thứ gì. Tuy nhiên, nó không đi kèm với các tính năng tăng cường sự hợp tác giữa các nhóm và chỉ có thể được sử dụng trên máy windows mà nó được cài đặt.
4. Google Trang trình bày
Một trong những điều quan trọng trong việc phát triển các sản phẩm trong thế giới ngày nay là việc sử dụng các công cụ cho phép các nhóm cộng tác hiệu quả dù họ ở đâu và đó là một trong những điều mà Google slide mang lại. Nó có thể được sử dụng để phát triển tất cả các loại biểu đồ từ biểu đồ luồng phần mềm đến biểu đồ tổ chức và bản đồ tư duy. Nó dựa trên đám mây và hoạt động trên hầu hết các trình duyệt phổ biến.
Một số công cụ khác tồn tại để tạo lưu đồ và phát triển thuật toán chung, như thường lệ, mỗi công cụ đều có ưu và khuyết điểm riêng.
3. Mã hóa cho chương trình cơ sở nhúng
Mọi thứ đã được đề cập cho đến thời điểm này đều dẫn đến đây. Thế giới SDK và IDE, việc lựa chọn công cụ ở giai đoạn này phụ thuộc vào thiết bị mục tiêu và các tính năng được tích hợp vào thiết bị, vì lý do này, tôi sẽ loại trừ các SDK và IDE phổ biến như MPLAB, v.v. khỏi cuộc thảo luận và chỉ cần đến các công cụ bổ sung hơn về bản chất.
1. QT (Phát triển GUI)
Màn hình (tương tác hoặc không) là phương tiện phổ biến nhất để cung cấp phản hồi cho người dùng ngày nay và SDK của QT là một trong những phương tiện tốt nhất hiện có và có lẽ không còn xa lạ với bất kỳ ai trong vòng kết nối được nhúng. Nó cung cấp các tính năng "kéo và thả" giúp dễ dàng phát triển các ứng dụng dựa trên GUI, phức tạp cho các thiết bị nhúng, bất kể nền tảng mục tiêu hay ngôn ngữ lập trình đang được sử dụng để phát triển dự án tổng thể. Về cơ bản, nó loại bỏ sự căng thẳng của việc sử dụng mã để tạo giao diện người dùng.
2. (Tạo mẫu nhanh)
Một trong những điểm nghẽn lớn nhất trong quá trình phát triển phần mềm nhúng là phần cứng thường không có sẵn để kiểm tra mọi thứ khi đang di chuyển trong khi phần mềm đang được phát triển. Thông thường, khi nó có sẵn, các nhà phát triển phần sụn sẽ phải đợi cả thời gian để phần cứng sẵn sàng thực hiện rất ít hoặc không làm gì cả. Điều này làm tăng thời gian thực hiện và không tạo khoảng trống cho kiểu đồng bộ giữa các kỹ sư phần cứng và các nhà phát triển phần sụn, vốn sẽ làm tăng chất lượng của sản phẩm. Để giúp giải quyết vấn đề này, các nhân viên tại VaST đã tạo ra một nền tảng tạo mẫu ảo cấp hệ thống điện tử có thể được sử dụng để tạo nguyên mẫu phần cứng ảo trên đó phần mềm nhúng có thể được thực thi để xác định hiệu suất hệ thống trước khi phần cứng sẵn sàng.
3. Doxygen (Tài liệu)
Một trong những phần quan trọng nhất của việc viết bất kỳ mã nào là tài liệu và một trong những công cụ phổ biến nhất cho việc đó là Doxygen. Ngoài việc sử dụng nó để hiểu phần mềm kế thừa, Doxygen có khả năng tự động trích xuất các nhận xét từ mã và tạo tài liệu bao gồm nó. Cấu trúc Doxygen bao gồm các tệp bằng đồ thị và tạo tham chiếu cho mọi hàm, Biến và macro được sử dụng trong mã của bạn. Lưu đồ và sơ đồ luồng dữ liệu cũng có thể được nhúng trong tài liệu bằng cách kết hợp Doxygen với graphviz.
4. GIT (Hệ thống kiểm soát phiên bản)
Ngày nay, thật khó để tin rằng có ai đó phát triển bất kỳ loại phần mềm nào mà không có hệ thống kiểm soát phiên bản nào đó, nhưng đề phòng trường hợp bạn làm vậy, đó là một ý tưởng khá tồi có thể dẫn đến những sai lầm khiến bạn tốn thời gian và tiền bạc. Git nổi bật trong số tất cả các công cụ kiểm soát phiên bản hiện có vì một số lý do. Nó là mã nguồn mở, nhanh, hiệu quả và chủ yếu là cục bộ. Bên cạnh Git, các công cụ như subversion cũng đáng được nhắc đến.
Kiểm tra chương trình cơ sở nhúng
Kiểm tra là một phần quan trọng của quá trình phát triển cho bất kỳ thứ gì. Các công ty mất hàng nghìn đô la khi thiết bị bị thu hồi do lỗi phần sụn, vì vậy đó là một phần của quá trình phát triển cần được coi trọng. Nó thường được thực hiện, cùng với mã hóa và bộ công cụ đầu tiên để kiểm tra mã, có thể là các trình gỡ lỗi trong IDE hoặc SDK đang được sử dụng cho dự án. Kiểm tra có nhiều dạng khác nhau và được thực hiện ở các giai đoạn khác nhau, do đó, nó liên quan đến nhiều loại công cụ khác nhau. Các công cụ kiểm tra hình thành phát triển phần sụn cắt ngang qua xác thực thiết kế đến các công cụ kiểm tra thời gian chạy và phân tích tĩnh. Dưới đây là một số công cụ tôi thấy thực sự hữu ích.
1. Pha lê REV
Vòng quay tinh thể là một công cụ để nghiên cứu mã. Nó có thể được sử dụng để tạo lưu đồ từ mã C / C ++, làm cho nó trở thành một công cụ tuyệt vời để xem lại mã của riêng bạn và xem liệu thiết kế sơ bộ có phải là những gì đã được triển khai hay không. Với vòng quay pha lê, bạn sẽ có thể nhanh chóng thấy sự khác biệt giữa thiết kế và thực hiện. Khả năng tạo biểu đồ luồng, dữ liệu và luồng cuộc gọi từ các mã cũng làm cho nó trở thành một công cụ hữu ích để phân tích mã kế thừa.
2. PC- Lint
PC-lint là một trong những công cụ kiểm tra firmware lâu đời nhất. Nó có khả năng phân tích phần mềm để xác định lỗi, lỗ hổng bảo mật và đảm bảo mã được viết phù hợp với tiêu chuẩn ngành. Các công cụ tương tự bao gồm polyspace và LRDA, Eggplant và Tessy trong số những công cụ khác.
3. Wireshark
Điều này rất hữu ích khi xây dựng các thiết bị mạng. Về cơ bản, nó là một trình kiểm tra gói tin và có thể giúp xem dữ liệu mà thiết bị của bạn đang truyền. Điều này có thể giúp bảo mật thiết bị.
4. Trình điều khiển cổng nối tiếp ảo
Phần mềm VSPD của eltima là một công cụ mà tôi vừa được một người bạn giới thiệu. Nó thực sự tiện dụng khi làm việc trên trình điều khiển thiết bị và các phát triển khác liên quan đến cổng com. Cổng com nối tiếp ảo cung cấp cho bạn khả năng kiểm tra hành vi của các cổng com mà không cần thiết bị đích. Bạn có thể tạo không giới hạn số lượng cổng có khả năng mô phỏng tất cả các cài đặt của cổng com thực. Phần mềm này cũng đi kèm với các tính năng như tách cổng nối tiếp, sáp nhập cổng Com, sử dụng kết nối cổng com theo gói trong số các tính năng thú vị khác.
Đó là nó cho bài viết này, cảm ơn vì đã dành thời gian đọc. Mặc dù không thể liệt kê tất cả các công cụ có sẵn, tôi hy vọng bạn thấy một số công cụ này hữu ích.