This is the mail archive of the
ecos-devel@sourceware.org
mailing list for the eCos project.
Cortex-M Vector Table Offset
- From: Ilija Kocho <ilijak at siva dot com dot mk>
- To: eCos developers <ecos-devel at ecos dot sourceware dot org>
- Date: Wed, 22 Dec 2010 14:37:29 +0100
- Subject: Cortex-M Vector Table Offset
Hello
In a course of porting eCos to Cortex-M based devices, other than STM32,
an issue occurs that must be addressed.
The problem (In following discussion I refer to ROM start-up configuration):
In current Cortex-M port the Vector Table Offset is fixed (VTOR set) by
architecture port to 0x20000000 (CYGARC_REG_NVIC_VTOR_TBLBASE_SRAM
defined in hal/cortexm/arch/<version>/include/hal_io.h). This is the
place where it should be expected but on some devices this is not possible:
The example is NXP LPC 17xx family that has no RAM in Data (SRAM)
partition (i.e. at 0x20000000). Instead SRAM is located within Code
partition at address 0x10000000.
Proposed solution:
Define Vector Table base (CYGARC_REG_NVIC_VTOR_TBLBASE_SRAM) in the
variant with override option for the platform: respective var_io.h
and/or plf_io.h.
Also there is apparent dependence between
CYGARC_REG_NVIC_VTOR_TBLBASE_SRAM and devices' memory configuration(s)
so we could consider some shared defines with pkgconf files and/or CDL.
This could provide flexibility useful for some other devices such as
Freescale Kinetis family.
Patch(es) should be easy and harmless. I could produce ones after
discussion.
For the end I have one question: What is use of
CYGARC_REG_NVIC_VTOR_TBLOFF(0) (hal/cortexm/arch/current/src/hal_misc.c)
Best regards
Ilija