Отключить поддержку 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), чтобы сэкономить место на флэш-памяти.

, 👍0

Обсуждение

Я думаю, оптимизатор выбросит этот материал, когда вы им не воспользуетесь. Так что это уже должно было произойти., @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