Raspberry Pi làm lập trình viên JTAG?


7

Khác với vấn đề rõ ràng không tầm thường khi viết phần mềm, có lý do thực tế nào khiến cổng GPIO của Raspberry Pi không thể được sử dụng làm lập trình viên JTAG không? Tôi yêu cầu bởi vì tôi đang thực hiện một số công việc sở thích với việc kết nối CPLD với Raspberry Pi của tôi và sẽ thuận tiện để có thể lập trình trực tiếp thay vì sử dụng một thiết bị và máy tính JTAG riêng.

Có bất kỳ vấn đề với điện áp, thời gian vv ...?


Bit banging jtag từ chế độ người dùng trong linux có thể sẽ chậm một chút, nhưng nó là có thể. Bạn có thể xem xét sử dụng chức năng của bộ điều hợp jtag bên ngoài và dán nó vào mô-đun hạt nhân để có hiệu quả cao hơn. Thật không may, các chi tiết gpio của raspberry pi không được ghi lại kỹ lưỡng trong tài liệu công khai như hầu hết các bộ xử lý được sử dụng cho loại nhiệm vụ này, nhưng bạn có thể tìm thấy đủ thông tin để làm cho nó hoạt động cơ bản.
Chris Stratton

Cảm ơn, đối với các CPLD mà tôi quan tâm đến chậm có thể chấp nhận được vì các tệp rất nhỏ nhưng đó là một ý tưởng tốt.
John Burton

Ah, tôi đã bỏ qua đề cập đến CPLD, điều này sẽ làm cho nó hợp lý hơn so với các GPU lớn hoặc flash cấu hình của chúng. Bạn có thể tìm các ví dụ cổng song song của PC làm điểm bắt đầu. Hoặc lấy nguồn trình phát JAM hoặc SVF hoặc bất cứ thứ gì nhà cung cấp cung cấp và xây dựng nó với giai đoạn đầu ra được sửa đổi.
Chris Stratton

Câu trả lời:


7

OpenOCD có trình điều khiển sysfsgpio chung và đã có trình điều khiển Raspberry Pi BCM2835 cụ thể trong một thời gian và AFAICT tốc độ rất tốt (ví dụ như flash STM32F1 bị giới hạn bởi tốc độ của đèn flash) - khoảng 4 MHz có thể dễ dàng đạt được không có sự tuần hoàn bên ngoài là cần thiết. Cũng có hỗ trợ cho SWD , nhưng nó chưa ngược dòng.

Bạn nên sao chép Git HEAD hiện tại và biên dịch nó tự nhiên với --enable-bcm2835gpio, sau đó sử dụng cấu hình từ interface/raspberrypi-native.cfg.

Vui lòng tham khảo hướng dẫn chính thức README và Texinfo để biết chi tiết.

Về phần cứng của câu hỏi: Nếu điện áp mục tiêu bằng hoặc rất gần 3,3 V, bạn có thể kết nối trực tiếp các chân của Raspberry Pi với giao diện đích, nếu không, bạn có thể (không phải lúc nào cũng cần vì nhiều bộ vi điều khiển hiện đại có "5 V -tolerant "chân, vì vậy chúng có thể được kết nối với các nguồn có điện áp cao hơn V cc của chúng mà không bị hư hại, nhưng kiểm tra tài liệu trước!) cần thêm bộ đệm dịch điện áp thích hợp.

Để cung cấp kết hợp trở kháng tốt hơn, nên có các điện trở sê-ri 47-100 ohms trên mỗi đường tín hiệu, gần với đầu nối Raspberry Pi. Để biết thêm chi tiết, vui lòng xem phần giải thích chi tiết của Michael Schwingen, Re: Khả năng ổ đĩa đầu ra cao trong Raspberry Pi .


1

Một điều tôi sẽ xem xét là ngay cả khi I / O đập bit chậm, bạn có thể (từ từ) lập trình một CPLD mà sau đó có thể được sử dụng để thực hiện các hoạt động khác nhanh hơn nhiều. Ví dụ: nếu bạn có mười chân đầu ra D0-D9, tất cả trên cùng một cổng I / O, cùng với chân đầu vào, bạn có thể sử dụng D9 làm đầu vào "kích hoạt", trong đó thay đổi trạng thái (tăng hoặc giảm) sau một thời gian trì hoãn ngắn (đủ lâu để tất cả các chân khác giải quyết), kích hoạt CPLD để làm một cái gì đó. D8 có thể chọn liệu "thứ gì đó" được cho là "xuất dữ liệu trên D0-D7" hay thứ gì khác. D4-D7 sau đó có thể chọn một trong 16 thao tác để thực hiện (bật / tắt chế độ trong đó các đầu ra chỉ cần tuân theo các trạng thái của D0-D2,


0

Bạn có thể tạo một mạch giao diện nhỏ để đọc dữ liệu đi qua các chân GPIO và gửi lại nó với các mức điện áp, thời gian thích hợp, v.v. Điện áp có thể phải được thay đổi nếu Raspberry Pi chạy ở điện áp thấp hơn / cao hơn CPLD, nhưng tôi không có bất kỳ ý tưởng nào về thời gian.


Vâng, đó thực sự là những gì tôi đang hỏi. Vì tôi chủ yếu là một lập trình viên làm một chút về điện tử cho một sở thích, tôi nghĩ rằng tôi có thể viết mã cần thiết để làm điều này, nhưng tôi chỉ muốn biết liệu nó có thực tế không trước khi lãng phí thời gian của tôi vào nó. Nếu nó cần một bộ chuyển đổi quảng cáo thì tôi cũng có thể sử dụng lập trình viên hiện có của mình.
John Burton

Chà, có lẽ nếu cả hai đều chạy ở cùng một mức điện áp thì có thể là có thể.
Saad

Ok cảm ơn, có vẻ như bạn có thể chạy jtag ở một phạm vi điện áp trên cpld bao gồm 3,3v mặc dù tôi nghĩ rằng nó có thể đang sử dụng 1,8v trên bảng tôi có
John Burton
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.