aboutsummaryrefslogtreecommitdiffstats
path: root/ports/ARMCM3/port.dox
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2009-02-09 22:18:39 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2009-02-09 22:18:39 +0000
commit1c1d5129c5d0aa9c52c236f96003aee04cc03d9e (patch)
tree540140bcadfa68dd8856212f74159da143de5af0 /ports/ARMCM3/port.dox
parentc4c192b0273454e81cd9cb91441c747abaabf6ec (diff)
downloadChibiOS-1c1d5129c5d0aa9c52c236f96003aee04cc03d9e.tar.gz
ChibiOS-1c1d5129c5d0aa9c52c236f96003aee04cc03d9e.tar.bz2
ChibiOS-1c1d5129c5d0aa9c52c236f96003aee04cc03d9e.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@751 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'ports/ARMCM3/port.dox')
-rw-r--r--ports/ARMCM3/port.dox46
1 files changed, 46 insertions, 0 deletions
diff --git a/ports/ARMCM3/port.dox b/ports/ARMCM3/port.dox
index ba4111aed..888f58388 100644
--- a/ports/ARMCM3/port.dox
+++ b/ports/ARMCM3/port.dox
@@ -106,6 +106,52 @@
/** @} */
/**
+ * @defgroup ARMCM3_STARTUP Startup Support
+ * @{
+ * @brief ARM Cortex-M3 startup code support.
+ * @details ChibiOS/RT provides its own generic startup file for the ARM
+ * Cortex-M3 port.
+ * Of course it is not mandatory to use it but care should be taken about the
+ * startup phase details.
+ *
+ * <h2>Startup Process</h2>
+ * The startup process, as implemented, is the following:
+ * -# Interrupts are masked globally.
+ * -# The two stacks are initialized by assigning them the sizes defined in the
+ * linker script (usually named @p ch.ld). Stack areas are allocated from
+ * the highest RAM location downward.
+ * -# An early initialization routine @p hwinit0 is invoked, if the symbol is
+ * notdefined then an empty default routine is executed (weak symbol).
+ * -# DATA and BSS segments are initialized.
+ * -# The CPU state is switched to Privileged and the PSP stack is used.
+ * -# A late initialization routine @p hwinit1 is invoked, if the symbol not
+ * defined then an empty default routine is executed (weak symbol).<br>
+ * This late initialization function is also the proper place for a
+ * @a bootloader, if your application requires one.
+ * -# The @p main() function is invoked with the parameters @p argc and @p argv
+ * set to zero.
+ * -# Should the @p main() function return a branch is performed to the weak
+ * symbol MainExitHandler. The default code is an endless empty loop.
+ * .
+ * <h2>Expected linker symbols</h2>
+ * The startup code starts at the symbol @p ResetHandler and expects the
+ * following symbols to be defined in the linker script:
+ * - @p __ram_end__ RAM end location +1.
+ * - @p __main_stack_size__ Exception stack size.
+ * - @p __process_stack_size__ Process stack size. This is the stack area used
+ * by the @p main() function.
+ * - @p _textdata address of the data segment source read only data.
+ * - @p _data data segment start location.
+ * - @p _edata data segment end location +1.
+ * - @p _bss_start BSS start location.
+ * - @p _bss_end BSS end location +1.
+ * .
+ * @ingroup ARMCM3
+ * @file ports/ARMCM3/crt0.s Startup code.
+ */
+/** @} */
+
+/**
* @defgroup ARMCM3_NVIC NVIC Support
* @{
* @brief ARM Cortex-M3 NVIC support.