From 983a9dca49062555745ab35ef8a146666c8e1fc9 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sat, 23 Mar 2013 14:46:02 +0000 Subject: [PATCH] Rework of kernel build signal dispatch to user-space handlers git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5778 42af7a65-404d-4744-a932-0658087f49c3 --- configs/open1788/kernel/up_userspace.c | 2 +- configs/open1788/scripts/memory.ld | 12 +++++++++--- configs/sam3u-ek/kernel/up_userspace.c | 2 +- configs/sam3u-ek/scripts/memory.ld | 14 ++++++++++---- configs/stm32f4discovery/kernel/up_userspace.c | 2 +- configs/stm32f4discovery/scripts/memory.ld | 17 +++++++++++------ 6 files changed, 33 insertions(+), 16 deletions(-) diff --git a/configs/open1788/kernel/up_userspace.c b/configs/open1788/kernel/up_userspace.c index b6a9e3df6f..bd0703b983 100644 --- a/configs/open1788/kernel/up_userspace.c +++ b/configs/open1788/kernel/up_userspace.c @@ -111,7 +111,7 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Signal handler trampoline */ #ifndef CONFIG_DISABLE_SIGNALS - .signal_handler = signal_handler, + .signal_handler = up_signal_handler, #endif /* Memory manager entry points (declared in include/nuttx/mm.h) */ diff --git a/configs/open1788/scripts/memory.ld b/configs/open1788/scripts/memory.ld index a433182797..690c7d3d62 100644 --- a/configs/open1788/scripts/memory.ld +++ b/configs/open1788/scripts/memory.ld @@ -51,10 +51,14 @@ * * This alignment requirement means that the largest user space FLASH region * you can have will be 256KB at it would have to be positioned at - * 0x00400000. If you change this address, don't forget to chagne the + * 0x00400000. If you change this address, don't forget to change the * CONFIG_NUTTX_USERSPACE configuration setting to match and to modify * the check in kernel/userspace.c. * + * For the same reasons, the maximum size of the SRAM mapping is limited to + * 4KB. Both of these alignment limitations could be reduced by using + * multiple regions to map the FLASH/SDRAM range. + * * A detailed memory map for the 64KB CPU SRAM region is as follows: * * 0x10000 0000: Kernel .data region. Typical size: 0.1KB @@ -76,12 +80,14 @@ MEMORY /* 256Kb FLASH */ kflash (rx) : ORIGIN = 0x00000000, LENGTH = 64K - uflash (rx) : ORIGIN = 0x00010000, LENGTH = 448K + uflash (rx) : ORIGIN = 0x00010000, LENGTH = 64K + xflash (rx) : ORIGIN = 0x00010000, LENGTH = 384K /* 64Kb of SRAM in the CPU block */ ksram (rwx) : ORIGIN = 0x10000000, LENGTH = 4K - usram (rwx) : ORIGIN = 0x10001000, LENGTH = 60K + usram (rwx) : ORIGIN = 0x10001000, LENGTH = 4K + xsram (rwx) : ORIGIN = 0x10001000, LENGTH = 56K /* Other peripheral memory (free, nothing is linked here) */ diff --git a/configs/sam3u-ek/kernel/up_userspace.c b/configs/sam3u-ek/kernel/up_userspace.c index 484cdc2d02..06a4d935e5 100644 --- a/configs/sam3u-ek/kernel/up_userspace.c +++ b/configs/sam3u-ek/kernel/up_userspace.c @@ -111,7 +111,7 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Signal handler trampoline */ #ifndef CONFIG_DISABLE_SIGNALS - .signal_handler = signal_handler, + .signal_handler = up_signal_handler, #endif /* Memory manager entry points (declared in include/nuttx/mm.h) */ diff --git a/configs/sam3u-ek/scripts/memory.ld b/configs/sam3u-ek/scripts/memory.ld index 13405f4086..43fca9478f 100644 --- a/configs/sam3u-ek/scripts/memory.ld +++ b/configs/sam3u-ek/scripts/memory.ld @@ -51,11 +51,15 @@ * requirement also increases. * * This alignment requirement means that the largest user space FLASH region - * you can have will be 2128KB at it would have to be positioned at - * 0x000a0000. If you change this address, don't forget to chagne the + * you can have will be 128KB at it would have to be positioned at + * 0x000a0000. If you change this address, don't forget to change the * CONFIG_NUTTX_USERSPACE configuration setting to match and to modify * the check in kernel/userspace.c. * + * For the same reasons, the maximum size of the SRAM mapping is limited to + * 4KB. Both of these alignment limitations could be reduced by using + * multiple regions to map the FLASH/SDRAM range. + * * A detailed memory map for the 16Kb SRAM region is as follows: * * 0x20000 0000: Kernel .data region. Typical size: 0.1KB @@ -77,12 +81,14 @@ MEMORY /* 256Kb FLASH */ kflash (rx) : ORIGIN = 0x00080000, LENGTH = 64K - uflash (rx) : ORIGIN = 0x00090000, LENGTH = 192K + uflash (rx) : ORIGIN = 0x00090000, LENGTH = 64K + xflash (rx) : ORIGIN = 0x000a0000, LENGTH = 128K /* 32Kb SRAM */ ksram1 (rwx) : ORIGIN = 0x20000000, LENGTH = 4K - usram1 (rwx) : ORIGIN = 0x20001000, LENGTH = 28K + usram1 (rwx) : ORIGIN = 0x20001000, LENGTH = 4K + xsram1 (rwx) : ORIGIN = 0x20001000, LENGTH = 24K /* 16Kb SRAM */ diff --git a/configs/stm32f4discovery/kernel/up_userspace.c b/configs/stm32f4discovery/kernel/up_userspace.c index 87685e4ff7..0e3ea495d4 100644 --- a/configs/stm32f4discovery/kernel/up_userspace.c +++ b/configs/stm32f4discovery/kernel/up_userspace.c @@ -111,7 +111,7 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Signal handler trampoline */ #ifndef CONFIG_DISABLE_SIGNALS - .signal_handler = signal_handler, + .signal_handler = up_signal_handler, #endif /* Memory manager entry points (declared in include/nuttx/mm.h) */ diff --git a/configs/stm32f4discovery/scripts/memory.ld b/configs/stm32f4discovery/scripts/memory.ld index 7d4339d9a9..0cf99ef967 100644 --- a/configs/stm32f4discovery/scripts/memory.ld +++ b/configs/stm32f4discovery/scripts/memory.ld @@ -42,8 +42,7 @@ * * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 * where the code expects to begin execution by jumping to the entry point in - * the 0x0800:0000 address - * range. + * the 0x0800:0000 address range. * * For MPU support, the kernel-mode NuttX section is assumed to be 128Kb of * FLASH and 4Kb of SRAM. That is an excessive amount for the kernel which @@ -60,10 +59,14 @@ * * This alignment requirement means that the largest user space FLASH region * you can have will be 512KB at it would have to be positioned at - * 0x08800000. If you change this address, don't forget to chagne the + * 0x08800000. If you change this address, don't forget to change the * CONFIG_NUTTX_USERSPACE configuration setting to match and to modify * the check in kernel/userspace.c. * + * For the same reasons, the maximum size of the SRAM mapping is limited to + * 4KB. Both of these alignment limitations could be reduced by using + * multiple regions to map the FLASH/SDRAM range. + * * A detailed memory map for the 112KB SRAM region is as follows: * * 0x20000 0000: Kernel .data region. Typical size: 0.1KB @@ -74,7 +77,7 @@ * ------- ---- Padded to 4KB * 0x20000 1000: User .data region. Size is variable. * ------- ---- User .bss region Size is variable. - * ------- ---- Beginning of kernel heap. Size determined by + * 0x20000 2000: Beginning of kernel heap. Size determined by * CONFIG_MM_KERNEL_HEAPSIZE. * ------- ---- Beginning of user heap. Can vary with other settings. * 0x20001 c000: End+1 of CPU RAM @@ -85,10 +88,12 @@ MEMORY /* 1024Kb FLASH */ kflash (rx) : ORIGIN = 0x08000000, LENGTH = 128K - uflash (rx) : ORIGIN = 0x08020000, LENGTH = 896K + uflash (rx) : ORIGIN = 0x08020000, LENGTH = 128K + xflash (rx) : ORIGIN = 0x08040000, LENGTH = 768K /* 112Kb of contiguous SRAM */ ksram (rwx) : ORIGIN = 0x20000000, LENGTH = 4K - usram (rwx) : ORIGIN = 0x20001000, LENGTH = 108K + usram (rwx) : ORIGIN = 0x20001000, LENGTH = 4K + xsram (rwx) : ORIGIN = 0x20001000, LENGTH = 104K }