Segger J-Link so với lập trình viên JTAG?


10

Tôi chưa phát triển với ARM và tôi hơi bối rối về lập trình viên.

Tôi đã mã hóa bằng PIC và 8051 và cả hai đều sử dụng bộ tải từ nhà sản xuất. Không nhầm lẫn.

Nhưng ARM có một chút khác biệt vì các lõi hầu hết đều giống nhau?

Bạn có phải mua một lập trình viên JTAG Segger "J-Link" để lập trình ARM không? Tôi thấy các trình tải Segger chuyên nghiệp giống như nhiều hàng trăm đô la. Có vẻ hơi khắc nghiệt ...

Tôi thấy ST làm cho một lập trình viên JTAG trở thành "ST-Link" ít hơn nhiều so với "J-Link" - điều gì mang lại?

Thỏa thuận với các trình tải cho ARM Cortex M là gì? Các công cụ tải từ các nhà sản xuất MCU ARM có bị khóa để chỉ hoạt động với MCU của họ không?

ST-Link có thể lập trình ARM Cortex M khác không, nếu bạn ghim nó đúng cách?

Cuối cùng, tôi đang cố gắng có một trình tải tương thích cho ARM Cortex M3, nhà sản xuất không tạo ra trình tải ...


Có gì J-Tagg?
Eugene Sh.

Đã sửa. Đó là lần đầu tiên tôi vượt qua. ;)
Leroy105

Chà .. J-Link một lập trình viên JTAG. Chúng chỉ có các phiên bản giới hạn khác nhau hỗ trợ các thiết bị khác nhau (mỗi thiết bị có trình tự JTAG khác nhau để thực hiện một số tác vụ nhất định)
Eugene Sh.

máy xúc lật là gì? và đặc biệt là một tương thích. Đây là một: deere.com/assets/images/common/products/wheel-loaders/iêu
P__J__

Câu trả lời:


12

ARM sử dụng JTAG hoặc SWD và các lõi ARM vi điều khiển phổ biến nhất là dòng Cortex, hầu như được lập trình và gỡ lỗi trên SWD.

Cả JTAG và SWD đều được xác định rõ và hầu hết các nhà cung cấp mô tả cách nhập và thao tác Cổng truy cập gỡ lỗi (DAP), đó là cách bạn thường truy cập vào các bus nội bộ, CPU, bộ nhớ và thiết bị ngoại vi. Giao diện vật lý giữa PC bạn đang sử dụng để phát triển / gỡ lỗi và cổng JTAG / SWD của micro là bộ điều hợp.

Mặc dù đúng là bạn có thể sử dụng thực tế mọi thứ để kết nối với cổng và thao tác với giao diện SWD, hầu hết các nhà cung cấp sẽ có "hương vị" của bộ chuyển đổi riêng. Sử dụng công cụ được đề xuất của nhà cung cấp thường là con đường ít kháng cự nhất, vì nhà cung cấp sẽ hỗ trợ bộ điều hợp của họ, phần mềm được đề xuất của họ sẽ hoạt động với bộ điều hợp của họ và mọi thứ phải được ghi lại một cách hợp lý, giúp mọi thứ trơn tru nhất có thể.

Điều đó đang được nói, kinh nghiệm của tôi với các công cụ của nhà cung cấp là chúng là những công cụ không đạt tiêu chuẩn, nhanh và bẩn. Tôi thường gặp rắc rối với OpenOCD và các công cụ của nhà cung cấp (chủ yếu là ST-Link, Olimex, OpenSDA, v.v.), đặc biệt là với gỡ lỗi. Để tôi nói cho bạn biết: không có gìbực bội hơn là cuối cùng việc một hệ thống nhúng xuất hiện lỗi trong môi trường gỡ lỗi và một cái gì đó giữa phần mềm / ide của trình gỡ lỗi (gdb, nhật thực, v.v.), OpenOCD, trình điều khiển của nhà cung cấp và bộ điều hợp nhà cung cấp không đồng bộ hóa, làm rơi gỡ lỗi kết nối và yêu cầu khởi động lại phần cứng để thử lại. Sự bất ổn môi trường bực bội này mở ra cơ hội cho các nhà cung cấp như Segger, người tự sản xuất bộ điều hợp JTAG / SWD của họ, cung cấp hỗ trợ tuyệt vời và công cụ của họ làm việc với nhiều nhà cung cấp khác nhau. Có một điều cần nói cho một giao diện hợp nhất duy nhất để sử dụng với thực tế tất cả các thiết bị bạn làm việc cùng.

Tôi đã dành rất nhiều thời gian để tránh J-Link vì giá cả và vì tôi thích sử dụng phần mềm mở và các công cụ của nhà cung cấp. Tôi đã bắt đầu sử dụng bộ điều hợp J-Link vài năm trước trong một dự án đã có chúng và không nhìn lại. Các công cụ của họ là tất cả đa nền tảng và trình gỡ lỗi độc lập của họ, Ozone, thật tuyệt vời. Tôi hiếm khi gặp vấn đề "không ổn định gỡ lỗi" với OpenOCD và J-Link và chưa bao giờ có vấn đề với Ozone.

Segger cũng đã thực hiện một bước khá hay là cung cấp "nâng cấp" miễn phí cho bất kỳ trình gỡ lỗi trên tàu nào trên bộ công cụ dev để biến trình gỡ lỗi dành riêng cho nhà cung cấp thành J-Link được cấp phép. Điều này là tất nhiên để giúp bạn thử và sử dụng các công cụ của họ để bạn sẽ mua chúng để sử dụng trên bảng của riêng bạn, nhưng đó là một chiến thuật tuyệt vời. Thông tin thêm ở đây cho ST-Link, hãy theo liên kết "Mô hình -> Liên kết J khác" của họ cho các nhà cung cấp khác. Họ cũng có giảm giá giáo dục và phần cứng "lite" J-Link có giá rất hợp lý (tôi nghĩ là 50 USD?) Và bị giới hạn trong các lõi của bộ xử lý Cortex.

Bây giờ Segger không phải là bộ điều hợp bên thứ ba duy nhất ngoài đó: trình gỡ lỗi nguồn mở cụ thể nhắm mục tiêu gdb có sẵn. Đó là Black Magic Thăm dò. Họ bán phần cứng nhưng cũng có sơ đồ, bố cục và phần mềm đầy đủ được phát hành theo GPL. Tôi chưa có cơ hội sử dụng chúng nhưng tôi rất hào hứng dùng thử trình gỡ lỗi này. Việc thực hiện giao thức GDB trên trình gỡ lỗi sẽ cải thiện sự ổn định đáng kể. Tất nhiên cũng có các hệ thống cao cấp khác như Lauterbach và bộ điều hợp Abatron BDI2000 và BDI3000 (hiện không còn tồn tại). Công cụ fancier / đắt tiền hơn thường được nối mạng thay vì được kết nối trực tiếp với PC gỡ lỗi, cung cấp các giao diện JTAG nhanh hơn và thường có các cổng theo dõi riêng biệt, với MCU tương thích, cung cấp cho bạn nhật ký chi tiết của mỗi lệnh được thực thi, thời gian nó được thực thi và trạng thái bộ xử lý bên trong sau mỗi lệnh.

Bạn luôn có thể thực hiện của riêng bạn là tốt. Tôi đã nhúng các giao diện SWD của riêng mình vào PSoC5LP của Cypress để giải quyết một vấn đề cụ thể cho phép tôi lập trình toàn bộ chuỗi thiết bị thông qua một kết nối USB để sản xuất. Bạn cũng có thể sử dụng cổng song song hoặc cặp đường GPIO để vẫy tín hiệu. Tất cả phụ thuộc vào những gì bạn đang theo đuổi.


1
Bạn đã có cơ hội thử đầu dò Black Magic chưa? Bất cứ điều gì để thêm vào đây?
cp.engr

3

Không phải câu hỏi này chỉ cần hỏi.

ARM làm cho các lõi, các lõi có giao diện SWD, hiện đã được ghi lại một cách công khai và có nhiều giải pháp. Có, bạn có thể sử dụng một liên kết để liên lạc với các chip khác với stm32. Tương tự như vậy, một cánh tay đang đẩy, không thể nhớ tên của nó, được tìm thấy trên các bảng khởi chạy ti mới hơn, ví dụ như bảng msp432 tôi nghĩ có một. Và bạn có thể nhận được bản sao j-link trên ebay với một vài đô la hoạt động tốt. Bạn có thể truy cập openocd và trên chương trình phụ trợ song song thực hiện bất cứ điều gì bạn muốn, có thể nói một chút thông qua một thiết bị ftdi được sử dụng như gpio, chậm nhưng hoạt động hoàn toàn tốt. cũng như một số người đã đơn giản thực hiện các công cụ swd bằng cách sử dụng các bảng, mcus, v.v.

Một số nhà cung cấp đặc biệt NXP và ST tiếp tục có bộ tải khởi động dựa trên uart hoàn toàn độc lập với arm và giao diện swd vào lõi arm, những bộ tải khởi động này là các giao thức đơn giản mà bạn có thể sử dụng công cụ của riêng mình trong nửa giờ bằng cách sử dụng usb để uart trên máy phát triển của bạn (ftdi, v.v.) hoặc có nhiều cái đã được viết. Thật đáng buồn khi đã từ bỏ samba, họ cung cấp một phần bạn có thể tải xuống các phần samd, nhưng bạn phải có trách nhiệm không xóa nó và phần đó cực kỳ dễ dàng để xóa flash, dễ dàng gây phiền nhiễu. do đó, đó là một chút thất bại cho một giao diện như các nhà cung cấp khác mà bạn từng có thể dựa vào đó.

về cơ bản có quá nhiều sự lựa chọn để lựa chọn nếu bạn muốn xem xét nó từ quan điểm đó. không đề cập đến nếu bạn mua một bảng phát triển từ nhà cung cấp chip và tải xuống phần mềm của họ, dự kiến ​​sẽ chỉ hoạt động với một vài cú click chuột.


Tôi đã tự hỏi nếu bạn có thể sẵn sàng "sử dụng công cụ của riêng bạn trong nửa giờ" và đăng nó lên GitHub với các hướng dẫn chi tiết (đủ chi tiết để người mới bắt đầu 12 tuổi làm theo) về cách sử dụng nó, với ví dụ. Tôi nghĩ rằng nó sẽ thực sự hữu ích. Nếu bạn sẵn sàng, cảm ơn trước. Đó là một kinh nghiệm học tập tốt cho tôi để đọc mã của bạn.
Gabriel Staples

Ngoài ra, nếu câu hỏi này chỉ được hỏi ở nơi khác, việc đăng một liên kết đến nó sẽ hữu ích để liên kết các chủ đề với nhau thông qua các liên kết chéo.
Gabriel Staples

Chắc chắn nhưng OP đã thất bại trong việc tìm kiếm câu trả lời trước khi đến đây, thay vì cố gắng đóng nó như một bản sao, có thêm thông tin để thêm.
old_timer

1
Tối thiểu, một liên kết đến tài khoản GitHub của bạn sẽ hữu ích. Nếu bạn cũng có sẵn các liên kết khác, tôi sẽ không gặp rắc rối với việc bạn bỏ chúng ở đây. Nếu bạn không, không có vấn đề gì, tôi có thể google và đọc hướng dẫn tham khảo, ghi chú ứng dụng, bảng dữ liệu, blog và mã GitHub cũng như kỹ sư chuyên gia hoặc người giải quyết vấn đề tiếp theo, nhưng mọi chuyên gia đều biết việc này mất rất nhiều thời gian quý giá của người khác có thể giúp họ tiết kiệm với một chút hướng dẫn để tăng tốc quá trình.
Gabriel Staples

1
@Gabriel Staples, biết điều gì buồn cười? Tôi đang làm việc trên TI CC1130 cũng sử dụng JTAG. Tôi đã giải quyết vấn đề này nhiều hơn một chút, và thành thật mà nói, tôi sẽ nói rằng lý do THỰC TẾ mọi người mua Segger là Segger có trình điều khiển của họ trên hầu hết các IDE ARM cho tất cả các nhà cung cấp. ST-LINK với giá 25 đô la có thể sorta cana có thể hoạt động, nhưng thực tế là TI không có trình điều khiển cho nó trong IDE của họ. Họ có trình điều khiển sẵn sàng cho Segger ... Để nói rằng ST-Link có thể giao tiếp với bất kỳ ARM nào là không hoàn toàn đúng, nếu không có hỗ trợ trình điều khiển tự nhiên trong các nền tảng khác.
Leroy105
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.