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)
signature.asc
Description: OpenPGP digital signature
_______________________________________________ devel mailing list devel@riot-os.org https://lists.riot-os.org/mailman/listinfo/devel