Отключить поддержку USB для mega32u4
У меня есть пользовательская плата Leonardo (на базе mega32u4), которая не использует все функции USB. Когда я создаю свой скетч (vscode и platformio), я читаю:
Compiling .pio/build/leonardo/FrameworkArduino/CDC.cpp.o
Indexing .pio/build/leonardo/libFrameworkArduinoVariant.a
Compiling .pio/build/leonardo/FrameworkArduino/HardwareSerial.cpp.o
Archiving .pio/build/leonardo/lib02e/libFadeLed.a
Compiling .pio/build/leonardo/FrameworkArduino/HardwareSerial0.cpp.o
Indexing .pio/build/leonardo/lib02e/libFadeLed.a
Compiling .pio/build/leonardo/FrameworkArduino/HardwareSerial1.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/HardwareSerial2.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/HardwareSerial3.cpp.o
Archiving .pio/build/leonardo/libfa3/libWire.a
Indexing .pio/build/leonardo/libfa3/libWire.a
Compiling .pio/build/leonardo/FrameworkArduino/IPAddress.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/PluggableUSB.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/Print.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/USBCore.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/WInterrupts.c.o
Compiling .pio/build/leonardo/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/WString.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/abi.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/hooks.c.o
Compiling .pio/build/leonardo/FrameworkArduino/main.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/new.cpp.o
Compiling .pio/build/leonardo/FrameworkArduino/wiring.c.o
Compiling .pio/build/leonardo/FrameworkArduino/wiring_analog.c.o
Compiling .pio/build/leonardo/FrameworkArduino/wiring_digital.c.o
Compiling .pio/build/leonardo/FrameworkArduino/wiring_pulse.S.o
Compiling .pio/build/leonardo/FrameworkArduino/wiring_pulse.c.o
Compiling .pio/build/leonardo/FrameworkArduino/wiring_shift.c.o
Интересно, могу ли я отключить поддержку USB (CDC, PluggableUSB, USBCore), а также сетевые данные (IPAddress), чтобы сэкономить место на флэш-памяти.
@Mark, 👍0
Обсуждение0
Смотрите также:
- Keyboard.print() пропускает клавиши
- Atmega32u4: снижение энергопотребления при сохранении активности USB
- Можно ли загрузить скетч Arduino через последовательный порт (RX) вместо USB?
- Arduino перестал работать: avrdude: ser_open(): не удается установить com-состояние
- Может ли Arduino Leonardo одновременно использовать USB-порт и последовательные контакты RX TX?
- Mac не обнаруживает последовательный порт для Леонардо
- Сквозной порт для USB-мыши
- Может ли библиотека мыши прокручиваться по горизонтали?
Я думаю, оптимизатор выбросит этот материал, когда вы им не воспользуетесь. Так что это уже должно было произойти., @chrisl
USBCore создает com-порт для загрузки и обрабатывает "касание" 1200 бод для сброса в загрузчик перед загрузкой., @Juraj
@Juraj, да, но, как я уже сказал, у меня нет ни загрузчика, ни какого-либо USB com-порта, @Mark
@Juraj готово. Я не могу найти ни одной записи об "IPAddress", но все USB-файлы там есть, @Mark
main.cpp имеет
UsbDevice.attach();
, @Juraj@Juraj извини, я тебя не понимаю. Который `main.cpp ? В любом случае, можно ли сэкономить место на флэш-памяти, отключив USB-порт?, @Mark
https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/main.cpp, @Juraj
Я сомневаюсь, что оптимизатор определит, что он может устранить USB ISR и их зависимости. В то время как ядро условно компилирует части USB на основе наличия определений регистров периферийных устройств USB, у вас остается множество вариантов, которые не очень хороши. Например, изменить ядро, чтобы не включать все эти функции, или расширить выражение чем-то вроде
&& !defined(NO_ARDUINO_USB_STACK)
. Или подделать ядро, (не/не)определив периферийное устройство USB с помощью модифицированной avrlibc, опять же, возможно, условно. И, возможно, изменение board.txt для передачи флагов функций для этой цели., @timemage