Arduino là ISP mà không cần máy tính


12

Có ai đã thấy hoặc biết về một phương pháp tải trước (sử dụng máy tính hay bất cứ thứ gì) phần sụn như dữ liệu trên một arduino được thiết lập để hoạt động như một isp và sau đó sử dụng arduino đó cắm giao diện isp vào một phần mềm khác và tải lên phần sụn.

Để rõ ràng - tôi đang tìm cách để có thể tải lên các bản phác thảo arduino mà không cần kết nối trực tiếp với một máy tính đầy đủ.

Lý tưởng nhất là các bước liên quan sẽ là:

  1. Viết phác thảo / phần sụn mới
  2. Biên dịch firmware
  3. Viết chương trình cơ sở sao chép vào Arduino A dưới dạng dữ liệu (Arduino A được thiết lập để hoạt động như ISP)
  4. Tách Arduino A khỏi máy tính
  5. Ở một vị trí riêng biệt gắn Arduino A với Arduino B bằng cách sử dụng các tiêu đề ISP
  6. Sử dụng một số phương pháp (có thể là nút ấn) kích hoạt Arduino A để tải firmware đã tải sẵn lên Arduino B.

Tôi cho rằng về mặt lý thuyết nó có thể hoạt động vì tải lên firmware chỉ là một sự trao đổi byte trên giao diện SPI nhưng tôi không chắc về thực tế.

Kịch bản mà tôi đang cân nhắc là nếu tôi cài đặt một arduino (vĩnh viễn) ở một vị trí cách xa máy tính của tôi (tôi không có máy tính xách tay cũng không muốn lấy) thì việc lập trình lại sẽ rất rắc rối nó

Phương pháp khác mà tôi đã cân nhắc là sử dụng ATMEGA đóng gói DIL mà sau đó tôi có thể gỡ bỏ khỏi bo mạch và chương trình trên máy tính và quay lại bảng - tuy nhiên tôi không muốn mạo hiểm uốn cong chân và rắc rối khi phải tháo chip mỗi lần tôi muốn lập trình lại.


Kết quả là bạn sẽ chỉ có thể lập trình các Arduinos khác với bản phác thảo / phần sụn chính xác đã được tải vào lập trình viên (Arduino A). Vì vậy, nó chỉ hữu ích để tạo các bản sao như trong một dây chuyền sản xuất, phải không? Nếu bạn cần thay đổi bất cứ điều gì trên bản phác thảo, bạn sẽ cần quay lại máy tính để sửa đổi và tải lại. Tôi đã nhận được điều này phải không?
Ricardo

1
Không thể giữ "hình ảnh flash" được sao chép vào mục tiêu trên một hỗ trợ khác (như thẻ SD)?
jfpoilpret

Vâng Tôi cho rằng nó cũng sẽ tốt cho một dây chuyền sản xuất. Tình huống của tôi là tôi có một arduino được dán vào một vỏ bọc rất khó di chuyển và nó ở trong một phòng khác với máy tính của tôi (cũng khó di chuyển). Vì vậy, tôi sẽ rất vui khi tải bản phác thảo lên Arduino A mỗi lần tôi muốn thay đổi nó.
m3z

2
Nó được thực hiện cho mục đích giới hạn là lập trình bộ tải khởi động - github.com/WestfW/OptiLoader - nhưng nên hoạt động cho mọi tải trọng nhỏ hơn flash có sẵn trừ đi kích thước của công cụ. Đối với phần mềm tải trọng lớn hơn, một thiết bị lưu trữ ngoài (hoặc đơn giản là Arduino Mega?) Sẽ hoạt động.
Chris Stratton

@ChrisStratton có vẻ hoàn hảo để tôi thích nghi. Cảm ơn
m3z

Câu trả lời:


5

Tôi nghĩ rằngPPProg - lập trình viên di động nhỏ, nhanh, di động với SD thực hiện những gì bạn muốn. Bạn có thể lưu trữ nhiều tệp trong thẻ SD (hex, eep, v.v.) và chọn từ menu thiết bị để ghi vào MCU đích mà không cần PC.
Phần tốt nhất là nó có sẵn miễn phí (PCB, sơ đồ, phần sụn, v.v.).

Một trong những loại lập trình AVR di động! Giúp bất cứ nơi nào bạn cần cập nhật chương trình cơ sở của thiết bị, nơi thiết bị mục tiêu ở vị trí khó tiếp cận và bạn không thể (hoặc không muốn) mang theo máy tính xách tay của mình với một bó dây. Rất dễ sử dụng, siêu rẻ để làm, siêu nhỏ, siêu nhanh, sử dụng thẻ SD

Đặc trưng:

  • siêu nhỏ - kích thước 44 x 39 x 5,5 mm
  • siêu nhanh - viết tới 12,5kB / s, đọc tối đa 14,5kB / s
  • sử dụng phương tiện lưu trữ giá rẻ - thẻ SD MICRO nhỏ
  • hỗ trợ hệ thống tập tin FAT16 và FAT32
  • có thể đọc, viết, xác minh flash và bộ nhớ eeprom
  • có thể đọc, viết, xác minh fusebits và lockbits
  • ghi và đọc vào các tệp BIN, HEX và TXT
  • có thể thiết lập giá trị mặc định của fusebits, xóa ký ức
  • giá rẻ, dễ kiếm, màn hình đồ họa LPH7779
  • hiển thị hình ảnh động vui nhộn sau mỗi hoạt động
  • tiêu đề lập trình chuẩn - ISP 6-PIN Atmel
  • có chức năng tự động cập nhật chương trình cơ sở của riêng mình (từ SD)
  • Rất đơn giản để sử dụng, 4 nút điều hướng
  • menu cài đặt người dùng
  • tự động chọn tốc độ lập trình (lên đến 4 MHz)
  • Hoạt động ở mức 3V, chip chương trình được cung cấp từ 3V đến 5V

Danh sách chip được hỗ trợ

nhập mô tả hình ảnh ở đây


Có vẻ tốt. Sẽ điều tra vào cuối tuần.
m3z

Tôi không biết làm thế nào tôi bỏ lỡ câu hỏi này vào ngày khác. Tôi chỉ nói chuyện với một người bạn về việc tự tạo dự án chính xác này. Và sau đó tôi thấy câu trả lời của bạn.
Madivad

4

Tôi không có giải pháp trực tiếp cho những gì bạn muốn, nhưng vâng, có thể làm điều đó. Bạn có thể hack phần mềm khởi động để nó đọc mã flash phần sụn và tải nó qua ISP.

Mặc dù bạn rõ ràng không thể tải lên 32k phần sụn trên AVR mục tiêu nếu cả hai arduinos chỉ có 32k tổng flash trong MCU của chúng, bạn sẽ cần flasher có nhiều flash hơn mục tiêu nếu bạn muốn làm như vậy (1284p hoặc 2560 Mega sẽ đủ xa, hoặc một chiếc 328 / 32u4 sẽ được chế tạo để flash 168 hoặc attiny). Ngoại lệ duy nhất là có phần sụn được flash nhỏ hơn tổng bộ nhớ (như đối với bản phác thảo nhấp nháy).

Cuối cùng, điều đó sẽ không dễ dàng, đó là mã AVR thuần túy 100%, nhưng bạn có thể làm được. Có một cái nhìn tại:

Cách tôi thực hiện sẽ làm cho mọi thứ vừa vặn trong bộ tải khởi động của thiết bị flasher, để nó đọc phần sụn (mọi thứ từ 0x00 đến địa chỉ bắt đầu bộ tải khởi động) và flash nó qua ISP bằng cách hợp nhất AVRISP với Optiboot.

Dù sao, đó là một dự án thú vị cho một hội thảo về bộ tải khởi động và AVR tôi có thể đề xuất tại không gian tin tặc địa phương của tôi! ;-)

HTH


Cảm ơn, mã nguồn AVRISP không phức tạp như tôi mong đợi. Tôi sẽ xem xét sâu hơn một chút về điều này vào cuối tuần
m3z

Không gian tin tặc địa phương của bạn ở đâu? :)
Madivad

nó ở Pháp Le Loop
zmo

không có vấn đề gì, đó là những gì bỏ phiếu là dành cho ;-)
zmo
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.