Tại sao chúng ta cần lập trình viên phần cứng?


22

Tôi sử dụng một Boarduino và một bảng bánh mì 30 hàng để lập trình ATtiny của tôi. Tôi tải một bản phác thảo không quá phức tạp có tên ArduinoISP (được bao gồm theo mặc định bây giờ trong Arduino IDE) và đột nhiên tôi có một lập trình viên đang làm việc. Atmel bán một lập trình viên xinh đẹp với giá từ 30 đến 40 đô la, và có rất nhiều bộ dụng cụ để làm những cái rẻ hơn.

Tôi đã rất hạnh phúc khi tôi có được lập trình viên làm việc của mình và làm cho một vài cái nháy mắt nhỏ xíu. Tuy nhiên, bây giờ boarduino tội nghiệp của tôi bị mắc kẹt trong nhiệm vụ lập trình viên.

Theo như tôi có thể nói với lập trình viên này giữ nút đặt lại, sau đó truyền và nhận trên các chân MOSI và MISO. Tôi nghĩ rằng SCK không được sử dụng hoặc ít nhất là không cần thiết. (SCK là cần thiết theo bảng dữ liệu ATtiny, lập trình viên của tôi không hoạt động mà không có nó và tôi không thể tìm thấy nơi tôi nghĩ rằng tôi đọc nó là không cần thiết.)

Tại sao tôi cần một lập trình viên phần cứng để truyền nối tiếp? Ý tôi là, giả sử tôi sẵn sàng giữ nút đặt lại bằng ngón tay thay vì sử dụng IC. Tất cả những gì còn lại là gửi và nhận nối tiếp, vì vậy tất cả những gì tôi cần là ba dây GND, RXD và TXD. Heck, nếu tôi có dòng "DTR" hoặc bất cứ điều gì, bạn thậm chí có thể giữ nút đặt lại bằng cáp nối tiếp.

Tại sao có tất cả các giải pháp phần cứng này cũng yêu cầu phần mềm ưa thích (như AVRdude, hoặc phòng thu AVR, hoặc bất cứ điều gì)?

Ý tôi là tôi có thể hiểu một cáp USB nhỏ đã trình bày vi điều khiển như một thiết bị lưu trữ dung lượng lớn và cho phép bạn kéo các tệp nhị phân qua để lập trình (như bảng dev của ARM này ). Chỉ phần cứng, sử dụng trình điều khiển phần mềm tiêu chuẩn.

Tôi cũng có thể hiểu một giải pháp chỉ dành cho phần mềm (modulo móc dây từ USB vào chip, sử dụng một cái gì đó như chip FTDI để đơn giản hóa những gì đi xuống dây). Tất cả các giao thức lập trình ưa thích sẽ được xử lý bằng phần mềm trên máy tính và phần cứng sẽ chỉ là một số dây.

Tại sao chúng ta có cả phần mềm và phần cứng (phức tạp) liên quan? Ý tôi là, theo như tôi có thể nói, lập trình vi điều khiển khá dễ dàng, nhưng khi tôi mới bắt đầu, tôi thực sự lo lắng về việc tôi sẽ mua chip từ mouser hoặc digikey như thế nào mà không trả tiền cho một bậc thầy để lập trình bộ tải khởi động cho tôi.

Tôi chắc chắn có một lý do chính đáng (không giống như tôi đã viết phần mềm hoặc bắt đầu sản xuất bộ lập trình USB kéo-thả), nhưng là một người mới, tôi không biết nó là gì.


Có lập trình phần cứng nhà sản xuất của bạn cho phép gỡ lỗi? Bạn có thể lập trình tốt một mình, nhưng sẽ cần một lập trình viên phần cứng nếu bạn muốn thực hiện gỡ lỗi trên chip (đặt điểm dừng trong mã và tạm dừng thực thi khi bạn đạt đến điểm đó) vì thao tác đó có thể làm những điều buồn cười với dòng đặt lại.
Joel B

1
Một cái gì đó mà bạn có thể thích thú bởi, hackaday.com/2013/05/10/ mài
binarysmacker

Câu trả lời:


18

Bạn nói đúng, lập trình AVR khá dễ. Nó chỉ là một giao thức tùy chỉnh được triển khai trên SPI, chạy ở điện áp thấp. SCK là cần thiết.

Tuy nhiên, lập trình PIC cũ hơn (và lập trình không phải ISP ISP) đòi hỏi điện áp cao và một giao thức tùy chỉnh khác. Điều này đòi hỏi một lập trình viên phần cứng đặc biệt.

Các thiết bị khác phức tạp hơn. Hầu hết các bộ vi điều khiển ARM phải được lập trình thông qua JTAG, ở đây bộ nhớ được ghi trực tiếp và bộ xử lý được hướng dẫn ghi vào flash. Một lần nữa, mỗi thiết bị là khác nhau.


Bất cứ ý tưởng tại sao những điều đó là phức tạp hơn nhiều? Cách thức của AVR (điện áp thấp, giao thức chuẩn) có vẻ hợp lý hơn nhiều so với yêu cầu một lập trình viên tùy chỉnh (như anh chàng này với một lập trình viên 8051/8052 cần - giúp đỡ, đại diện có sẵn! Electronics.stackexchange.com/questions/4104 )
Kevin Vermeer

2
Thực sự không có gì đặc biệt hoặc đắt tiền về các lập trình viên PIC; nhiều thiết kế có sẵn trực tuyến và hầu hết các PIC mới có thể được lập trình điện áp thấp.
akohlsmith

4
Các nhà sản xuất vi mạch không thực sự quan tâm đến mức độ phức tạp của những người có sở thích sử dụng. Miễn là nó có thể được sử dụng trong sản xuất số lượng lớn, nếu không thì tất cả chỉ là về chi phí.
endolith

2
Lập trình điện áp cao đã có trước tiên, đó là cách để lập trình EPROM có thể xóa UV trong những năm tám mươi (và các bộ vi điều khiển có chứa các EPROM đó).
starblue

Đã sửa lỗi yêu cầu SCK. Tôi thích ý tưởng rằng chỉ cần SPI, nhưng vì máy tính không có cổng SPI (và cho rằng cáp FTDI đã có chip 4 đô la trong đó !!) chúng tôi cũng có thể sử dụng bộ vi điều khiển $ 2. Đối số tải lên và gỡ lỗi JTAG đã bán cho tôi những lợi ích của một ban phát triển nói chung và tôi nghĩ rằng endolith có một điểm tốt là không ai quan tâm đến những gì tôi chi 20 đô la của mình; các nhà sản xuất quan tâm những gì các kỹ sư thực sự (và chủ nhân của họ) sẽ dành ngân sách của họ vào.
Jack Schmidt

5

Tôi đã thực hiện rất nhiều nghiên cứu và đang chuẩn bị bắt đầu chơi với các máy AVR, nhưng tôi chưa bao giờ thực sự sử dụng nó, vì vậy điều này có thể sai, nhưng:

Hầu hết các lập trình viên giá rẻ sẽ không hỗ trợ lập trình điện áp cao AVR. Nó là cần thiết nếu bộ điều khiển được đặt thành không thể lập trình bằng cách sử dụng các bit cầu chì hoặc nếu bạn bằng cách nào đó đã thực hiện một số lỗi nghiêm trọng và cần đặt lại nó để mặc định, v.v.


2
Các lập trình viên điện áp thấp như AVRISP mkII [1] hoặc USBtinyISP [2] có thể được sử dụng để đặt cầu chì với avrdude hoặc các lập trình viên khác, nhưng họ không thể lưu một chip AVR không thể khởi động được hoặc biến dòng đặt lại của nó thành không thể khởi động được GPIO. Bạn cần một lập trình viên điện áp cao cho loại điều đó. [1] mouser.com/search/ Từ [2] ladyada.net/make/usbtinyisp
blalor

@blalor Trước thông tin này, tôi sẽ chỉnh sửa câu trả lời của mình.
AndrejaKo

Tôi đã thấy một số hướng dẫn về việc tạo một lập trình viên điện áp cao (và bảng dữ liệu cho chip dường như có các hướng dẫn khá chi tiết về thiết kế một), nhưng tôi đang đợi cho đến khi tôi gạch một trong các chip của mình cho đến khi tôi thử nó. Bộ dao động của tôi đến đây vào ngày mai, vì vậy tôi sẽ đốt cháy cầu chì và cám dỗ nàng tiên gạch sớm thôi!
Jack Schmidt

Đáng chú ý là việc kiểm tra kỹ các bit cầu chì của bạn để ngăn chặn sự cố này. Một vấn đề phổ biến hơn một chút là đặt chip vào đồng hồ bên ngoài.
Yann Vernier

4

Hầu hết các lập trình viên giá rẻ AVR chỉ là đồng bộ giao diện nối tiếp với một dòng thiết lập lại. Bạn có thể cung cấp FT232 để bitbang ra Giao diện ngoại vi nối tiếp (SPI). FT232 được thiết kế cho nối tiếp async không đồng bộ hóa nên tất cả được thực hiện trong phần mềm.

Bạn chỉ có thể tải lên một bộ tải khởi động như arduino cho phép bạn tải lên mã thông qua giao diện nối tiếp async bằng cách sử dụng ft 232 ở chế độ bình thường hoặc bất kỳ giao diện nối tiếp async nào bằng bộ chuyển đổi mức khi cần. Chỉ cần đừng quên sử dụng bộ tải khởi động phù hợp với tốc độ đồng hồ của bạn và để đặt các byte cầu chì chính xác.


1

Nhiều thiết bị lập trình được lịch sử yêu cầu rằng chúng phải được lập trình bằng cách sử dụng các chuỗi tín hiệu được định thời gian tương đối chính xác. Trong nhiều trường hợp, nếu chỉ muốn lập trình một loại thiết bị cụ thể, phần cứng cần thiết sẽ khá đơn giản, nhưng vì các thiết bị khác nhau có các yêu cầu khác nhau, việc xây dựng một lập trình viên đa năng có phần khó khăn hơn.

Ngày nay, người ta có thể lập trình hơn 50% thiết bị lập trình bằng cách sử dụng không gì khác ngoài cáp USB I / O và phần mềm PC, nhưng các lập trình viên "phần cứng" vẫn có lợi thế về tốc độ đáng kể. Để PC phản ứng với tín hiệu mà thiết bị USB nhận được và gửi phản hồi thường mất tối thiểu 1-2 mili giây. Nếu trình tự lập trình yêu cầu liên tục yêu cầu một thiết bị khi nó sẵn sàng cho đoạn dữ liệu tiếp theo và sau đó gửi nó, sử dụng cáp I / O đơn giản sẽ thêm một hoặc hai mili giây vào thời gian cần thiết để xử lý mỗi khối. Tùy thuộc vào bản chất của thiết bị được đề cập, điều đó có thể tăng thời gian tổng thể cần thiết cho lập trình theo một mức độ lớn so với lập trình viên có thể được nói, trong khi chờ thiết bị sẵn sàng, nên làm gì khi thiết bị đã sẵn sàng.

Cá nhân, tôi thích cách tiếp cận của việc có các thiết bị được trang bị flash xuất xưởng từ nhà máy với bộ tải khởi động trong bộ nhớ có thể được sử dụng với tối thiểu phần cứng lập trình. Nếu thiết bị hỗ trợ lập trình flash dưới sự kiểm soát của phần mềm, cách tiếp cận như vậy có thể đơn giản hóa việc sản xuất mà không cần thêm bất kỳ chi phí nào vào silicon ngoài thời gian cận biên rất nhỏ cần thiết để có chương trình thử nghiệm xuất xưởng trong bộ tải khởi động sau khi nó đã làm mọi thứ khác .

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.