Где хранятся программные определения для разных процессоров?
Мне нужно изменить существующую библиотеку, которая полагается на возможность определить, на какой плате / процессоре выполняется код. Для этого он использует такие определения, как для Arduino Mega:
// Arduino Mega
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
Мне нужно обновить библиотеку еще для 2 плат, а именно для Raspberry pi pico (mbed os) и Robotis OpenCR.
Кажется, я не могу найти, где на самом деле определено имя процессора. Если бы кто-то мог указать мне правильное направление, это было бы здорово. Спасибо.
Редактировать: Если кто - нибудь знает, что такое equivelent define для raspbery pi pico-rp2040, это было бы фантастически!
@Ben Bird, 👍0
Обсуждение1 ответ
Они определяются самим компилятором и основаны на имени микроконтроллера, передаваемом компилятору как (для AVR GCC) -mcpu=<имя mcu>
.
Вы можете перечислить определения для версии GCC, используя (например, для AVR gcc):
avr-gcc -mmcu=atmega328p -dM -E - < /dev/null
Не уверен, что вы будете использовать в Windows для /dev/null
. Разные целевые компиляторы используют разные флаги для определения MCU, и вам, конечно, нужно знать, какой MCU плата использует для передачи компилятору.
Вам нужно будет выяснить, какие соответствующие флаги передаются компилятору для ваших желаемых чипов, и вы можете найти их, посмотрев в platform.txt файл для ядра, связанного с платой.
Меня больше всего интересует pico, который будет RP2040 или какой-то вариант этого названия. Я не уверен, что он использует компилятор GCC, хотя может и ошибаться., @Ben Bird
Почти все, что не является Microsoft, использует компилятор GCC..., @Majenko
- Wire.h не найден!
- Может ли плагин Arduino Eclipse использовать библиотеки, установленные Arduino IDE?
- Tone() конфликтует с библиотекой IRremote (множественное определение `__vector_7')
- Где параметры avrdude определяются в Arduino IDE?
- Как настроить расположение предпочтений
- Несколько void loop() с ESP8266
- Серый порт для Raspberry pico в Arduino IDE - Ubuntu 20.04
- Как заставить Arduino IDE использовать определенную версию GCC в Debian?
в Arduino вы можете использовать макрос ARDUINO_{build.board}, где build.board определен в boards.txt например, как uno.build.board=AVR_UNO. тогда #idef будет "#ifdef ARDUINO_AVR_UNO"., @Juraj
чем больше вы можете избежать обнаружения платы, тем больше мест будет запущено вашей программой или просто потребуется небольшая модификация вместо того, чтобы смущать разработчика., @dandavis