summaryrefslogtreecommitdiff
path: root/nuttx/configs/stm32f4discovery
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2013-03-22 18:26:03 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2013-03-22 18:26:03 +0000
commitf3427f57661698850483d9638892a7c25456078c (patch)
tree399433d8f31309be1daed4a529e12a14935f5e06 /nuttx/configs/stm32f4discovery
parentf91a1aac610192984326a4d0e77796c1419f8ca1 (diff)
downloadpx4-nuttx-f3427f57661698850483d9638892a7c25456078c.tar.gz
px4-nuttx-f3427f57661698850483d9638892a7c25456078c.tar.bz2
px4-nuttx-f3427f57661698850483d9638892a7c25456078c.zip
Fix some errors in stm32_allocateheap.c for STM32 F1 and F3 that crept in recently
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5776 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/configs/stm32f4discovery')
-rw-r--r--nuttx/configs/stm32f4discovery/README.txt44
-rw-r--r--nuttx/configs/stm32f4discovery/kernel/up_userspace.c4
-rw-r--r--nuttx/configs/stm32f4discovery/kostest/defconfig2
-rw-r--r--nuttx/configs/stm32f4discovery/scripts/memory.ld34
4 files changed, 72 insertions, 12 deletions
diff --git a/nuttx/configs/stm32f4discovery/README.txt b/nuttx/configs/stm32f4discovery/README.txt
index e4ed26253..9df06c9d1 100644
--- a/nuttx/configs/stm32f4discovery/README.txt
+++ b/nuttx/configs/stm32f4discovery/README.txt
@@ -1156,6 +1156,50 @@ Where <subdir> is one of the following:
nuttx.hex - The pass2 Intel HEX file (selected in defconfig)
System.map - Symbols in the kernel-space ELF file
+ 4. Combining .hex files. If you plan to use the STM32 ST-Link Utility to
+ load the .hex files into FLASH, then you need to combine the two hex
+ files into a single .hex file. Here is how you can do that.
+
+ a. The 'tail' of the nuttx.hex file should look something like this
+ (with my comments added):
+
+ $ tail nuttx.hex
+ # 00, data records
+ ...
+ :10 9DC0 00 01000000000800006400020100001F0004
+ :10 9DD0 00 3B005A0078009700B500D400F300110151
+ :08 9DE0 00 30014E016D0100008D
+ # 05, Start Linear Address Record
+ :04 0000 05 0800 0419 D2
+ # 01, End Of File record
+ :00 0000 01 FF
+
+ Use an editor such as vi to remove the 05 and 01 records.
+
+ b. The 'head' of the nuttx_user.hex file should look something like
+ this (again with my comments added):
+
+ $ head nuttx_user.hex
+ # 04, Extended Linear Address Record
+ :02 0000 04 0801 F1
+ # 00, data records
+ :10 8000 00 BD89 01084C800108C8110208D01102087E
+ :10 8010 00 0010 00201C1000201C1000203C16002026
+ :10 8020 00 4D80 01085D80010869800108ED83010829
+ ...
+
+ Nothing needs to be done here. The nuttx_user.hex file should
+ be fine.
+
+ c. Combine the edited nuttx.hex and un-edited nuttx_user.hex
+ file to produce a single combined hex file:
+
+ $ cat nuttx.hex nuttx_user.hex >combined.hex
+
+ Then use the combined.hex file with the STM32 ST-Link tool. If
+ you do this a lot, you will probably want to invest a little time
+ to develop a tool to automate these steps.
+
nsh:
---
Configures the NuttShell (nsh) located at apps/examples/nsh. The
diff --git a/nuttx/configs/stm32f4discovery/kernel/up_userspace.c b/nuttx/configs/stm32f4discovery/kernel/up_userspace.c
index eb73f8069..87685e4ff 100644
--- a/nuttx/configs/stm32f4discovery/kernel/up_userspace.c
+++ b/nuttx/configs/stm32f4discovery/kernel/up_userspace.c
@@ -56,8 +56,8 @@
# error "CONFIG_NUTTX_USERSPACE not defined"
#endif
-#if CONFIG_NUTTX_USERSPACE != 0x08018000
-# error "CONFIG_NUTTX_USERSPACE must be 0x08018000 to match memory.ld"
+#if CONFIG_NUTTX_USERSPACE != 0x08020000
+# error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
#endif
/****************************************************************************
diff --git a/nuttx/configs/stm32f4discovery/kostest/defconfig b/nuttx/configs/stm32f4discovery/kostest/defconfig
index 623c5d4d2..316ba3f80 100644
--- a/nuttx/configs/stm32f4discovery/kostest/defconfig
+++ b/nuttx/configs/stm32f4discovery/kostest/defconfig
@@ -26,7 +26,7 @@ CONFIG_PASS1_TARGET="all"
CONFIG_PASS1_BUILDIR="configs/stm32f4discovery/kernel"
CONFIG_PASS1_OBJECT=""
CONFIG_NUTTX_KERNEL=y
-CONFIG_NUTTX_USERSPACE=0x08018000
+CONFIG_NUTTX_USERSPACE=0x08020000
#
# Binary Output Formats
diff --git a/nuttx/configs/stm32f4discovery/scripts/memory.ld b/nuttx/configs/stm32f4discovery/scripts/memory.ld
index e1d89450e..7d4339d9a 100644
--- a/nuttx/configs/stm32f4discovery/scripts/memory.ld
+++ b/nuttx/configs/stm32f4discovery/scripts/memory.ld
@@ -36,19 +36,35 @@
/* The STM32F407VG has 1024Kb of FLASH beginning at address 0x0800:0000 and
* 192Kb of SRAM. SRAM is split up into three blocks:
*
- * 1) 112Kb of SRAM beginning at address 0x2000:0000
- * 2) 16Kb of SRAM beginning at address 0x2001:c000
- * 3) 64Kb of CCM SRAM beginning at address 0x1000:0000
+ * 1) 112KB of SRAM beginning at address 0x2000:0000
+ * 2) 16KB of SRAM beginning at address 0x2001:c000
+ * 3) 64KB of CCM SRAM beginning at address 0x1000:0000
*
* 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.
*
- * For MPU support, the kernel-mode NuttX section is assumed to be 96Kb of
- * FLASH and 4Kb of SRAM. That, of course, can be optimized as needed (See
- * also configs/stm32f4discovery/scripts/kernel-space.ld). A detailed memory map
- * for the CPU SRAM region is as follows:
+ * 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
+ * should fit into 64KB and, of course, can be optimized as needed (See
+ * also configs/stm32f4discovery/scripts/kernel-space.ld). Allowing the
+ * additional does permit addition debug instrumentation to be added to the
+ * kernel space without overflowing the partition.
+ *
+ * Alignment of the user space FLASH partition is also a critical factor:
+ * The user space FLASH partition will be spanned with a single region of
+ * size 2**n bytes. The alignment of the user-space region must be the same.
+ * As a consequence, as the user-space increases in size, the alignmment
+ * requirement also increases.
+ *
+ * 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
+ * CONFIG_NUTTX_USERSPACE configuration setting to match and to modify
+ * the check in kernel/userspace.c.
+ *
+ * A detailed memory map for the 112KB SRAM region is as follows:
*
* 0x20000 0000: Kernel .data region. Typical size: 0.1KB
* ------- ---- Kernel .bss region. Typical size: 1.8KB
@@ -68,8 +84,8 @@ MEMORY
{
/* 1024Kb FLASH */
- kflash (rx) : ORIGIN = 0x08000000, LENGTH = 96K
- uflash (rx) : ORIGIN = 0x08018000, LENGTH = 928K
+ kflash (rx) : ORIGIN = 0x08000000, LENGTH = 128K
+ uflash (rx) : ORIGIN = 0x08020000, LENGTH = 896K
/* 112Kb of contiguous SRAM */