I’m testing the custom board feature following the docs:
http://docs.platformio.org/en/latest/platforms/creating_board.html
- Create
boards
folder in `~/.platformio’
- create
my_own_board.json
with example json:
{
"myboard": {
"build": {},
"frameworks": ["%LIST_WITH_SUPPORTED_FRAMEWORKS%"],
"name": "My test board",
"platform": "%PLATFORM_TYPE_HERE%",
"upload": {},
"url": "http://example.com",
"vendor": "My Company Ltd."
}
}
When I run platformio boards
I get the following error:
platformio boards
Platform: %PLATFORM_TYPE_HERE%
----------------------------------------------------------------------------------------------------------------
Type MCU Frequency Flash RAM Name
----------------------------------------------------------------------------------------------------------------
Error: Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/platformio/__main__.py", line 107, in main
cli(None, None, None)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 700, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 680, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 873, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 508, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/platformio/commands/boards.py", line 78, in cli
type=click.style(type_, fg="cyan"), mcu=data['build']['mcu'],
KeyError: 'mcu'
Is this a bug / error in the docs or am I missing something? I’m running 2.9.4 on a raspi3 with python 2.7.9. Also tested on Ubuntu with python 2.7.10. Same error.
Hi @glynhudson
No, this is not a bug, all of these fields should be filled, for example, config for a board based on atmega328p:
{
"my_mega_uno": {
"build": {
"core": "arduino",
"extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MY_BOARD",
"f_cpu": "16000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"frameworks": ["arduino"],
"name": "My board name",
"platform": "atmelavr",
"upload": {
"maximum_ram_size": 2048,
"maximum_size": 32256,
"protocol": "arduino",
"require_upload_port" : true,
"speed": 115200
},
"url": "http://www.example.com",
"vendor": "My company"
}
}
You can find a lot of examples here.
Thanks for your help.
I’ve just tried the exact config file you posted above added in:
~/.platformio/boards/test.json
and I still get error
:
Error: Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/platformio/__main__.py", line 107, in main
cli(None, None, None)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 700, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 680, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 873, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 508, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/platformio/commands/boards.py", line 35, in cli
for type_, data in get_boards().items():
File "/usr/local/lib/python2.7/dist-packages/platformio/util.py", line 394, in get_boards
boards = _lookup_boards()
File "/usr/local/lib/python2.7/dist-packages/platformio/util.py", line 103, in __call__
value = self.func(*args)
File "/usr/local/lib/python2.7/dist-packages/platformio/util.py", line 389, in _lookup_boards
boards.update(load_json(join(bdir, json_file)))
File "/usr/local/lib/python2.7/dist-packages/platformio/util.py", line 129, in load_json
return json.load(f)
File "/usr/lib/python2.7/json/__init__.py", line 290, in load
**kw)
File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 369, in decode
raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 10 - line 22 column 1 (char 9 - 634)
Sorry, there was an extra comma, I updated my comment above.
I’m very sorry, even without the comma I still get error. Slightly different this time:
Error: Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/platformio/__main__.py", line 107, in main
cli(None, None, None)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 700, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 680, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 873, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 508, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/platformio/commands/boards.py", line 36, in cli
if data['platform'] not in grpboards:
TypeError: list indices must be integers, not str
============================================================
Oops, sorry, the field platform
was missed, please try this one:
{
"my_board": {
"build": {
"core": "arduino",
"extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MY_BOARD",
"f_cpu": "16000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"frameworks": ["arduino"],
"name": "My board name",
"platform": "atmelavr",
"upload": {
"maximum_ram_size": 2048,
"maximum_size": 32256,
"protocol": "arduino",
"require_upload_port" : true,
"speed": 115200
},
"url": "http://www.example.com",
"vendor": "My company"
}
}
1 Like
Yah! Thanks a lot 
It would probably be a good idea to update the example on the documentation page to be a full working example. The Json formatting sees quite picky
http://docs.platformio.org/en/latest/platforms/creating_board.html
Keep up the good work, love patformio. I’ve just donated.
Bountysource 
1 Like