Lập trình vi điều khiển: JTAG, SPI, USB oh my!?


52

Tôi đã nhận thấy, liên quan đến vi điều khiển, có một số cách để lập trình chúng. Tôi khá quen thuộc với USB vì Arduino của tôi có thể được lập trình qua USB.

Giao diện JTAG hoặc SPI là gì?

Cuối cùng, tôi biết rằng các giao diện này cung cấp một phương tiện để flash chip với các hướng dẫn mới nhưng chúng khác nhau như thế nào? Có bất kỳ lợi thế của một so với nhau?

Câu trả lời:


39

Các bộ vi điều khiển ATMEGA giống như bộ vi xử lý trong arduino đi thẳng từ nhà máy chỉ có thể được lập trình bằng giao diện SPI hoặc JTAG.

SPI là viết tắt của Giao diện ngoại vi nối tiếp và là cách để các bộ vi điều khiển giao tiếp với nhau hoặc với thế giới bên ngoài. Đôi khi nó còn được gọi là 3 dây vì nó sử dụng ba dây để liên lạc. Để lập trình chip, bạn sẽ cần một lập trình viên đặc biệt đọc các lệnh từ USB để điều khiển các dòng SPI để lập trình chip. Một cái phổ biến dường như là USBTinyISP từ Adaf nhung . Giới thiệu rất tốt về lập trình SPI là tại SparkFun. Các ứng dụng phổ biến nhất để lập trình chip Atmel AVR là avrdude (cmd line), ponyprog (không hoạt động với các lập trình viên mới hơn) và trong một số trường hợp, AVR Studio (nếu lập trình viên của bạn hỗ trợ). Ưu điểm của lập trình SPI là bạn có thể lập trình bất kỳ chip Atmel nào ngay từ nhà máy để bạn không cần luôn có Arduino trong các dự án của mình.

Trong đó SPI là giao thức nối tiếp "chỉ là một" khác, JTAG là một giao thức được thiết kế đặc biệt để lập trình và gỡ lỗi vi điều khiển. Không phải tất cả JTAG của Atmel đều hỗ trợ JTAG mà là những cái được sử dụng trong Arduino. Giao thức JTAG có thể được sử dụng cho những thứ hay ho như "mô phỏng mạch" và gỡ lỗi, điều đó có nghĩa là nó cho phép bạn xem trạng thái của chương trình trong vi điều khiển trong khi nó thực sự đang chạy. Để làm điều này, bạn sẽ cần một lập trình viên đặc biệt. Nhìn thấy câu trả lời của tôi cho một câu hỏi khác .

Để lập trình chip bằng USB, trước tiên bạn phải lập trình chip bằng "bộ nạp khởi động" bằng SPI hoặc JTAG. Sau khi được tải với bộ tải khởi động, hệ thống sẽ được lập trình từ bất kỳ PC nào sử dụng bộ chuyển đổi USB-serial. Nhược điểm là bộ tải khởi động chiếm một số không gian bộ nhớ và phương pháp này không cho phép bạn thấy trạng thái của chip trong khi nó đang chạy.


10
Mặc dù chính xác trong ý tưởng rằng bộ tải khởi động nối tiếp không khả dụng trên ATMEGA mới (mặc dù trên nhiều bộ vi điều khiển khác), yêu cầu SPI hoặc JTAG phải được sử dụng là không chính xác. ATMEGAs cũng hỗ trợ chế độ lập trình song song điện áp cao, có khả năng điều khiển quá mức một số cài đặt cầu chì sẽ khiến các phương pháp lập trình trong mạch phổ biến hơn không thể thực hiện được. JTAG không được thiết kế để lập trình micros mà để kiểm tra các bo mạch PC bằng cách đưa các giá trị vào và ra khỏi các thanh ghi chân IO. Mở rộng nó để lập trình hoặc gỡ lỗi các chức năng cốt lõi là một hack sau này.
Chris Stratton

SPI và Lập trình hệ thống / Lập trình nối tiếp là khác nhau. Tôi cũng đã quen với việc nhiều Atmega MCU nhỏ hơn có các chân lập trình nối tiếp trên giao diện SPI, nhưng tôi đã bị cắn bởi thực tế là trên một số MCU Atmega lớn hơn, các chân lập trình nối tiếp không có trên giao diện SPI.
lễ hội

30

Trong khi tôi rất thích đi sâu vào các phương pháp lập trình khác nhau có sẵn, một người khác đã có. Dưới đây là hướng dẫn của Dean Camera về AVRFreaks, Phương pháp lập trình AVR :

Có nhiều cách để lập trình vi điều khiển AVR. Vì nhiều người hỏi về những người khác nhau lúc này hay lúc khác, tôi nghĩ tôi nên phác thảo họ ở đây để câu hỏi của họ có thể được trả lời nhanh chóng và hiệu quả. Xin vui lòng tha thứ cho tôi nếu tôi bỏ lỡ một phương pháp hoặc gây ra lỗi.

PHƯƠNG PHÁP 1: Trong lập trình hệ thống (ISP)

Được hỗ trợ bởi: Phần lớn các AVR (xem bài viết bên dưới)
Các lập trình viên được hỗ trợ: AVRISP MKI / II, JTAG MKII, STK500, STK600, Dragon, bản sao AVRISP, Lập trình viên AVR910, AVRONE

Trong Lập trình hệ thống có lẽ là phương pháp phổ biến nhất để lập trình flash, EEPROM, cầu chì và lockbyte của toàn bộ dòng AVR. ISP có thể lập trình các AVR với tốc độ xung nhịp cực cao (giả sử rằng mục tiêu AVR đang chạy ở tần số cao và lập trình viên hỗ trợ nó) và là phương pháp được lựa chọn cho hầu hết tất cả những người có sở thích về AVR. Có rất nhiều, rất nhiều bản sao AVRISP và lập trình viên AVR910 trên thị trường ngoài các khóa tự làm đơn giản kết nối với cổng song song của máy tính của bạn.

Các thiết kế dongle mới gần đây có thể sử dụng cổng nối tiếp của máy tính, tuy nhiên bằng chứng giai thoại đã nói rằng phương pháp này cực kỳ chậm do những hạn chế kỹ thuật.

ISP yêu cầu rằng mục tiêu AVR đang chạy ở tốc độ xung nhịp ít nhất bốn lần so với đồng hồ ISP. Đây là một cạm bẫy phổ biến và là một nguồn gây nhầm lẫn cho nhiều người mới sử dụng AVR.

PHƯƠNG PHÁP 2: JTAG

Được hỗ trợ bởi: Xem phần trợ giúp của Công cụ AVRStudio để hỗ trợ thiết bị MKI và MKII
Các lập trình viên được hỗ trợ: JTAG-ICE, JTAG-ICE MKII, Dragon, JTAG-ICE, AVRone, STK600 (chỉ lập trình)

Về mặt kỹ thuật JTAG là một hệ thống gỡ lỗi, không phải là một phương pháp lập trình. Tuy nhiên, giao diện JTAG cho phép lập trình một AVR hỗ trợ nó.

JTAG là một công cụ gỡ lỗi trong hệ thống cho phép bạn thao tác và kiểm tra trạng thái của một AVR được hỗ trợ trong khi nó đang chạy trong một mạch. JTAG cho phép người dùng dừng thực thi bất cứ lúc nào, thao tác đăng ký nội bộ của AVR và nhiều hơn nữa.

Các đơn vị JTAG-ICE chính thức từ ATMEL đã được thay thế bởi JTAG-ICE MKII, hỗ trợ giao thức gỡ lỗi mới hơn và được hỗ trợ rộng rãi hơn trên giao thức gỡ lỗi DebugWire trong phạm vi AVR cũng như lập trình thông qua phương thức ISP (xem ở trên).

Bản sao JTAG-ICE có sẵn với giá thấp, tuy nhiên khả năng tương thích hạn chế của chúng chỉ với một số ít AVR giới hạn tính hữu dụng của chúng. Bất kể điều này, nếu AVR của bạn hỗ trợ giao diện JTAG, JTAG-ICE vẫn là một phương pháp và lập trình gỡ lỗi rất hay và hiệu quả.

PHƯƠNG PHÁP 3: Gỡ lỗi

Được hỗ trợ bởi: Nhiều
lập trình viên nhỏ hơn được hỗ trợ bởi các lập trình viên: JTAG-ICE MKII, Dragon, AVRONE

Một lần nữa, DebugWire là một gỡ lỗi thay vì giao diện lập trình, nhưng có thể được sử dụng để tải các chương trình vào các AVR được hỗ trợ. Giao diện dW sử dụng một chân AVR duy nhất (dòng / RESET) cho tất cả các giao tiếp, làm cho nó trở nên lý tưởng cho các thiết bị AVR có số lượng pin thấp.

PHƯƠNG PHÁP 4: Bộ tải khởi động

Được hỗ trợ bởi: Hầu hết các AVR mới hơn
Các lập trình viên được hỗ trợ: Không có

Một lần nữa về mặt kỹ thuật không phải là một phương pháp lập trình. Bộ tải khởi động là một chương trình AVR nhỏ nằm trong phần dành riêng cho người dùng có thể cài đặt của đèn flash thông thường. Bộ tải khởi động sử dụng các tính năng tự sửa đổi flash có sẵn trong các bộ AVR mới hơn để cho phép AVR tự lập trình thông qua dữ liệu chương trình được tải từ nguồn bên ngoài. Bộ tải khởi động có thể lấy dữ liệu của họ từ bất kỳ vị trí nào (ví dụ: thẻ dữ liệu ngoài hoặc thẻ SD), tuy nhiên cho đến nay, loại Bộ tải khởi động phổ biến nhất giao tiếp với PC thông qua cổng RS-232 (nối tiếp) của AVR.

Bộ tải khởi động bị hạn chế ở chỗ chúng tiêu thụ không gian flash (giới hạn kích thước của đèn flash có sẵn cho ứng dụng của AVR) và chúng không thể thay đổi các fusebits của AVR.

Bộ tải khởi động có sẵn rộng rãi trên internet để tải xuống, nhưng chúng gặp phải vấn đề "gà và trứng"; bạn cần một loại lập trình viên khác được liệt kê ở đây để lập trình trong bộ nạp khởi động ở vị trí đầu tiên. Điều này thường được giải quyết bằng cách xây dựng một dongle cổng song song đơn giản (Xem phần ISP) hoặc bằng cách mua một AVR đã được tải sẵn với bộ tải khởi động (ví dụ: bo mạch AVRButoston).

PHƯƠNG PHÁP 5: Lập trình song song điện áp cao (HVPP)

Được hỗ trợ bởi: Hầu hết các AVR không TINY (ngoại trừ)
Các lập trình viên được hỗ trợ: STK500, STK600, Dragon, Homebrew Dongles, AVRONE

Lập trình song song điện áp cao là một phương pháp lập trình hiếm khi được sử dụng, vì những rắc rối cần thiết để thiết lập. Mặc dù vậy, lập trình HVPP thường được sử dụng để "hồi sinh" các AVR có fusebits bị cấu hình sai thông qua một phương pháp lập trình khác.

Cả STK500 và Dragon đều hỗ trợ HVPP. Trong HVPP, chân / RESET của mục tiêu được nâng lên giá trị cao bất thường của 12V, tham gia vào mạch lập trình song song bên trong. Chân / RESET là chân duy nhất của AVR (trên các AVR được hỗ trợ HVPP) có thể được nâng lên một cách an toàn đến mức này.

Bạn có thể tạo khóa HVPP của riêng mình bằng các gói trực tuyến như gói này.

PHƯƠNG PHÁP 6: Lập trình nối tiếp điện áp cao (HVSP)

Được hỗ trợ bởi: Nhiều máy chủ TINY (có ngoại lệ)
Các lập trình viên được hỗ trợ: STK500, STK600, Dragon, Homebrew Dongles, AVRONE

HVSP tương tự như HVPP, ngoại trừ việc truyền dữ liệu được thực hiện một cách thanh thản hơn là song song. Đây là phương pháp lập trình thay thế được sử dụng trên nhiều máy phát điện dòng TINY thiếu chân cho HVPP.

PHƯƠNG PHÁP 7: PDI

Được hỗ trợ bởi: XMEGA AVRs
Các lập trình viên được hỗ trợ: STK600, AVRONE, JTAG MKII, Dragon, AVRISP MKII

PDI là giao diện lập trình mới dựa trên giao thức debugWire, dành cho dòng XMEGA của AVR. Hiện tại nó không được sử dụng trên bất kỳ bộ vi điều khiển AVR 8 bit nào khác.

PHƯƠNG PHÁP 8: TPI

Được hỗ trợ bởi: 6-pin TINY AVR (ATTINY10, v.v.)
Các lập trình viên được hỗ trợ: STK600, Dragon, AVRISP MKII

TPI là một giao diện lập trình rất nhỏ cho dòng AVRY mới hơn với các chân bị giới hạn, như ATTINY10 6 pin. Giống như dW, TPI sử dụng dòng / RESET của thiết bị như một phần của giao diện truyền thông, nhưng ở đó sự tương tự kết thúc. Do các TINY AVR có kích thước nhỏ không có mạch gỡ lỗi trên chip, giao thức TPI sử dụng giao diện lập trình mới gồm ba chân, trong giao thức bán song công. Vì dòng / RESET cần được nâng lên + 12V để lập trình khi chân RSTDSB của thiết bị được đặt, nên hiện tại chỉ được hỗ trợ bởi bảng lập trình STK600 mới hơn.

Phần Hỏi đáp Phần thưởng!

  1. Đó là phương pháp tốt nhất?
    Không có phương pháp "tốt nhất" phổ quát. Lập trình ISP rất đơn giản và cực kỳ phổ biến, tuy nhiên tất cả các phương pháp trên sẽ hoạt động. Hai chế độ lập trình điện áp cao (tùy theo áp dụng cho thiết bị của bạn) là những tính năng phong phú nhất, vì chúng cho phép sửa chữa một bộ điều khiển đã bị hỏng cấu hình. Tuy nhiên, những phương pháp đó là một nỗi đau để thiết lập, do đó lý do hầu hết người dùng đi với ISP.

  2. Tôi đã tạo ra một cổng song song. Tôi có thể sử dụng nó với AVRStudio không?
    Tôi không sợ. AVRStudio không thể giao tiếp với bất kỳ khóa "câm" nào - nó yêu cầu một thiết bị lập trình thông minh - chứa chính vi điều khiển - để giải mã giao thức truyền thông mà nó gửi. Các khóa đơn giản không có vi điều khiển phải là "bit-banged" (nghĩa là các tín hiệu thích hợp được mô phỏng qua khóa thông qua máy tính).

  3. Vậy dongle của tôi là vô dụng?
    Không. Bạn vẫn có thể lập trình thông qua một dongle làm tại nhà với công cụ phần mềm lập trình của bên thứ ba. AVRDude là một tiện ích dòng lệnh miễn phí tốt, được biết đến - và nó đi kèm với gói WinAVR.

  4. Lựa chọn của tôi là gì nếu tôi muốn lập trình viên của mình làm việc với AVRStudio?
    Chọn một lập trình viên sử dụng giao thức hỗ trợ AVRStudio. Đây có thể là giao thức "AVR910" đơn giản (không dùng nữa) hoặc triển khai tùy chỉnh giao thức được sử dụng bởi STK500 / AVRISP. Lưu ý rằng các lập trình viên này yêu cầu một bộ điều khiển vi mô trong đó, dẫn đến tình huống bắt-22. Điều này có thể được giải quyết bằng cách lập trình sẵn chương trình AVR của lập trình viên tại thời điểm mua với phần sụn phù hợp hoặc bằng cách lập trình sẵn chương trình AVR với bộ tải khởi động.

  5. Ok, tôi muốn sử dụng một bộ tải khởi động. Làm thế nào để tôi có được nó ở đó ngay từ đầu?!
    Để sử dụng bộ tải khởi động trong một bộ khởi động, trước tiên bạn phải lập trình bộ tải khởi động. Nếu bạn không có một lập trình viên hiện tại (ngay cả một khóa câm đơn giản cũng đủ để lập trình ban đầu), bạn có thể mua các chương trình thay thế được lập trình sẵn bằng một bootloader từ một số nhà cung cấp.
    Atmel cũng sản xuất bảng thử nghiệm Butterfly, có MEGA169 AVR được cài sẵn bộ tải khởi động tương thích AVR-Studio.

  6. Cứu giúp! Tôi đã nhầm lẫn với các cầu chì và làm hỏng máy AVR của tôi khi sử dụng ISP! Lỗi phổ biến nhất là thay đổi cầu chì lựa chọn đồng hồ thành một cài đặt không hợp lệ. Hãy thử đặt đồng hồ bên ngoài vào chân XTAL1 của AVR và xem điều đó có giúp ích không.
    Không, nếu có thể, hãy sử dụng một trong các phương pháp điện áp cao. Những cái này sẽ sửa bất kỳ cấu hình sai nào, bao gồm cả những cấu hình liên quan đến nguồn đồng hồ vì các phương thức điện áp cao cung cấp đồng hồ riêng cho AVR để lập trình.

  7. Làm thế nào để tôi giao tiếp với lập trình viên của tôi?
    Phần mềm nào bạn sử dụng để giao tiếp với lập trình viên của bạn phụ thuộc vào loại lập trình viên bạn đang sử dụng.
    Các dongle "câm" đơn giản yêu cầu phần mềm của bên thứ ba, chẳng hạn như PonyProg hoặc AVRDude. Đây có thể là dòng lệnh hoặc công cụ GUI - nhìn xung quanh trên web và bạn sẽ ổn một cái để phù hợp với nhu cầu của bạn.
    Các lập trình viên và bộ tải khởi động dựa trên giao thức AVR910 có thể được sử dụng trong AVRStudio. Từ menu Công cụ, chọn tùy chọn "AVRProg" để mở màn hình GUI để giao tiếp với lập trình viên của bạn. Thay vào đó, các công cụ của bên thứ ba như AVRDude cũng tương thích với AVR910.
    Các công cụ chính thức được tích hợp chặt chẽ vào AVRStudio, đặc biệt là trong trường hợp các biến thể gỡ lỗi (JTAG / Dragon / etc). Từ menu Công cụ AVRStudio, chọn menu con "Chương trình AVR ..." và nhấp vào mục "Kết nối". Từ cửa sổ mới, chọn công cụ của bạn và giao diện kết nối của nó và nhấp vào ok.
    Như trường hợp của các lập trình viên câm và lập trình viên AVR910, các công cụ chính thức cũng có thể được sử dụng với phần mềm lập trình của bên thứ ba.

(C) Dean Camera, 2009. Tất cả quyền được bảo lưu. Không được sao chép trên bất kỳ trang web nào khác ngoài AVRFreaks.net mà không có sự cho phép rõ ràng trước đó.

Tái sản xuất với sự cho phép rõ ràng trước, tất nhiên!


5

Tôi muốn thêm một điều nữa vào cuộc thảo luận.

SPI là một giao diện rất phổ biến cho chip. Việc ám chỉ 3 dây là chế độ SPI nơi bạn không sử dụng pin chọn của chip.

I2C là cuộc thi chính cho giao diện vì nó chỉ sử dụng 2 dây bất kể số lượng chip, trong khi SPI yêu cầu một dây khác trên mỗi giao diện, nhưng chậm hơn.

Khi giảng dạy tôi coi việc dạy về giao diện là một trong những nhiệm vụ quan trọng nhất.

Wiki cộng đồng có sẵn cho những người muốn mở rộng thông tin của tôi.


2
Tôi chưa bao giờ nghe nói về việc I2C được sử dụng như một giao diện lập trình flash gốc trên vi điều khiển, mặc dù không có lý do gì nó không thể là điểm khởi đầu cho bộ tải khởi động mà tôi cho là ...
Abbeyatcu

@vicatcu, tôi chỉ thêm nó như một giao diện rất phổ biến.
Kortuk

3

Từ quan điểm tổng thể, các giao diện này chỉ khác nhau ở chỗ lập trình viên và bộ điều khiển vi mô nào hỗ trợ chúng. Miễn là bạn có một trận đấu giữa lập trình viên và bộ điều khiển vi mô, tôi sẽ không lo lắng.

Khi bạn vào nó nhiều hơn, bạn sẽ thấy rằng đó là chân mà giao diện sử dụng trên bộ điều khiển vi mô quan trọng hơn - nếu bạn đang sử dụng các chân này cho cảm biến thì tín hiệu có thể gây nhiễu khi bạn đang lập trình thiết bị. Giải pháp đơn giản nhất nên là một vấn đề là ngắt kết nối các cảm biến trong quá trình lập trình.

Một số giao diện (bao gồm JTAG) cho phép gỡ lỗi thiết bị - nhưng sau đó bạn cần một lập trình viên (và phần mềm để điều khiển thiết bị) cũng hỗ trợ điều này. Trong một câu hỏi trước đây, tôi đã chỉ vào Dragon để gỡ lỗi các thiết bị AVR - tôi dự định lấy một cái và chơi khi vòng dự án hiện tại của tôi sắp hoàn thành.


2

Như bạn đề cập nối tiếp, spi (2 dây, 3 dây?), USB, jtag, swd, v.v ... đều được sử dụng.

Vâng, có những ưu và nhược điểm. Ví dụ, Jtag dành cho tất cả các trường hợp tôi biết về phần cứng, ban đầu và chủ yếu được sử dụng cho mục đích khác ngoài gỡ lỗi bộ xử lý, nhưng chúng cũng tình cờ sử dụng nó cho điều đó. Nếu jtag có sẵn, nó thường là giao diện tốt nhất cho lý do đó, nhưng vẫn có ngoại lệ. Ví dụ: nếu các chân không dành riêng cho jtag, bạn có thể gặp lỗi trong mã và / hoặc cố ý sử dụng một trong các chân đó cho một thứ khác khiến cho không thể truy cập chip bằng jtag (nếu nó khởi động phần mềm trong flash tái sử dụng các chân đó). Một ngoại lệ khác là nếu lõi xử lý có thể bị treo bởi lỗi trong phần mềm trong flash và lõi treo không thể gỡ lỗi thông qua jtag. Tôi sẽ gọi đó là một lỗi trong thiết kế phần cứng, nhưng gần đây đã xử lý vấn đề này trên một phần thương mại.

Trên AVR chẳng hạn như PDI, mà tôi nghĩ mọi người có thể gọi spi ở đây, có thể không. ít nhất nó xuất hiện trên xmega mà pdi và jtag bên ngoài cung cấp cho giao diện pdi chung trong nội bộ. Vì vậy, các chân pdi cung cấp cho bạn quyền truy cập trực tiếp vào điều này thay vì chi phí jtag. miễn là giao diện này hoạt động khi phần mềm trong flash đã treo lõi, thì đây sẽ là giao diện lý tưởng cho gia đình này. Giao thức được xuất bản và tương đối đơn giản, và được tích hợp vào phần cứng. nó có nhược điểm của bus dữ liệu hai chiều, như i2c.

Arm có một jtag với ít dây hơn gọi là swd mà họ không nhất thiết muốn công khai. các công cụ nguồn mở đang triển khai nó mặc dù. về lý thuyết, đây là một jtag nối tiếp, các tín hiệu jtag khác nhau được gửi tuần tự trên một dây bằng cách nào đó thay vì song song trên nhiều dây. bên trong phần tôi giả sử nó được song song hóa một lần nữa và cung cấp logic jtag bình thường. Điều này có nhược điểm là ARM muốn giữ bí mật và các trình gỡ lỗi jtag của ARM là nỗi đau của hoàng gia khi sử dụng. Vì vậy, đây là rất nhiều công việc. Nếu / khi openocd làm cho nó hoạt động thì đó có thể là một câu chuyện khác. Bạn cũng vẫn phải lo lắng về các chân được tái sử dụng và những gì xảy ra với lõi treo.

Một số nhà cung cấp sử dụng giải pháp trong đó họ có một hoặc nhiều khu vực đèn flash khởi động, tùy thuộc vào cách mà một hoặc hai hoặc ba pin được kéo tùy thuộc vào việc bạn khởi động từ đèn flash nào. Vì vậy, bạn có thể khởi động từ đèn flash của người dùng hoặc bạn có thể khởi động từ đèn flash mà ít nhất từ ​​nhà máy có bộ tải khởi động dựa trên cổng nối tiếp hoặc một bộ có bộ tải khởi động dựa trên usb. Đối với mỗi nhà cung cấp, các giải pháp phần mềm này có thể và thực hiện khác nhau, giao thức nối tiếp thay đổi theo cách tinh tế hoặc nhiều hơn là cách tinh tế, giải pháp usb có thể thay đổi khá nhiều. Điểm tốt và xấu là một số đèn flash bạn có thể nhận được, vì vậy bạn có thể chọn thay đổi bộ tải khởi động nối tiếp, điều này vừa tốt vừa xấu, tốt ở chỗ bạn có thể chọn tùy chỉnh nó cho sản phẩm của mình, xấu là có thể để vô tình xóa nó và gạch một phần, ít nhất là gạch nó cho giao diện đó.

Các công cụ Jtag được sử dụng để tiêu tốn hàng ngàn đô la, nhưng bây giờ thì không, với khoảng 15 đô la, bạn có thể nhận được một bảng đột phá ftdi và tái sử dụng nó với openocd. Với $ 50 cộng hoặc trừ một số, bạn có thể nhận được một giải pháp usb dựa trên ftdi hoạt động tốt với openocd. Bạn có thể nhận được một liên kết j phi thương mại với giá như $ 75- $ 80. Và sau đó là những người nhiều ngàn đô la nhanh, chắc chắn nhưng không đáng tiền nói chung. Bạn mua những thứ đó khi bạn là một tập đoàn lớn với rất nhiều tiền mặt để thổi và muốn trả tiền hỗ trợ. Khi bạn trả những mức giá đó, bạn sẽ có được sản phẩm bạn muốn và bạn nhận được câu trả lời cho các câu hỏi hỗ trợ công nghệ ngay lập tức. Giống như linux miễn phí so với windows hoặc RHEL chẳng hạn, hỗ trợ linux là miễn phí nhưng bạn có được những gì bạn nhận được. Dù sao điều này làm cho jtag hấp dẫn hơn nhiều,

Bạn nên có trong các công cụ jtag gỡ lỗi và phát triển arsenal khi nào và ở đâu giá cả phải chăng. sparkfun có usb dựa trên ftdi cho các bảng nối tiếp và các bộ phận ftdi có thể được chuyển đổi thành các tiếng nổ lớn, bạn có thể sử dụng chúng cho spi hoặc i2c hoặc pdi hoặc jtag hoặc các giao diện khác. Lý tưởng nhất là nhận các bảng được làm cho xe buýt / bộ phận mà bạn quan tâm và sử dụng phần mềm miễn phí / nguồn mở đi kèm với nó. Cũng sử dụng các bảng nối tiếp này, lý tưởng nhất là có nguồn cung cấp 3,3V và 5V (khoảng 15 đô la mỗi bảng bạn sử dụng cho lillypad và arduino minis, v.v.) để kết nối với các cổng nối tiếp cho các micrô khác nhau có một loại giao thức nối tiếp. Tôi thấy việc viết trình tải của riêng mình dễ dàng hơn dựa trên các giao thức đó, đặc biệt như các arduino / avr nơi nguồn khởi động được xuất bản và là một tập hợp con đáng kể từ tiêu chuẩn được cho là mà chúng hỗ trợ. YMMV.

Nói tóm lại, không có một giải pháp tốt, tất cả đều có ưu và nhược điểm. Hãy chuẩn bị để hỗ trợ ít nhất hai trong số họ. usb và nối tiếp hoặc usb và jtag hoặc jtag và nối tiếp, vv Chỉ cần đặt miếng đệm hoặc lỗ pin trên bảng và không nhất thiết phải cư trú. Đối với sự phát triển cá nhân hoặc phòng thí nghiệm của bạn, có một bộ công cụ đầy đủ và sẵn sàng chuyển đổi từ công cụ này sang công cụ khác khi bạn sử dụng chip chip và phải khôi phục các bảng hoặc khi bạn phát triển bộ tải khởi động, phần mềm usb, v.v.

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.