d7c3ca2623
Fix incorrect path specs in the documentation for adding an ARM based CPU (MACH) to the tree Signed-off-by: Matthias Kaehlcke <matthias@kaehlcke.net> -- Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
66 lines
2.6 KiB
Text
66 lines
2.6 KiB
Text
/* This document is intended to provide the developer with information
|
|
* how to integrate a new CPU (MACH) into this part of the barebox tree
|
|
*/
|
|
|
|
/** @page dev_arm_mach ARM based CPU (MACH) into the tree
|
|
|
|
FIXME
|
|
|
|
@section mach_arm_reset What's happens when the reset signal is gone
|
|
|
|
@note Code running immediately after reset runs at an address it is not linked
|
|
to: "runtime address != link address". You should only use branches and
|
|
do not refer to fixed data. This implies the use of assembler code only.
|
|
|
|
The ARM CPU starts at lable \<reset\> in one of the corresponding start-*.S
|
|
files. After some basic hardware setup it can call a function
|
|
\<arch_init_lowlevel\> if not disabled. This call is intended to give all
|
|
developers a chance to use a standard reset vector file, but also do some
|
|
special things required only on their specific CPU.
|
|
|
|
After handling some MMU related things \<board_init_lowlevel\> can be called (if
|
|
not disabled). This is a board specific function for SDRAM setup for example.
|
|
As its board specific, your can do whatever you need to bring your board up.
|
|
|
|
In the case the boot happens from NAND flash memory, further steps are required.
|
|
Most of the known processor devices are reading the first few blocks from the
|
|
NAND flash memory into some kind of internal SRAM. This small part must be able
|
|
to initialize the SDRAM controller and to read the remaining rest of the
|
|
barebox binary from the NAND flash memory prior returning from \<board_init_lowlevel\>.
|
|
|
|
When \<board_init_lowlevel\> returns it will be assumed there is now a working
|
|
RAM that can be used for all further steps.
|
|
|
|
Next step is relocation of @a barebox itself (if not already done). It gets copied
|
|
to RAM and the last assembler instruction is a jump into start_barebox(). This
|
|
target address is the first C instruction in barebox. At this point of time:\n
|
|
"runtime address == link address".
|
|
|
|
@section mach_arm_files List of changes
|
|
|
|
Lets call the new MACH new_cpu.
|
|
|
|
- create a new subdirectory in /arch/arm/mach-new_cpu
|
|
- create a new subdirectory in /arch/arm/mach-new_cpu/include
|
|
- add CPU specific definitions into /arch/arm/mach-new_cpu/include
|
|
- add /arch/arm/mach-new_cpu/Kconfig
|
|
- add /arch/arm/mach-new_cpu/Makfile
|
|
- add other CPU specific code into /arch/arm/mach-new_cpu/
|
|
- modify /arch/arm/Kconfig
|
|
- modify /arch/arm/Makfile
|
|
|
|
@section mach_arm_architecures Architectures using ARM processors
|
|
For details on specific architectures:
|
|
|
|
@subsection mach_arm_omap_info OMAP CPUs
|
|
|
|
@li @subpage dev_omap_arch
|
|
|
|
@subsection mach_arm_s3c24xx_info S3C24XX CPUs
|
|
|
|
@li @subpage dev_s3c24xx_arch
|
|
|
|
TODO add more details
|
|
|
|
*/
|