Kiểm soát phiên bản sơ đồ và mã nguồn


12

Tôi đang phát triển một thiết bị điện tử có hai phần: phần cứng (sơ đồ Eagle) và phần sụn (mã nguồn C ++). Tôi muốn theo dõi các thay đổi trong cả mã nguồn và sơ đồ, nhưng có một số điểm tôi không chắc chắn về cách tổ chức công việc của mình:

  • Đối với mã nguồn tôi chắc chắn sẽ sử dụng Git. Nhưng các sơ đồ có giá trị phiên bản khi chúng thực sự là các tệp nhị phân (các phiên bản Eagle mới sử dụng một số định dạng XML, nhưng nó không dễ đọc như vậy ...)?

  • Có phải là ý tưởng tốt để đặt các nguồn và sơ đồ vào một kho lưu trữ Git? Nó sẽ có ý nghĩa, nhưng mặt khác nhật ký của tôi sẽ chứa cả thay đổi phần mềm và phần cứng. Ngoài ra phần mềm có thể có một số chi nhánh, nhưng phần cứng có thể không ...

  • Làm thế nào để đối phó với sửa đổi phần cứng? Tag chúng hoặc lưu chúng trong các thư mục riêng biệt?

  • Ngoài ra có thể có một số phụ thuộc giữa sửa đổi phần cứng và phiên bản phần sụn. Làm thế nào để đối phó với họ?

Bạn có thể vui lòng chia sẻ thực hành tốt nhất của bạn với tôi?


Một giải pháp thương mại sẽ làm việc?
Eugene Sh.

5
Tôi sẽ không chạm vào một hệ thống kiểm soát phiên bản thương mại nữa. Kinh nghiệm của tôi về họ là các quy trình công việc khủng khiếp khó sử dụng hơn nhiều so với svn hoặc thậm chí là git.
pjc50

Dù bạn sử dụng phần mềm phiên bản nào, hãy đảm bảo rằng nó đang thay thế toàn bộ tệp khi xử lý sơ đồ và không nhìn vào văn bản. Tôi đã có một vấn đề trong quá khứ. Bạn sẽ không bao giờ muốn làm khác trên hầu hết các tệp sơ đồ.
Điện áp tăng vọt

Câu trả lời:


19

Hầu hết trong số đó đến với sở thích cá nhân.

Tôi theo dõi mọi thứ tôi làm cho một dự án trong Git. Đặc biệt là vì Git xử lý hầu hết các loại tệp, thậm chí là nhị phân, đủ hiệu quả. (Thay cho Altium SVN tích hợp vô nghĩa)

Một trong những lý do chính của tôi là vì khách hàng của tôi không cảm thấy Dropbox đủ an toàn và tôi cần một hệ thống sao lưu mà tôi có thể truy cập trên toàn thế giới, với một số bối cảnh phiên bản trên hầu hết những gì tôi làm. Vì vậy, tôi đã thiết lập một máy chủ Git riêng và hệ thống sao lưu được mã hóa và nó hoạt động. Bảng, Sơ đồ, Mã, Tài liệu, Báo cáo, Sửa đổi thủ công, mọi thứ đều được theo dõi.

Tôi thường sẽ tạo một Kho lưu trữ cho Phần cứng, một cho Phần mềm và một cho Phần sụn nếu đó là một dự án lớn, có khả năng hoạt động lâu dài, nhưng đối với các dự án dịch vụ nhỏ, ví dụ hoặc thử nghiệm nhỏ tôi thường đặt tất cả vào một kho lưu trữ, vì kết quả sự hỗn loạn sẽ không lớn.

Trong Git, bạn cũng có thể sử dụng các kho lưu trữ phụ để tích hợp Firmware vào dự án Phần cứng hoặc theo cách khác, ngay cả khi chúng là các kho được quản lý riêng.

Đối với các dự án lớn hơn, tôi cũng thường sử dụng các hệ thống theo dõi lỗi để theo dõi các vấn đề và giải quyết, một lần nữa cho CTNH cũng như SW, Mantis là một hệ thống tốt có thể được sử dụng miễn phí.

Đối với các phiên bản phần cứng tôi tạo ra Gerbers hoặc bất cứ thứ gì có bạn, được gắn thẻ Git Hash cho phiên bản đó, những Gerbers đó là những thứ được phiên bản "lỗi thời" riêng biệt trong các thư mục của R01, 02, v.v. Vì bạn không muốn luôn luôn tạo lại chúng, nhưng chúng là các tệp kết quả nên không nên được phiên bản trong chính Git (vì phần mềm thiết kế của bạn phải có tính quyết định với việc tạo nội dung sản xuất, hoặc nếu không ...).

Nếu có điều gì đó thú vị trong R01 không xảy ra trong R02 (hoặc ngược lại), bạn có hai Git Hashing mà bạn có thể so sánh các tệp nguồn, không phải lo lắng.

Như một lưu ý cuối cùng, một ví dụ khái niệm về một dự án, sẽ có một kho lưu trữ Phần cứng, cũng lưu trữ tệp "BoardPinout.h". Tệp này được bao gồm dưới dạng tệp được phiên bản từ xa vào kho lưu trữ Phần sụn, có một vài tệp định nghĩa giao diện được đưa vào từ xa vào kho Phần mềm.

Có nghĩa là mỗi khi tôi thay đổi một vài tín hiệu mà không sửa đổi chức năng rộng, dự án CTNH "cập nhật" BoardPinout, sau đó có thể được cập nhật và sử dụng trong Firmware, v.v.


1
Có thực sự ý nghĩa khi đặt phần cứng và phần sụn trong các repos khác nhau? Làm thế nào sẽ là một vấn đề để có chúng trong một? Tôi mong muốn nó trở thành một vấn đề nếu bạn cần theo dõi các thay đổi trong các thành phần thuộc về nhau (ví dụ: các chân IO bị tráo đổi cần được phản ánh trong các bài tập phần sụn khác nhau và kiểm tra các phiên bản không thể chỉnh sửa sẽ dẫn đến tình trạng lộn xộn).
rẽ trái

@leftaroundabout Trước hết, thổi phồng repo FW thay đổi nhanh của bạn với phần lớn thiết kế CAD phức tạp không phải lúc nào bạn muốn, nhưng bạn cũng có thể muốn đọc lại các bit về repos phụ và liên kết giữa chúng. Hoàn toàn không khó thực hiện với Git và điều đó khắc phục chính xác vấn đề đó mà không gây ra tất cả các loại thân mật không phù hợp giữa các vùng thiết kế.
Asmyldof

1
"Khách hàng của tôi không cảm thấy Dropbox đủ an toàn" Đối với các tệp phiên bản, họ đúng 100%. Điều này đặc biệt nguy hiểm nếu nhiều người dùng có thể sửa đổi các tệp cùng một lúc và thậm chí còn nhiều hơn nếu bạn có một số tệp thực sự chứa một tài nguyên. Tôi đã thấy "bộ tệp" nhị phân bị hỏng theo cách này (cơ sở dữ liệu địa lý tệp ESRI, nếu bạn tò mò).
jpmc26

1
@ jpmc26 Đó là một nhận xét vội vàng, phiên bản mọi thứ bắt đầu ban đầu nhiều hơn như một khía cạnh an toàn. Với một vài mẫu GitIgnore thông minh, phiên bản giờ đây dễ dàng bao trùm mọi thứ mà không gặp rắc rối, với tất cả những lợi thế mà nó mang lại. Tôi thực sự hoàn toàn đồng ý với bạn trên Dropbox được chia sẻ. Tại một trang web của khách hàng, nó gây ra vấn đề vô tận. Các tệp đang được phát triển tạo ra các bản sao xung đột vô tận trên máy tính bị tắt trong các phần của dev là một trong những bản sao khó chịu nhất.
Asmyldof

@leftaroundabout: Nó phụ thuộc vào mối quan hệ giữa phần cứng và phần sụn. Chúng ta hãy tương tự với các dự án phần mềm thông thường. Bạn có cam kết các tập tin gif và jpg cùng với trang web của bạn không? Trong trường hợp này, cả nhị phân và nguồn thay đổi với nhau ngay cả khi hình ảnh không thay đổi thường xuyên. Nhưng .. bạn sẽ cam kết mã nguồn Apache hoặc Nginx với dự án của bạn. Đối với vấn đề đó, bạn có cam kết mã nguồn của nhân Linux không? Trong trường hợp này, Apache hoặc Nginx và nhân Linux giống với phần cứng hơn - chúng thay đổi nhưng độc lập với mã bạn viết chạy trên chúng
slebetman

5

1) Nó chắc chắn có giá trị phiên bản sơ đồ / bảng tập tin. Ngay cả khi bạn không thể theo dõi sự khác biệt một cách dễ dàng, bạn vẫn có một cách rõ ràng để trở lại một bản phát hành phần cứng cụ thể nếu bạn phải làm việc với bản sửa đổi thiết bị cũ.

2) Chúng tôi có cấu trúc sau trong SVN của chúng tôi.
/ tag
/ chi nhánh
/ trung kế / phần cứng
/ trung kế / phần mềm / phần sụn

Nếu có thể áp dụng với nhiều thư mục con hơn như có thể / Firmware và / ConfigTool cho phần mềm và / mainboard và / bo mạch chủ hoặc một cái gì đó tương tự cho phần cứng.

2) Thẻ được tạo từ các thư mục con không phải từ toàn bộ thân cây, như Tag / Mainboard-v1.2.345. Phần cứng (cụ thể là PCB) luôn chứa bản sửa đổi SVN trong bản in lụa hoặc bằng đồng để có một tài liệu tham khảo trực tiếp.

4) Sự phụ thuộc giữa phần cứng và phần sụn có thể phức tạp. IMO nó không có ý nghĩa nhiều để xử lý nó ở cấp độ kho lưu trữ ngoại trừ để lại nhận xét hữu ích về các cam kết.
Xem xét mã hóa thay đổi phần cứng bằng cách sử dụng chân I / O dự phòng. Một cái gì đó như sử dụng 4 chân để mã hóa 16 phiên bản phần cứng khác nhau. Chúng tôi cũng đã sử dụng một đầu vào ADC với các giá trị điện trở khác nhau để mã hóa các phiên bản. Bằng cách này, phần mềm có thể "biết" phần cứng nào nó chạy và thay đổi / vô hiệu hóa / kích hoạt các tính năng cụ thể.


Tôi đồng ý. Tôi cũng đã thấy một thực tiễn tốt về việc xây dựng một "gói phát hành" - sơ đồ, BOM, các nhà máy, toàn bộ - vào dịp phát hành để sản xuất. Bạn gọi chúng là A, B, C, v.v. và sau đó lưu trữ chúng ở một nơi mà nhóm có thể tham khảo chúng. Ngoài ra, đừng quên một số phương tiện theo dõi những mod dây nào bạn đã thực hiện trên bảng nguyên mẫu nào.
pjc50

@ pjc50: Trên thực tế chúng tôi cũng "xây dựng" các gói phát hành, nhưng ngoài tầm kiểm soát nguồn (nhưng có tham chiếu sửa đổi). Về cơ bản nó sẽ là một bản sao chính xác của tất cả mọi thứ mà nhà sản xuất có. Nếu bạn phát triển phần cứng một cách chuyên nghiệp với sản xuất khối lượng lớn, điều rất quan trọng là phải có tất cả các thông tin có sẵn trong trường hợp có sự cố. Nếu bạn không nhớ nếu bạn gửi cho hội đồng quản trị "tài liệu quan trọng này" có thể chỉ định độ dày đồng PCB tùy chỉnh, bạn có thể gặp rắc rối.
Rev1.0
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.