Board definition relying on existing core

Hi! I'm trying to make a custom board definition - it is my first time and so today has been massive trial and error, but with some progress!

I can now specify and have the IDE read the json file, and it recognises the board.txt file. The board.txt file points toward

cadalogger.build.core=MCUdude:MegaCoreX

which if I understand right from here

https://arduino.github.io/arduino-cli/0.32/platform-specification/

(most of the way down, under the header " Referencing another core, variant or tool") should allow me to reference MegaCoreX in general, but otherwise limit options that show up in the 'tools' menu as appropriate to my board.

However, on trying to compile a sketch, I get the error:

Using core 'coreX-corefiles' from platform in folder: /Users/mbm5/Library/Arduino15/packages/cadalogger/hardware/avr/0.1.0
Warning: Board cadalogger:avr:4808 doesn't define a 'build.board' preference. Auto-set to: AVR_4808
Detecting libraries used...recipe.preproc.macros pattern is missing


Error compiling for board cadalogger.

It seems I'm not properly understanding what goes in the boards.txt file. I've just adjusted for the name of my board, and reduced to those items that I would like to have appear in the menu. Clearly I've been a bit naive (for one thing, the menu items I was expecting are not appearing in the 'tools' menu in the IDE).

I'll put my current attempt at the boards.txt file below. I hope someone will be able to quickly see where my misunderstanding is!

Thanks,

Michael

cadalogger.name=cadalogger
cadalogger.build.core=MCUdude:MegaCoreX
cadalogger.upload.tool=avrdude
cadalogger.upload.maximum_data_size=6144
cadalogger.upload.speed=115200
cadalogger.bootloader.tool=avrdude
cadalogger.build.core=coreX-corefiles
cadalogger.build.board=AVR_ATmega4808
cadalogger.build.mcu=atmega4808
cadalogger.build.extra_flags={build.oscillator}

# Fuses we don't need to modify in the tools menu
cadalogger.bootloader.WDTCFG=0x00
cadalogger.bootloader.TCD0CFG=0x00
cadalogger.bootloader.SYSCFG1=0x06
cadalogger.bootloader.APPEND=0x00
cadalogger.bootloader.LOCKBIT=0xC5

# menu item in megacoreX, not here
cadalogger.pinout.32pin_standard=32 pin standard
cadalogger.pinout.32pin_standard.build.variant=32pin-standard

# EEPROM
cadalogger.menu.eeprom.keep=EEPROM retained
cadalogger.menu.eeprom.keep.bootloader.eesave_bit=1
cadalogger.menu.eeprom.erase=EEPROM not retained
cadalogger.menu.eeprom.erase.bootloader.eesave_bit=0

# Reset pin --  menu item in megacoreX but not here
cadalogger.resetpin.reset=Reset
cadalogger.resetpin.reset.bootloader.SYSCFG0=0b1100100{bootloader.eesave_bit}

# Brown out detection
cadalogger.menu.BOD.2v6=BOD 2.6V
cadalogger.menu.BOD.2v6.bootloader.BODCFG=0x54
cadalogger.menu.BOD.4v3=BOD 4.3V
cadalogger.menu.BOD.4v3.bootloader.BODCFG=0xF4
cadalogger.menu.BOD.4v0=BOD 4.0V
cadalogger.menu.BOD.4v0.bootloader.BODCFG=0xD4
cadalogger.menu.BOD.3v7=BOD 3.7V
cadalogger.menu.BOD.3v7.bootloader.BODCFG=0xB4
cadalogger.menu.BOD.3v3=BOD 3.3V
cadalogger.menu.BOD.3v3.bootloader.BODCFG=0x94
cadalogger.menu.BOD.2v9=BOD 2.9V
cadalogger.menu.BOD.2v9.bootloader.BODCFG=0x74
cadalogger.menu.BOD.2v1=BOD 2.1V
cadalogger.menu.BOD.2v1.bootloader.BODCFG=0x34
cadalogger.menu.BOD.1v8=BOD 1.8V
cadalogger.menu.BOD.1v8.bootloader.BODCFG=0x14
cadalogger.menu.BOD.disabled=BOD disabled
cadalogger.menu.BOD.disabled.bootloader.BODCFG=0x00


# Clock -  menu items retained for internal clock options only
cadalogger.menu.clock.internal_16MHz=Internal 16 MHz
cadalogger.menu.clock.internal_16MHz.upload.speed=115200
cadalogger.menu.clock.internal_16MHz.bootloader.OSCCFG=0x01
cadalogger.menu.clock.internal_16MHz.build.oscillator=
cadalogger.menu.clock.internal_16MHz.build.f_cpu=16000000L

cadalogger.menu.clock.internal_4MHz=Internal 4 MHz
cadalogger.menu.clock.internal_4MHz.upload.speed=115200
cadalogger.menu.clock.internal_4MHz.bootloader.OSCCFG=0x01
cadalogger.menu.clock.internal_4MHz.build.oscillator=
cadalogger.menu.clock.internal_4MHz.build.f_cpu=4000000L

cadalogger.menu.clock.internal_1MHz=Internal 1 MHz
cadalogger.menu.clock.internal_1MHz.upload.speed=115200
cadalogger.menu.clock.internal_1MHz.bootloader.OSCCFG=0x01
cadalogger.menu.clock.internal_1MHz.build.oscillator=
cadalogger.menu.clock.internal_1MHz.build.f_cpu=1000000L


# Bootloader -  subset of options from megacoreX
cadalogger.menu.bootloader.no_bootloader=No bootloader
cadalogger.menu.bootloader.no_bootloader.upload.maximum_size=49152
cadalogger.menu.bootloader.no_bootloader.upload.extra_params=
cadalogger.menu.bootloader.no_bootloader.build.text_section_start=.text=0x0
cadalogger.menu.bootloader.no_bootloader.build.export_merged_output=false
cadalogger.menu.bootloader.no_bootloader.bootloader.file=empty/empty.hex
cadalogger.menu.bootloader.no_bootloader.bootloader.BOOTEND=0x00

cadalogger.menu.bootloader.uart2_default=Optiboot (UART2 default pins)
cadalogger.menu.bootloader.uart2_default.upload.maximum_size=48640
cadalogger.menu.bootloader.uart2_default.upload.protocol=arduino
cadalogger.menu.bootloader.uart2_default.upload.port=UART2_DEF
cadalogger.menu.bootloader.uart2_default.upload.extra_params=
cadalogger.menu.bootloader.uart2_default.build.text_section_start=.text=0x200
cadalogger.menu.bootloader.uart2_default.build.export_merged_output=true
cadalogger.menu.bootloader.uart2_default.bootloader.file=optiboot/bootloaders/mega0/{upload.speed}/Optiboot_mega0_{upload.port}_{uploa>
cadalogger.menu.bootloader.uart2_default.bootloader.BOOTEND=0x02
cadalogger.menu.bootloader.uart2_default.bootloader.SYSCFG0=0b1100100{bootloader.eesave_bit}

did you install MegaCoreX ?

Yup! Can program the board using MegaCoreX from the board manager in the usual way.

then you can add to board.txt custom lines to your specific fuses and/or bootloader path

update:

A bit of progress in fits and starts...

One issue in not getting expected menu items was that this

menu.clock=Clock
menu.BOD=BOD
menu.eeprom=EEPROM
menu.pinout=Pinout
menu.resetpin=Reset pin
menu.bootloader=Bootloader

wasn't in the boards.txt file. This seems to be only part of the problem, though, as I'm still missing a menu item for programmers. However, there doesn't seem to be a corresponding entry in the main boards.txt file in MegaCoreX, so I wonder if there is some other way to set up that part of the menu?

Anyway, I now have the following issue on attempting to compile:

recipe.preproc.macros pattern is missing

I think I am doing something like that.

But rather than adding to MegaCoreX's boards.txt file, I'm just trying to make a single board with its menu options limited to those that are relevant for my board/projects.

So, my boards.txt is basically what I would add to MegaCoreX's boards.txt file, if I was aiming to expand, rather than simplify.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.