Tôi có thể tìm ra cách tạo một tệp hex cho phần mềm arduino ở đâu?


7

Tôi đã làm theo hướng dẫn này về việc flash Arduino R3 của tôi để biến nó thành "bàn phím USB", nhưng bài viết không giải thích cách thức hoạt động của hex, nó chỉ là điều hiển nhiên. Tôi có thể tìm hiểu về cách tạo tệp hex của riêng mình để tôi có thể tìm hiểu cách làm cho Arduino của mình bắt chước bất kỳ thiết bị USB nào?


Chào mừng bạn đến với Arduino SE! Bạn thực sự mơ hồ ở đây. Thiết bị USB là một chủ đề thực sự phức tạp và rất có thể, bạn sẽ không thể tạo các tệp của riêng mình cho USB mà không cần một chút kỹ năng. Bạn có thể tìm thấy các tệp HEX cho chip USB để bắt chước các thiết bị khác được biên dịch trước.
Chim cánh cụt ẩn danh

@AnnonomusPenguin Xin chào! Tôi không nghĩ có bất kỳ hex nào để bắt chước thiết bị DataLocker hoặc IronKey chưa, vì vậy tôi muốn thử và làm điều đó. xD Có lời khuyên nào về việc bắt đầu từ đâu?
trusktr

Tôi thực sự không có ý tưởng nào: Tôi muốn nói có thể xem một số tệp hex nguồn mở kết hợp lưu trữ dung lượng lớn USB (Tôi đã thấy một vài dự án nguồn mở với ít nhất ba mươi loại thiết bị USB cho Arduino) và sửa đổi nó để nó không hiển thị các tập tin cho đến khi có một tập tin văn bản với mật khẩu trên thư mục gốc của thiết bị. IRC sẽ là một tuyến đường tốt để nhận trợ giúp về vấn đề này. Vì vậy, bạn không làm mọi người phát điên, hãy cố gắng học cách làm, không chỉ sao chép và dán. Ngoài ra, nếu bạn làm như vậy, hãy đảm bảo chia sẻ mã của bạn với người khác.
Chim cánh cụt ẩn danh

Chính hướng dẫn mà bạn đang theo có chứa các liên kết đến kho lưu trữ tar được mã hóa của mã nguồn và makefile được sử dụng để tạo tệp hex bàn phím của Darran mà bạn đã tải: hunt.net.nz/users/darran/weblog/b3029/attachments/bd341/
Chris Stratton

Câu trả lời:


2

Tệp HEX chỉ đơn giản là một phiên bản dịch của tệp thực thi AVR, lần lượt là phiên bản dịch của mã nguồn AVR.

Có rất nhiều công cụ có sẵn để biến (biên dịch) mã nguồn AVR thành một tệp thực thi AVR, bao gồm nhưng không giới hạn ở Arduino IDE , Ino , AVR-GCC và Atmel Studio . Lưu ý rằng tất cả bốn công cụ sẽ biên dịch mã theo cùng một cách, vì AVR-GCC được sử dụng dưới mui xe bởi ba công cụ kia.

avr-g++ -mmcu=atmega328 source.cc -o executable

Khi bạn đã biên dịch mã, bạn có thể sử dụng avr-objcopy để trích xuất các phần thích hợp từ tệp thực thi thành tệp HEX để lập trình vào flash và EEPROM.

avr-objcopy -j .text -j .data -O ihex executable executable.hex

Sau đó, bạn có thể sử dụng AVRDUDE để tải các tệp HEX khác nhau lên thiết bị đích.

avrdude -c arduino -P /dev/ttyUSB0 -b 19200 -p m328 -U flash:w:executable.hex:i

Lưu ý rằng các thư viện USB trong Arduino / Ino và AVR LibC bị hạn chế; bạn sẽ cần sử dụng Atmel Studio nếu bạn muốn có đầy đủ khả năng USB.


2

Có rất nhiều trang web trên đó có tài liệu làm thế nào để xây dựng / xây dựng như vậy.

Example: http://hunt.net.nz/users/darran/ 
or https://github.com/harlequin-tech/arduino-usb
GOOGLE: build usb keyboard 16u2

Xin lưu ý rằng khi thử điều này trên Uno R3, DFU đang cập nhật mã trên 16U2 chứ không phải là 328p.

Tôi sẽ đề nghị cho người mới sử dụng Leonardo. Trường hợp có các ví dụ chứng khoán trong IDE để sử dụng ứng dụng trực tiếp dưới dạng USB HID. Tránh mọi thay đổi đối với bộ tải khởi động hoặc chip đồng xử lý USB sang Nối tiếp (16u2). Làm cho nó đơn giản hơn nhiều.


1

Có thể, nhưng nó khá khó (đặc biệt là nếu bạn muốn sửa đổi cả 8u2 VÀ 16u2. Tôi muốn giới thiệu Teensy ( https://www.pjrc.com/teensy/index.html ) Gần đây tôi đã đăng câu hỏi về một câu hỏi tương tự như câu hỏi của bạn và sau khi nghe về tất cả những cạm bẫy tôi đã quyết định đi với Teensy. Tôi có hỗ trợ USB / HID phong phú hơn nhiều (Bạn có thể bắt đầu dự án của mình ngay lập tức thay vì cố gắng sửa đổi UNO). Thanh thiếu niên cũng tương đối rẻ, từ $ 18 đến $ 24.

Để so sánh, UNO là $ 27,18 và hết hàng. Để công bằng cả hai có lẽ được sử dụng rẻ hơn. Đây có lẽ là moot vì có vẻ như bạn đã có một cái. Để biết thêm thông tin, hãy xem câu hỏi của tôi ( Tính khả thi của việc flash Arduino UNO r3 với phần mềm thiếu niên cho mục đích mô phỏng HID (bàn phím) )


1

Bạn không cần phải làm điều gì đó kỳ diệu. Đây là cách bạn có thể sử dụng các chi nhánh của Arduino IDE.

Khi bạn biên dịch hoặc tải lên bản phác thảo, tệp .hex sẽ tự động được tạo và lưu trữ trong ổ đĩa máy tính của bạn đã cài đặt HĐH (Tôi đã tìm thấy tệp này trên Windows). Bạn có thể truy cập nó bằng cách điều hướng đến thư mục chứa các tệp tạm thời.

Thông thường, đường dẫn sẽ giống như thế này: C:> Người dùng> Quản trị viên> AppData> Địa phương> Temp

Bây giờ bạn sẽ thấy (rất nhiều) thư mục có tên như "xây dựng" ... theo sau là một số lượng lớn. Một trong những thư mục này chứa các tệp do trình biên dịch tạo mã bạn đang tìm kiếm. Từ vị trí này, bạn có thể tìm kiếm (ví dụ: sử dụng Windows Explorer) và xác định tệp .hex bạn đang tìm kiếm theo ngày và thời gian sửa đổi cuối cùng.

Khi bạn đã có tệp .hex của mình , bạn có thể tải nó lên Arduino của mình bằng Atmel FLIP sau khi đặt vi điều khiển của Arduino của bạn sang chế độ Nâng cấp phần sụn thiết bị (DFU). Atmel FLIP, một từ viết tắt của Lập trình viên trong hệ thống FLexible, có thể được sử dụng rất dễ dàng, nhờ vào giao diện người dùng tối thiểu của nó.

Đây là cách sử dụng FLIP:

  1. Chuyển đến Tệp> Tải tệp HEX ... và chọn tệp.
  2. Chọn vi điều khiển của bạn bằng cách chọn biểu tượng đầu tiên trên thanh.
  3. Chọn giao diện lập trình của bạn từ danh sách nhỏ.

Tôi đã sử dụng cái này với ATXmega hỗ trợ USB nhưng nó không giống nhau cho tất cả.


Dựa trên câu trả lời của bạn, bạn đang tạo các tệp hex chỉ thông qua việc sử dụng Arduino IDE, phải không? Bạn có thể sử dụng Arduino IDE để, ví dụ, viết mã USB Human Interface Device (HID) không?
trusktr

Điều đó đúng, không có gì khác ngoài IDE là bắt buộc. Giả sử HID của bạn tương thích với Arduino IDE, bạn có thể. Nếu nó yêu cầu một tiện ích bổ sung (ví dụ như Crumbuino hoặc Teensy chẳng hạn), nó vẫn sẽ làm điều tương tự. Đó là bởi vì nó tải lên tệp .hex theo cùng một cách. Điều duy nhất mà add-on thực hiện là xác định các tính năng tùy chỉnh. Bạn chỉ cần tìm tệp .hex trong số các tệp tạm thời. Nếu HID không tương thích, bạn có thể thử viết mã trên Atmel Studio (chỉ dành cho AVR và ARM) với trình biên dịch thích hợp có thể xây dựng tệp .hex.
LIGHThouse
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.