Hi Andre, On Mon, Apr 18, 2016 at 10:55:49AM +0300, Andrei Emeltchenko wrote: > Hi, > > I am working on arduino_101 development board. > https://www.arduino.cc/en/Main/ArduinoBoard101 > > It has nrf51 BLE chip, Basically the configuration is the same as for > the nrf51dk-16kbram with the only difference: > > --- a/hw/bsp/nrf51dk-16kbram/src/hal_bsp.c > +++ b/hw/bsp/nrf51dk-16kbram/src/hal_bsp.c > @@ -24,7 +24,7 @@ > static const struct nrf51_uart_cfg uart_cfg = { > .suc_pin_tx = 9, > .suc_pin_rx = 11, > - .suc_pin_rts = 8, > + .suc_pin_rts = 12, > .suc_pin_cts = 10 > }; > > > What is the best way of keeping the change? Making special BSP would be > too expensive for this one line change.
This is indeed an annoying situation. There is a nearly identical dilemma with the Arduino Zero and the Arduino Zero Pro; the only difference among these two boards is a single pin. The solution for the Arduino Zero is to use a single BSP, but to select the proper pin at compile time via an #ifdef: #ifdef ARDUINO_ZERO_PRO ARDUINO_ZERO_D2 = (8), ARDUINO_ZERO_D4 = (14), #endif #ifdef ARDUINO_ZERO ARDUINO_ZERO_D2 = (14), ARDUINO_ZERO_D4 = (8), #endif The appropriate preprocessor symbol is defined by the use of a target feature, as described in the arduino zero tutorial: http://mynewt.apache.org/os/tutorials/arduino_zero/ That said, I am not sure this is the right approach. I will certainly let others weight in, but my feeling is that it is better to just bite the bullet and create a new BSP. Both solutions pose maintenance headaches, but I think separate BSPs is simpler and more maintainable. An additional benefit of separate BSPs is that it simplifies target creation for the application developer (just specify BSP, rather than BSP plus feature). Thanks, Chris