JTAG là gì?


30

Tôi khá mới đối với các hệ thống nhúng và tôi luôn thấy thuật ngữ này được sử dụng mọi lúc, nhưng tôi hoàn toàn không thể hiểu nó là gì. Một tìm kiếm nhanh trực tuyến mang lại trang Wikipedia này: https://en.wikipedia.org/wiki/Joint_Test_Action_group mô tả nó như một loại giao thức để gỡ lỗi. Nhưng trong các bối cảnh khác, nó được sử dụng như là nó có thể lập trình bộ nhớ của chip giống như một lập trình viên. Nó là gì?


4
Có một số đá quý hữu ích ẩn trong câu hỏi này .
David

2
Tôi đã cho lùn +1. Ngoài ra, JTAG đôi khi được sử dụng sai như một động từ, nói chung, "để gỡ lỗi / kiểm tra" một điều. Một người "JTAG đang làm gì đó" thực sự có thể đang sử dụng một giao thức khác mà nhà sản xuất thiết bị đã chồng chéo với các chân JTAG vật lý (ví dụ SWD). Bạn có thể SWD, hoặc JTAG, nhưng không phải cả hai. Mặc dù vậy, không có ai SWD ("swoods"?) Thiết bị của họ.
Jon

Vâng, bạn có thể lập trình với JTAG
Snoop

Câu trả lời:


21

Nó giống như USB, SPI, I2C và các "bus" khác, và nó có một số cách sử dụng phổ biến, không giới hạn ở:

  • Một điều đặc biệt là trong việc thử nghiệm silicon trước khi đầu tư quá nhiều vào từng bộ phận, ví dụ như trong khi một con chip vẫn còn trên wafer, bạn có thể kiểm tra hầu hết các bộ phận. Được cấp phép cắt miếng wafer có thể gây sát thương nên bạn muốn kiểm tra lại nhưng có thể bạn làm điều đó trước khi đóng gói, có thể sau đó.

  • Bạn có thể sử dụng nó để quét ranh giới trên bảng. Bạn có thể lấy một bảng trên dây chuyền sản xuất (được cấp bảng phải được thiết kế đúng và một số phần trăm chip phải hỗ trợ điều này) nhưng bạn có thể thực hiện các bài kiểm tra kết nối tốc độ thấp, kích thích ghim trên một đầu của dấu vết và quét phần khác các bộ phận để thấy rằng chúng được hoặc không được kết nối theo thiết kế của bảng.

  • Vì các chip đã có các chân chuyên dụng này, tại sao không, đối với các bộ xử lý, sử dụng giao diện tương tự như một cách để nói chuyện với trình gỡ lỗi chip (OCD), thiết kế một cái gì đó vào bộ xử lý và cho phép nói chuyện đó qua jtag.

Đây là một cách chung để cho phép bạn cách ly mọi thứ trên chuỗi mà bạn muốn gửi một chuỗi bit đến hoặc nhận một chuỗi bit từ đó, theo cách mà mỗi điều bạn muốn nói có thể được thiết kế cho nhiều số khác nhau các bit từ một số nhỏ đến một số lớn. Đối với trình gỡ lỗi, tự nhiên bạn sẽ ghi hoặc đọc từ một thứ có kích thước đăng ký trong chip của bạn - có thể là thanh ghi 16 bit hoặc 32 bit. Nhưng đối với silicon hoặc bảng thử nghiệm chuỗi quét của bạn có thể là hàng chục bit. Mỗi thứ riêng lẻ mà bạn giải quyết có thể khác nhau về kích thước, nếu bạn muốn, từ bất kỳ thứ gì khác, làm cho nó trở thành một chiếc xe buýt rất linh hoạt với số lượng chân tương đối nhỏ, hấp dẫn cho các loại trường hợp sử dụng này.

Có lẽ vì sự phổ biến cho việc gỡ lỗi phần mềm, giờ đây họ có một số giải pháp hai pin để tiết kiệm số pin cho vi điều khiển và có lẽ những người khác sẽ chấp nhận điều đó, có lẽ là không.


Có các khía cạnh kỹ thuật của JTAG cho vay nó cho các sử dụng này, hoặc nó chỉ vì lý do lịch sử?
Owen

Vâng đọc bài viết trên wikipedia. Ý kiến ​​của tôi là vì nó đã ở đó và được nối vào các bo mạch và chip, và vì nó đủ linh hoạt để hỗ trợ các mục đích sử dụng khác, và ít nhất một số đã có sẵn các công cụ, nên có người đã nói tại sao không sử dụng nó cho những thứ khác. Tôi nghĩ rằng tính linh hoạt của nó so với số pin làm cho nó rất hấp dẫn. Có và tiếp tục là các giải pháp khác cho trình gỡ lỗi hoặc lập trình mạch nhưng nhờ các hướng dẫn của FTDI MPSSE và thành công của FTDI nói chung với mọi thứ USB, các công cụ jtag rẻ tiền hiện có sẵn rộng rãi.
old_timer 28/03/2016

10

JTAG ban đầu là một giao diện được sử dụng để kiểm tra PCB sau khi lắp ráp. Các dòng IO trên chip có thể được điều khiển và đọc thông qua các cổng JTAG cho phép thực hiện trình tự kiểm tra bảng. Sau đó, nó cũng bắt đầu được sử dụng như một giao diện lập trình và gỡ lỗi. Chức năng nào có sẵn trên JTAG sẽ phụ thuộc vào IC cụ thể mà bạn đang xử lý.

Một lợi thế của JTAG so với hầu hết các giao diện lập trình khác là các thiết bị có thể được nối xích. Vì vậy, một cổng JTAG có thể phục vụ để lập trình / gỡ lỗi / kiểm tra nhiều thiết bị (mặc dù tôi khuyên bạn nên thiết kế các hệ thống của mình để các thương hiệu chip khác nhau có thể được chia thành các chuỗi khác nhau, trong khi giao thức JTAG cấp thấp không được chuẩn hóa một cách đáng tiếc các công cụ bạn cần để lập trình / gỡ lỗi các chip không).


9

JTAG là một thuật ngữ kỳ lạ. Để bắt đầu, thuật ngữ có thể chỉ định một trình kết nối và giao thức cụ thể, bao gồm tín hiệu đồng hồ (TCK), chọn chế độ (TMS) và dữ liệu vào / ra (TDI / TDO). Điều này bao gồm một mạng lưới các thiết bị, trong đó TDO của mỗi thiết bị được kết nối với TDI của thiết bị tiếp theo trong một chuỗi gọi là quét. TMS được sử dụng để đặt tất cả các thiết bị đồng thời vào các chế độ khác nhau .

Các thiết bị trên chuỗi quét thường được kết nối dưới dạng một thanh ghi dịch chuyển lớn bao gồm các thanh ghi trong mỗi thiết bị riêng lẻ. Khi các thiết bị ở trạng thái SHIFT_IR hoặc SHIFT_DR, chúng sẽ kết nối với chuỗi quét một trong hai thanh ghi tạm thời: Thanh ghi lệnh và thanh ghi dữ liệu.

Khi một giá trị được chuyển vào, chế độ UPDATE_IR hoặc UPDATE_DR có thể được kích hoạt bằng cách đặt TMS một cách thích hợp trong khi bật TCK. Tại thời điểm này, giá trị được chuyển vào thanh ghi "có hiệu lực". Ví dụ, việc chuyển các chuỗi khác nhau vào IR của một FPGA và chuyển sang UPDATE_IR sẽ khiến cho FPGA đi vào các chế độ khác nhau như cấu hình, đọc lại, thời gian chạy bình thường hoặc truy cập vào các thanh ghi người dùng cụ thể và các nguyên hàm cụ thể của JTAG được khởi tạo trong thiết kế.

Tương tự, các trạng thái chụp có thể được sử dụng để "đọc" một giá trị từ thiết bị và đưa nó vào IR hoặc DR, để được chuyển qua TDO và cuối cùng được lập trình viên JTAG đọc.


4

JTAG định nghĩa một giao thức nối tiếp và một số lệnh để cho phép truy cập vào các thanh ghi bên trong các IC phức tạp. Điều này cho phép người kiểm tra có thể quan sátkiểm soát theo cách tiêu chuẩn bằng cách sử dụng một vài chân.

Việc sử dụng ban đầu là 'quét ranh giới', trong đó tất cả các chân I / O có thể được đọc và điều khiển bởi một thanh ghi dịch chuyển lớn bao quanh chip. Tuy nhiên, nó đã nhanh chóng được tăng cường để thêm các thanh ghi dịch chuyển tiếp theo để truy cập vào phần bên trong của chip, bao gồm cả bộ nhớ.

Bạn hiếm khi sử dụng JTAG bit, truy cập thường thông qua các thư viện, còn gọi là trình điều khiển, được cung cấp bởi nhà sản xuất IC và được sử dụng bởi hệ thống kiểm tra và bộ điều hợp truy cập thử nghiệm.


Vì vậy, chip thực sự cần phải hỗ trợ JTAG cả về phần cứng và phần mềm?
UnTraDe

@UnTraDe Không, chip hỗ trợ JTAG trong phần cứng và có thể trong phần mềm (ví dụ: một FPGA có thể làm lộ một số giao diện giữa JTAG và thiết kế người dùng), nhưng không bắt buộc phải có hỗ trợ phần mềm trên chip. Các công cụ mà người ta sẽ sử dụng để tương tác với các thiết bị qua JTAG sẽ có cả phần mềm và phần cứng hỗ trợ (phần mềm trên máy tính và phần cứng về mặt lập trình viên JTAG được gắn vào máy tính đó)
ζ--

3

Có những gì JTAG 'có nghĩa là' và có những gì JTAG 'là'. Như những người khác đã chỉ ra JTAG 'là' giao diện xe buýt tiêu chuẩn công nghiệp để thử nghiệm sản xuất, như trong J oint T est A ction G roup.

JTAG 'nghĩa là gì' đối với nhà phát triển phần mềm nhúng là giao diện gỡ lỗi trên SoC / bộ vi xử lý để gỡ lỗi bên ngoài phần mềm nhúng chạy trên chip. Gần như mọi CPU / SoC trên thị trường đều sử dụng giao diện JTAG không chỉ cho các thử nghiệm sản xuất mà còn hỗ trợ gỡ lỗi phần mềm. Bạn sẽ tìm thấy giao diện JTAG trên mọi thứ, từ CPU x86 lớp máy chủ đến bộ định tuyến WiFi gia đình dưới 50 đô la. Với phần cứng giao diện phù hợp và phần mềm phù hợp, các giao diện này sẽ cấp cho bạn khả năng đọc / ghi bộ nhớ, đặt điểm dừng và mã một bước.

Chìa khóa tất nhiên là có được phần cứng và phần mềm phù hợp. Mặc dù giao diện JTAG cơ bản được chuẩn hóa, các tiện ích gỡ lỗi phần mềm cụ thể có sẵn trong một thiết bị có thể không được. JTAG giống như TCP / IP. Nó tồn tại ở giữa ngăn xếp ứng dụng. Bạn cần lớp vật lý phù hợp để giao tiếp với thiết bị (nghĩa là thứ này sử dụng 10-Base-2 là gì?!?!?), Và bạn cần phần mềm ứng dụng phù hợp bên trên nó (ý bạn là gì tôi cần một Gopher khách hàng?!?!?!). Tuy nhiên, sức mạnh của hệ sinh thái ARM đã dẫn đến một số mức độ tiêu chuẩn hóa ở đó (xem OpenOCD).

Bạn cũng đã hỏi về việc sử dụng JTAG để lập trình flash. Vâng, một số phần mềm sử dụng nó cho mục đích đó là tốt. SoC có thể cung cấp cho các cơ sở JTAG để đọc / ghi từ các không gian địa chỉ bộ nhớ CPU, nó có thể cung cấp quyền truy cập trực tiếp vào các bộ điều khiển flash và ở mức tối thiểu JTAG cung cấp quyền truy cập cấp thấp vào các chân I / O ở cạnh chip (điều này là mục đích ban đầu của JTAG, để cho phép kiểm tra tính liên tục của chip với các kết nối chip trong quá trình thử nghiệm sản xuất, tức là 'quét ranh giới JTAG'). Bất kỳ cơ sở nào trong số này có thể được sử dụng bởi các lập trình viên thông minh để điều khiển các tín hiệu cần thiết để lập trình lại chip flash trong trường hợp thiết bị vô tình bị 'brick'.

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.