From: Ken S. <ksa...@in...> - 2012-10-12 00:03:43
|
Hi All I had a chance to look at the vector.c deduplication proposed by Chrysn and it looks good to me. Pulling out common code and #include'ing it into the family specific files seems the best approach. Although people are keen to start with unifying the core code, I've been playing around a bit with the peripheral code as this is more varied in its implementation between families and will introduce greater problems. I've put up an initial attempt at https://github.com/ksarkies/libopencm3/commits/deduplicate for the STM32 GPIO peripheral, although its a bit hard to see there what has changed. STM32 has four subfamilies. The F2 and F4 subfamilies appear very similar (identical for GPIO and memory addresses) while the F1 subfamily differs significantly. The F3 family is different again but shares a lot with F2, F4 in the GPIO (while the memory map differs markedly). I've added files gpio_common_all and gpio_common_f24 in the header and source stm32 directories to hold much of the common code. It compiles and seems to run OK. This removed all duplication for GPIO but at the cost of four common files and subsequent fragmentation of the code. Note that this change does not require any changes to application code. If people are happy with this approach it would be good to get started on other peripherals as the documentation requires some tricky manoeuvres (typical doxygen!) and a few changes to deal with include files. I'm happy to put in some mileage on this as the documentation progresses. For other families with subfamilies, particularly LPC, I would suggest that a hierarchical directory structure be used like the STM32 family so that common files can be placed logically. cheers, Ken |