2008-09-16 15 views
5

Chúng tôi có một hệ thống nhúng nhỏ mà không cần bất kỳ cổng video hoặc cổng nối tiếp nào (nghĩa là chúng tôi không thể xuất văn bản qua printf).
Chúng tôi muốn theo dõi tiến độ của mã của chúng tôi thông qua trình tự khởi tạo.
Có một số điều đơn giản mà chúng tôi có thể làm để trợ giúp việc này.
Nó không chạy bất kỳ hệ điều hành nào và nền tảng phần cứng có thể tùy chỉnh được một chút.Tôi có thể sử dụng phương pháp đơn giản nào để gỡ lỗi bộ xử lý được nhúng mà không cần cổng nối tiếp hoặc video?

Trả lời

10

Cách đơn giản nhất giải pháp mở rộng nhất là đèn LED trạng thái. Chuyển đổi đèn LED dựa trên hành động, ở dạng nhị phân hoặc khi một số hành động nhất định xảy ra nếu bạn có thể thu hẹp tiêu điểm của mình.

Các mạnh nhất sẽ là một thiết bị phần cứng JTAG. Bạn thậm chí không cần thiết lập các điểm ngắt - đơn giản là có thể dừng ứng dụng và kiểm tra trạng thái bộ nhớ có thể là đủ. Lưu ý rằng một số nền tảng phần cứng không hỗ trợ các tùy chọn "ưa thích" như đồng hồ bộ nhớ hoặc điểm ngắt phần cứng. Trước đây thường làm việc xung quanh với việc ngừng bộ xử lý và đọc bộ nhớ (biến hệ thống 10MHz thành hệ thống 1kHz), trong khi đôi khi được thực hiện bằng cách thay thế mã (thay thế hướng dẫn được nhắm mục tiêu bằng một bước nhảy khác), đôi khi che dấu các vấn đề khác . Hãy nhận biết những vấn đề này và các bộ vi xử lý nhúng mà chúng áp dụng.

5

Có một vài chiến lược bạn có thể sử dụng nhằm giúp gỡ rối:

Nếu bạn có Pins Output có sẵn, bạn có thể treo họ lên đèn LED (hoặc một oscilloscope) và chuyển đổi các chân đầu ra cao/thấp để chỉ đã đạt được một số điểm nhất định trong mã.
Ví dụ: 1 nhấp nháy có thể được tải chương trình, 2 nhấp nháy là foozbar được khởi tạo, 3 nhấp nháy đang chấp nhận đầu vào ...

Nếu bạn có nhiều dòng đầu ra, bạn có thể sử dụng đèn LED 7 đoạn để truyền tải thêm thông tin (số/chữ thay vì nhấp nháy).

Nếu bạn có khả năng đọc bộ nhớ và có RAM, bạn có thể sử dụng chức năng chạy nước rút để thực hiện gỡ lỗi giống như printf, nhưng thay vì đi tới màn hình/cổng nối tiếp, nó được ghi trong bộ nhớ.

0

Một JTAG debugger cũng là một lựa chọn, mặc dù cồng kềnh để thiết lập.

0

Nếu bạn không có JTAG, đèn LED do những người khác đề xuất là một ý tưởng tuyệt vời - mặc dù bạn có xu hướng kết thúc trong chu kỳ kiểm tra/xây dựng lại để cố gắng theo dõi vấn đề.

Nếu bạn đã có thời gian hơn, và ghim phần cứng tùng thay thế, và bộ nhớ rảnh rỗi, bạn có thể luôn luôn bit bash một giao diện nối tiếp tốc độ thấp. Tôi đã thấy rằng khá hữu ích trong quá khứ.

+0

Ý tưởng tuyệt vời về bit đập nối tiếp i/f – Benoit

2

Tùy thuộc vào loại gỡ lỗi bạn đang cố gắng làm - đặc biệt nếu bạn đang theo dõi một phương pháp truy tìm tạm thời hoặc nếu bạn đang cố gắng cung cấp công cụ có thể được sử dụng làm chỉ báo trạng thái trong tuổi thọ của dự án (hoặc sản phẩm).

Đối với một off, trong nguồn sâu truy tìm và gỡ lỗi một debugger trong mạch (ví dụ. Jtag) có thể rất hữu ích. Tuy nhiên, chúng hữu ích nhất khi mà việc gỡ lỗi của bạn yêu cầu thiết lập các điểm ngắt và điều tra bộ nhớ và thanh ghi - điều này làm cho nó ít lợi ích khi bạn xử lý các vấn đề thời gian quan trọng.

Trong trường hợp bạn cần phải xác định trạng thái chương trình mà không có ảnh hưởng đáng kể đối với việc thực hiện các hệ thống của bạn sử dụng đèn LED kết nối với tha cho I/O pins sẽ rất hữu ích. Chúng cũng có thể được sử dụng làm đầu vào cho bộ dao động lưu trữ số (DSO) hoặc bộ phân tích logic. Kỹ thuật này có thể được thực hiện mạnh mẽ hơn bằng cách chọn các mẫu xung duy nhất sẽ được nhận dạng trên DSO.

Đối với một công cụ gỡ lỗi linh hoạt hơn, mặc dù, cổng nối tiếp là một giải pháp tốt. Để tiết kiệm chi phí và bất động sản PCB, bạn có thể thấy hữu ích khi sử dụng mô-đun trình cắm có chứa các bộ chuyển đổi RS232.

Nếu bạn đang cố gắng cung cấp chỉ báo dài hạn về trạng thái như một phần của hoạt động bình thường của sản phẩm, đèn LED lại là một phương pháp đơn giản rẻ tiền. Tuy nhiên trong tình huống này, tốt nhất là chọn các mẫu xung đủ chậm để dễ dàng xác định bằng kiểm tra trực quan. Điều này sẽ tất cả các bạn theo thời gian, bạn sẽ tìm hiểu một mô hình cụ thể đại diện cho hành vi "bình thường".

0

Những người khác đã đề xuất một số ý tưởng khá tốt bằng cách sử dụng chân đầu ra, vì vậy tôi sẽ không gợi ý rằng, mặc dù nó có thể là một giải pháp rất tốt và rất hiệu quả về chi phí. Nếu ngân sách và bộ xử lý mục tiêu của bạn hỗ trợ nó, một hệ thống theo dõi phần cứng, (hoặc một trình giả lập thời trang cũ, hoặc BDM ưa thích với hỗ trợ theo dõi xe buýt) có thể là điều tuyệt vời cho loại điều này. Nó rất tốn kém mặc dù.

2

Bạn có thể dễ dàng mô phỏng giao tiếp nối tiếp (UART) bằng cách sử dụng bit-đập từ chân IO của hệ thống. Móc nó vào một trong các chân của thẻ và đính kèm vào một bộ chuyển đổi RS232 có (TTL để chuyển đổi RS232 rất dễ dàng để mua hoặc xây dựng), mà đi đến cổng nối tiếp của máy tính của bạn.

+0

Nó chưa bao giờ xảy ra với tôi để làm một giao diện nối tiếp bit đập. Rực rỡ! – Benoit

0

Ý tưởng sử dụng phần mềm bit-bẻ UART là tốt, nhưng có một số nỗ lực cần thiết trong việc viết một và bạn cũng cần một số giờ và ngắt miễn phí. Nếu phần cứng của bạn có bất kỳ giao diện nối tiếp không sử dụng nào khác (SPI, I2C, ..), việc sử dụng chúng sẽ dễ dàng hơn. Với một vi điều khiển nhỏ, bạn có thể chuyển đổi giao diện thành RS-232.

Nếu bạn phải đi cho bit-đập, làm cho một nối tiếp đồng bộ có thể là một lựa chọn đơn giản vì nó sẽ không quan trọng đối với thời gian.

Các vấn đề liên quan