From c8c888555f189161a58400ad2e4ee4332641670a Mon Sep 17 00:00:00 2001 From: patacongo Date: Sun, 4 Oct 2009 18:22:50 +0000 Subject: [PATCH] RIDE uses pre-built NuttX start file git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2121 42af7a65-404d-4744-a932-0658087f49c3 --- arch/arm/include/arch.h | 5 ++++ configs/stm3210e-eval/README.txt | 12 ++++++---- configs/stm3210e-eval/RIDE/nuttx.dbi | 2 ++ configs/stm3210e-eval/RIDE/nuttx.elf.ld | 3 +-- configs/stm3210e-eval/RIDE/nuttx.rapp | 30 ++++++++++++------------ configs/stm3210e-eval/RIDE/nuttx.rdb | Bin 63488 -> 66560 bytes 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/arch/arm/include/arch.h b/arch/arm/include/arch.h index 88c0706db8..426f4b9599 100644 --- a/arch/arm/include/arch.h +++ b/arch/arm/include/arch.h @@ -44,10 +44,14 @@ * Included Files ****************************************************************************/ +#include + /**************************************************************************** * Definitions ****************************************************************************/ +#ifdef CONFIG_PIC + /* This identifies the register the is used by the processor as the PIC base * register. It is usually r9 or r10 */ @@ -82,6 +86,7 @@ do { \ ); \ } while (0) +#endif /**************************************************************************** * Inline functions diff --git a/configs/stm3210e-eval/README.txt b/configs/stm3210e-eval/README.txt index 0a2cc0b1a1..37a2c21489 100755 --- a/configs/stm3210e-eval/README.txt +++ b/configs/stm3210e-eval/README.txt @@ -95,7 +95,9 @@ IDEs on the command line. Startup files will probably cause you some headaches. The NuttX startup file - is arch/arm/src/stm32/stm32_vectors.S + is arch/arm/src/stm32/stm32_vectors.S. With RIDE, I have to build NuttX + one time from the Cygwin command line in order to obtain the pre-built + startup object needed by RIDE. NuttX buildroot Toolchain ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -291,10 +293,10 @@ STM3210E-EVAL-specific Configuration Options CONFIG_STM32_TIM3_FULL_REMAP CONFIG_STM32_TIM3_PARTIAL_REMAP CONFIG_STM32_TIM4_REMAP - CONFIG_STM32_USART1_REMAP - CONFIG_STM32_USART2_REMAP - CONFIG_STM32_USART3_FULL_REMAP - CONFIG_STM32_USART3_PARTIAL_REMAP + CONFIG_STM32_USART1_REMAP + CONFIG_STM32_USART2_REMAP + CONFIG_STM32_USART3_FULL_REMAP + CONFIG_STM32_USART3_PARTIAL_REMAP CONFIG_STM32_SPI1_REMAP CONFIG_STM32_SPI3_REMAP CONFIG_STM32_I2C1_REMAP diff --git a/configs/stm3210e-eval/RIDE/nuttx.dbi b/configs/stm3210e-eval/RIDE/nuttx.dbi index 76dbcbc6ae..5b4cf3fca9 100755 --- a/configs/stm3210e-eval/RIDE/nuttx.dbi +++ b/configs/stm3210e-eval/RIDE/nuttx.dbi @@ -18,3 +18,5 @@ Explore=No Startup=1 StartupSymb=main ToolName=RLINK_CORTEX +[SimFile] +path=C:\Program Files\Raisonance\Ride\sim\ARM\STM32F101VET6.sim diff --git a/configs/stm3210e-eval/RIDE/nuttx.elf.ld b/configs/stm3210e-eval/RIDE/nuttx.elf.ld index cd09bda625..f3cbabde79 100755 --- a/configs/stm3210e-eval/RIDE/nuttx.elf.ld +++ b/configs/stm3210e-eval/RIDE/nuttx.elf.ld @@ -1,9 +1,8 @@ SEARCH_DIR(".") SEARCH_DIR("C:\Program Files\Raisonance\Ride\Lib\ARM") -STARTUP("C:\Program Files\Raisonance\Ride\lib\ARM\crt0_STM32x_HD.o") +STARTUP("C:\cygwin\home\Owner\projects\nuttx\nuttx\arch\arm\src\stm32_vectors.o") INPUT("C:\cygwin\home\Owner\projects\nuttx\nuttx\configs\stm3210e-eval\RIDE\stm32_timerisr.o") -INPUT("C:\cygwin\home\Owner\projects\nuttx\nuttx\configs\stm3210e-eval\RIDE\stm32_vectors.o") INPUT("C:\cygwin\home\Owner\projects\nuttx\nuttx\configs\stm3210e-eval\RIDE\stm32_gpio.o") INPUT("C:\cygwin\home\Owner\projects\nuttx\nuttx\configs\stm3210e-eval\RIDE\stm32_irq.o") INPUT("C:\cygwin\home\Owner\projects\nuttx\nuttx\configs\stm3210e-eval\RIDE\stm32_lowputc.o") diff --git a/configs/stm3210e-eval/RIDE/nuttx.rapp b/configs/stm3210e-eval/RIDE/nuttx.rapp index e47cb3c8b8..d4fdfd6d45 100755 --- a/configs/stm3210e-eval/RIDE/nuttx.rapp +++ b/configs/stm3210e-eval/RIDE/nuttx.rapp @@ -1,7 +1,6 @@ - @@ -13,35 +12,36 @@
- +
- -
- -
- -
- - -
-
-
+
+ +
+ + +
+
+ + +
+
- +
- +
+
diff --git a/configs/stm3210e-eval/RIDE/nuttx.rdb b/configs/stm3210e-eval/RIDE/nuttx.rdb index ce32c4f61cafa85d6b11fcd1baa85e1457391ccf..1bea5c43d1122d1eb73097a053bead25c4962988 100755 GIT binary patch literal 66560 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 HuK)iBpPrHX delta 7065 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 K7_&yWY5hOT?Tk+V