[Patch ARM] Add support for bare-metal cpu initialization on A profile cores.

Richard Earnshaw rearnsha@arm.com
Fri Sep 20 13:59:00 GMT 2013

On 19/09/13 14:34, Ramana Radhakrishnan wrote:
> Hi,
> 	Increasingly we've found the need for a start-up routine required for 
> bare-metal applications that need to initialize the mmu and the caches 
> for use during hardware bring-up and/or for bare-metal testing on ARM's 
> propreitary models as well as allow for semi-hosting to happen at the 
> same time. This has been found to be useful in a number of situations 
> and this is just the initial patch set required for this to work on A 
> profile CPUs.  I would recommend that this not be used for earlier cores 
> without testing.
> The way this is implemented is by adding a new weak function called 
> _rdimon_init_hook that deals with this initialization. I expect this to 
> work on newer hardware because our testing involves testing with the AEM 
> models that model the newer hardware but I don't have access to any such 
> hardware to test this right now.
> The SMP enable bit in the ACTLR is enabled only for A15 and A7 but not 
> for any other cores as this is needed only on those cores. We use this 
> internally for some of our GCC test runs on our fast models, we've tried 
> it in the past to run some simple applications on bare-metal A7 and A15 
> boards.
> This necessitates the use of a new specs file aprofile-ve.specs which 
> I've added and provided as an example. I have tested this on an AEM 
> model but am confident that this will work just fine on a bare-metal 
> board connected via D-Stream or anything that implements the standard 
> Angel API.
> If people want to use a different base address for the text section and 
> / or for the vectors page in the cpu init code this is available by 
> doing  --defsym _rdimon_vector_base=FOO or -Ttext_section=BAR . The 
> specs file only eases the use for this.
> Tested with an arm-eabi bare-metal GCC multilib build across 
> architecture variants, Thumbness and fpu abi variants using the new 
> specs file in my baremetal build script and tested with 
> --specs=aprofile-ve.specs passed by default in my site.exp - tested on 
> AEM VE model internally .
> Ok to apply ?
> regards
> Ramana
> <DATE>  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
>       Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
>       Greta Yorsh  <greta.yorsh@arm.com>
>          * arm/Makefile.in: Add support for cpu-init directory and add
>            elf-aprofile-ve.specs.
>          * arm/configure.in: Likewise.
>          * arm/configure: Regenerate.
>          * arm/cpu-init: New directory.
>          * arm/cpu-init/Makefile.in: New file.
>          * arm/cpu-init/rdimon-aem.S: Likewise.
>          * arm/crt0.S: Call _rdimon_init_hook
>          * arm/elf-aprofile-ve.specs: New file.



More information about the Newlib mailing list