This is an old revision of the document!
Board support framework
Introduction
In the past, there's been a confusion, or merging, of support for the SoC and for the board. This resulted from the developers making for a single board. While this worked for the initial development, it acts as a barrier to entry for additional boards for the same SoC.
Proposed Solution
The AT91 subport has move too using the proposed solution.
First, each board will create a arm/conf/$BOARD, arm/at91/std.$BOARD and a arm/at91/board_$BOARD.c. The std.$BOARD contains constants needed for all instances of that board. This includes address tweaks, flash locations, etc. conf/$BOARD is a sample config file for the board. board_$BOARD.c contains the board_init() routine. All the board interface routines are in arm/at91/at91boards.h.
Future Solution
In the future, I'd like to modify at91boards.h such that it can build one board, or support for multiple boards. There's a boot-loader supplied thing that will allow the early boot code to select the right one.
In the future, I'd like there to be more sharing between the arminit routines.