@@ -5,31 +5,65 @@ Platforms add support for new boards to the Arduino development software. They a
55[ Boards Manager] ( package_index_json-specification.md ) or manual installation to the _ hardware_ folder of Arduino's
66sketchbook folder (AKA "user directory").<br > A platform may consist of as little as a single configuration file.
77
8- ## Hardware Folders structure
8+ ## Platform installation directories
99
10- The new hardware folders have a hierarchical structure organized in two levels :
10+ If the platforms are installed using the Board Manager the installation directory location will be as follow :
1111
12- - the first level is the vendor/maintainer
13- - the second level is the supported architecture
12+ ` {directories.data}/packages/{VENDOR_NAME}/hardware/{ARCHITECTURE}/{VERSION}/... `
1413
15- A vendor/maintainer can have multiple supported architectures. For example, below we have three hardware vendors called
16- "arduino", "yyyyy" and "xxxxx":
14+ - ` {directories.data} ` is the data directory as specified in the
15+ [ configuration file] ( configuration.md#default-directories ) .
16+ - ` {VENDOR_NAME} ` is the identifier of the vendor/maintainer of the platform.
17+ - ` {ARCHITECTURE} ` is the architecture of the CPU used in the platform.
18+ - ` {VERSION} ` is the platform version.
1719
20+ Alternatively, a platform may be manually installed by the user inside the Sketchbook/user directory as follows:
21+
22+ ` {directories.user}/hardware/{VENDOR_NAME}/{ARCHITECTURE}/... `
23+
24+ - ` {directories.user} ` is the user directory as specified in the
25+ [ configuration file] ( configuration.md#default-directories ) .
26+ - ` {VENDOR_NAME} ` is the identifier of the vendor/maintainer of the platform.
27+ - ` {ARCHITECTURE} ` is the architecture of the CPU used in the platform.
28+
29+ A vendor/maintainer may have multiple supported architectures.
30+
31+ Let's see an example, below we have a bunch of platforms downloaded from three hardware vendors ` arduino ` , ` adafruit `
32+ and ` esp32 ` , and installed using the Board Manager:
33+
34+ ```
35+ {directories.data}/packages/arduino/hardware/avr/1.8.6/...
36+ {directories.data}/packages/arduino/hardware/esp32/2.0.18-arduino.5/...
37+ {directories.data}/packages/arduino/hardware/nrf52/1.4.5/...
38+ {directories.data}/packages/adafruit/hardware/nrf52/1.6.1/...
39+ {directories.data}/packages/esp32/hardware/esp32/3.0.7/...
1840```
19- hardware/arduino/avr/... - Arduino - AVR Boards
20- hardware/arduino/sam/... - Arduino - SAM (32bit ARM) Boards
21- hardware/yyyyy/avr/... - Yyy - AVR
22- hardware/xxxxx/avr/... - Xxx - AVR
41+
42+ In this example three architectures have been installed from the vendor ` arduino ` (` avr ` , ` esp32 ` and ` nrf52 ` ), and one
43+ from ` adafruit ` and ` esp32 ` (` nrf52 ` and ` esp32 ` respectively). Note that the vendor ` esp32 ` has the same name as the
44+ architecture ` esp32 ` .
45+
46+ If the user manually installed the same platforms, they should have unpacked them in the following directories:
47+
2348```
49+ {directories.user}/hardware/arduino/avr/...
50+ {directories.user}/hardware/arduino/esp32/...
51+ {directories.user}/hardware/arduino/nrf52/...
52+ {directories.user}/hardware/adafruit/nrf52/...
53+ {directories.user}/hardware/esp32/esp32/...
54+ ```
55+
56+ In this latter case the version must be omitted.
2457
25- The vendor "arduino" has two supported architectures (AVR and SAM), while "xxxxx" and "yyyyy" have only AVR.
58+ ### Notes about choosing the architecture name
2659
2760Architecture values are case sensitive (e.g. ` AVR ` != ` avr ` ).
2861
29- If possible, follow existing architecture name conventions when creating hardware packages. Use the vendor folder name
30- to differentiate your package. The architecture folder name is used to determine library compatibility and to permit
31- referencing resources from another core of the same architecture, so use of a non-standard architecture name can have a
32- harmful effect.
62+ Platform developers should follow the existing architecture name conventions when creating hardware packages, if you
63+ need to differentiate your package use the vendor/maintainer folder name to do so.
64+
65+ The architecture name is used to determine the libraries compatibility and to permit referencing resources from another
66+ platform of the same architecture. Use of a non-standard architecture name can have a harmful effect.
3367
3468## Architecture configurations
3569
0 commit comments