Hi,

I'm thinking about to revise the ESP32 board definitions and would need
an advice from experienced core developers.

Most (if not all) boards define their peripheral configuration of ADCs,
DACs and PWMs in `periph_conf.h` in a kind of static const arrays and
define macros based on the size of these arrays as follows:

```
static const pwm_conf_t pwm_conf[] = {
    {
        .dev = MINI_TIMER0,
        .pin_ch = PWM_PINS_CH0,
        .div = MINI_TIMER0_DIV,
    },
    {
        .dev = MINI_TIMER2,
        .pin_ch = PWM_PINS_CH1,
        .div = MINI_TIMER2_DIV,
    }
};
#define PWM_NUMOF (sizeof(pwm_conf) / sizeof(pwm_conf[0]))
```

Even though these static const arrays are allocated in the .rodata
segment, they are allocated in each module that includes `board.h`. XFAs
addresses this problem.

For ESP32-Boards I tried another approach. In `periph_conf.h` there is
only a declaration of an external const variable `pwm_dev_num` which
contains the number of PWM devices and the macro `PWM_NUMOF` is then
defined as follows:

```
extern const unsigned pwm_dev_num;
#define PWM_NUMOF   (pwm_dev_num)
```

That's it. The complex configuration array of PWM is defined as static
const array in the according .c file. The `prm_dev_num` variable is also
defined there as usual:
```
const unsigned pwm_dev_num = sizeof(_pwm_hw) / sizeof(_pwm_hw[0]);
```

With this apporach, the pretty complex static configuration array
`_pwm_hw[]` exists only once, the complexity of the configuration is
hidden and the variable `pwm_dev_num` is also determin at compile time.

The question I have is: should I change the board definitions according
to the approach used by all other board definitions to be compatible
with these board definitions, or can I leave them as they are?

What would be your advice?

Regards
Gunar

-- 
Wenn du laufen willst, lauf eine Meile. Wenn du ein neues Leben
kennenlernen willst, dann lauf Marathon. (Emil Zatopek)

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel

Reply via email to