diff options
Diffstat (limited to 'nuttx/arch')
-rw-r--r-- | nuttx/arch/arm/Kconfig | 4 | ||||
-rw-r--r-- | nuttx/arch/arm/src/sam3u/Kconfig | 93 | ||||
-rw-r--r-- | nuttx/arch/arm/src/sam3u/sam3u_allocateheap.c | 122 | ||||
-rw-r--r-- | nuttx/arch/arm/src/sam3u/sam3u_internal.h | 79 | ||||
-rw-r--r-- | nuttx/arch/arm/src/sam3u/sam3u_mpuinit.c | 17 |
5 files changed, 266 insertions, 49 deletions
diff --git a/nuttx/arch/arm/Kconfig b/nuttx/arch/arm/Kconfig index 72526654b..683e23f36 100644 --- a/nuttx/arch/arm/Kconfig +++ b/nuttx/arch/arm/Kconfig @@ -104,11 +104,11 @@ config ARCH_CHIP_NUC1XX NPX LPC43XX architectures (ARM Cortex-M4). config ARCH_CHIP_SAM3U - bool "Atmel AT91SAM3U" + bool "Atmel AT91SAM3" select ARCH_CORTEXM3 select ARCH_HAVE_MPU ---help--- - Atmel AT91SAM3U architectures (ARM Cortex-M3) + Atmel AT91SAM3 architectures (ARM Cortex-M3) config ARCH_CHIP_STM32 bool "STMicro STM32" diff --git a/nuttx/arch/arm/src/sam3u/Kconfig b/nuttx/arch/arm/src/sam3u/Kconfig index b84565547..473e1d9a4 100644 --- a/nuttx/arch/arm/src/sam3u/Kconfig +++ b/nuttx/arch/arm/src/sam3u/Kconfig @@ -3,4 +3,95 @@ # see misc/tools/kconfig-language.txt. # -comment "AT91SAM3U Configuration Options" +comment "AT91SAM3 Configuration Options" + +choice + prompt "AT91SAM3 Chip Selection" + default ARCH_CHIP_AT91SAM3U4E + depends on ARCH_CHIP_SAM3U + +config ARCH_CHIP_AT91SAM3U4E + bool "AT91SAM3U4E" + +endchoice + +menu "AT91SAM3 Peripheral Support" + +config SAM3U_DMA + bool "DMA" + default n + +config SAM3U_NAND + bool "NAND support" + default n + +config SAM3U_HSMCI + bool "HSMCI" + default n + +config SAM3U_UART + bool "UART" + default y + select ARCH_HAVE_UART + +config SAM3U_USART0 + bool "USART0" + default n + +config SAM3U_USART1 + bool "USART1" + default n + +config SAM3U_USART2 + bool "USART2" + default n + +config SAM3U_USART3 + bool "USART3" + default n + +endmenu + +menu "AT91SAM3 UART Configuration" + +config USART0_ISUART + bool "USART0 is a UART" + default y + depends on SAM3U_USART0 + select ARCH_HAVE_USART0 + +config USART1_ISUART + bool "USART1 is a UART" + default y + depends on SAM3U_USART1 + select ARCH_HAVE_USART1 + +config USART2_ISUART + bool "USART2 is a UART" + default n + depends on SAM3U_USART2 + select ARCH_HAVE_USART2 + +config USART3_ISUART + bool "USART3 is a UART" + default y + depends on SAM3U_USART3 + select ARCH_HAVE_USART2 + +endmenu + +menu "AT91SAM3 GPIO Interrupt Configuration" + +config GPIOA_IRQ + bool "GPIOA interrupts" + default n + +config GPIOB_IRQ + bool "GPIOB interrupts" + default n + +config GPIOC_IRQ + bool "GPIOC interrupts" + default n + +endmenu diff --git a/nuttx/arch/arm/src/sam3u/sam3u_allocateheap.c b/nuttx/arch/arm/src/sam3u/sam3u_allocateheap.c index 99e2d9e86..9ae97dfb4 100644 --- a/nuttx/arch/arm/src/sam3u/sam3u_allocateheap.c +++ b/nuttx/arch/arm/src/sam3u/sam3u_allocateheap.c @@ -78,6 +78,68 @@ # warning "CONFIG_DRAM_END is before end of SRAM0... not all of SRAM0 used" #endif +#ifdef CONFIG_MM_KERNEL_HEAPSIZE +# if CONFIG_MM_KERNEL_HEAPSIZE < (1 << 5) /* Kernel heap size < 2**5 */ +# define KHEAP_SIZE (1 << 4) /* Use size 2**4 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 6) /* Kernel heap size < 2**6 */ +# define KHEAP_SIZE (1 << 5) /* Use size 2**5 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 7) /* Kernel heap size < 2**7 */ +# define KHEAP_SIZE (1 << 6) /* Use size 2**6 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 8) /* Kernel heap size < 2**8 */ +# define KHEAP_SIZE (1 << 7) /* Use size 2**7 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 9) /* Kernel heap size < 2**9 */ +# define KHEAP_SIZE (1 << 8) /* Use size 2**8 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 10) /* Kernel heap size < 2**10 */ +# define KHEAP_SIZE (1 << 9) /* Use size 2**9 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 11) /* Kernel heap size < 2**11 */ +# define KHEAP_SIZE (1 << 10) /* Use size 2**10 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 12) /* Kernel heap size < 2**12 */ +# define KHEAP_SIZE (1 << 11) /* Use size 2**11 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 13) /* Kernel heap size < 2**13 */ +# define KHEAP_SIZE (1 << 12) /* Use size 2**12 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 14) /* Kernel heap size < 2**14 */ +# define KHEAP_SIZE (1 << 13) /* Use size 2**13 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 15) /* Kernel heap size < 2**15 */ +# define KHEAP_SIZE (1 << 14) /* Use size 2**14 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 16) /* Kernel heap size < 2**16 */ +# define KHEAP_SIZE (1 << 15) /* Use size 2**15 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 17) /* Kernel heap size < 2**17 */ +# define KHEAP_SIZE (1 << 16) /* Use size 2**16 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 18) /* Kernel heap size < 2**18 */ +# define KHEAP_SIZE (1 << 17) /* Use size 2**17 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 19) /* Kernel heap size < 2**19 */ +# define KHEAP_SIZE (1 << 18) /* Use size 2**18 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 20) /* Kernel heap size < 2**20 */ +# define KHEAP_SIZE (1 << 19) /* Use size 2**19 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 21) /* Kernel heap size < 2**21 */ +# define KHEAP_SIZE (1 << 20) /* Use size 2**20 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 22) /* Kernel heap size < 2**22 */ +# define KHEAP_SIZE (1 << 21) /* Use size 2**21 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 23) /* Kernel heap size < 2**23 */ +# define KHEAP_SIZE (1 << 22) /* Use size 2**22 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 24) /* Kernel heap size < 2**24 */ +# define KHEAP_SIZE (1 << 23) /* Use size 2**23 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 25) /* Kernel heap size < 2**25 */ +# define KHEAP_SIZE (1 << 24) /* Use size 2**24 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 26) /* Kernel heap size < 2**26 */ +# define KHEAP_SIZE (1 << 25) /* Use size 2**25 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 27) /* Kernel heap size < 2**27 */ +# define KHEAP_SIZE (1 << 26) /* Use size 2**26 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 28) /* Kernel heap size < 2**28 */ +# define KHEAP_SIZE (1 << 27) /* Use size 2**27 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 29) /* Kernel heap size < 2**29 */ +# define KHEAP_SIZE (1 << 28) /* Use size 2**28 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 30) /* Kernel heap size < 2**30 */ +# define KHEAP_SIZE (1 << 29) /* Use size 2**29 */ +# elif CONFIG_MM_KERNEL_HEAPSIZE < (1 << 31) /* Kernel heap size < 2**31 */ +# define KHEAP_SIZE (1 << 30) /* Use size 2**30 */ +# else +# define KHEAP_SIZE (1 << 31) /* Use size 2**31 */ +# endif + +# define KHEAP_MASK (KHEAP_SIZE - 1) +#endif + /**************************************************************************** * Private Data ****************************************************************************/ @@ -107,6 +169,24 @@ void up_allocate_heap(FAR void **heap_start, size_t *heap_size) { +#if defined(CONFIG_NUTTX_KERNEL) && defined(CONFIG_MM_KERNEL_HEAP) + uintptr_t kbase = ((uintptr_t)g_heapbase + KHEAP_MASK) & ~KHEAP_MASK; + uintptr_t ubase = kbase + KHEAP_SIZE; + size_t usize = CONFIG_DRAM_END - ubase; + + DEBUGASSERT(ubase < (uintptr_t)CONFIG_DRAM_END); + + /* Return the heap settings */ + + up_ledon(LED_HEAPALLOCATE); + *heap_start = (FAR void*)ubase; + *heap_size = usize; + + /* Allow access to the heap memory */ + + sam3u_mpu_uheap((uintptr_t)ubase, usize); +#else + size_t size = CONFIG_DRAM_END - g_heapbase; /* Return the heap settings */ @@ -115,11 +195,41 @@ void up_allocate_heap(FAR void **heap_start, size_t *heap_size) *heap_start = (FAR void*)g_heapbase; *heap_size = size; - /* Allow access to the heap memory */ + /* Allow user access to the user heap memory */ - sam3u_mpuheap((uintptr_t)g_heapbase, size); + sam3u_mpu_uheap((uintptr_t)g_heapbase, size); + +#endif } +/**************************************************************************** + * Name: up_allocate_kheap + * + * Description: + * For the kernel build (CONFIG_NUTTX_KERNEL=y) with both kernel- and + * user-space heaps (CONFIG_MM_KERNEL_HEAP=y), this function allocates + * (and protects) the kernel-space heap. + * + ****************************************************************************/ + +#if defined(CONFIG_NUTTX_KERNEL) && defined(CONFIG_MM_KERNEL_HEAP) +void up_allocate_kheap(FAR void **heap_start, size_t *heap_size) +{ + uintptr_t kbase = ((uintptr_t)g_heapbase + KHEAP_MASK) & ~KHEAP_MASK; + + DEBUGASSERT((kbase + KHEAP_SIZE) < (uintptr_t)CONFIG_DRAM_END); + + /* Return the heap settings */ + + *heap_start = (FAR void*)kbase; + *heap_size = KHEAP_SIZE; + + /* Prohibit user access to the kernel heap memory */ + + sam3u_mpu_kheap((uintptr_t)kbase, KHEAP_SIZE); +} +#endif + /************************************************************************ * Name: up_addregion * @@ -136,18 +246,18 @@ void up_addregion(void) kmm_addregion((FAR void*)SAM3U_INTSRAM1_BASE, CONFIG_SAM3U_SRAM1_SIZE); - /* Allow access to the heap memory */ + /* Allow user access to the heap memory */ - sam3u_mpuheap(SAM3U_INTSRAM1_BASE, CONFIG_SAM3U_SRAM1_SIZE); + sam3u_mpu_uheap(SAM3U_INTSRAM1_BASE, CONFIG_SAM3U_SRAM1_SIZE); /* Add the region */ #if CONFIG_MM_REGIONS > 2 kmm_addregion((FAR void*)SAM3U_NFCSRAM_BASE, CONFIG_SAM3U_NFCSRAM_SIZE); - /* Allow access to the heap memory */ + /* Allow user access to the heap memory */ - sam3u_mpuheap(SAM3U_NFCSRAM_BASE, CONFIG_SAM3U_NFCSRAM_SIZE); + sam3u_mpu_uheap(SAM3U_NFCSRAM_BASE, CONFIG_SAM3U_NFCSRAM_SIZE); #endif } #endif diff --git a/nuttx/arch/arm/src/sam3u/sam3u_internal.h b/nuttx/arch/arm/src/sam3u/sam3u_internal.h index d37968515..b0cf83cb0 100644 --- a/nuttx/arch/arm/src/sam3u/sam3u_internal.h +++ b/nuttx/arch/arm/src/sam3u/sam3u_internal.h @@ -1,7 +1,7 @@ /************************************************************************************ * arch/arm/src/sam3u/sam3u_internal.h * - * Copyright (C) 2009-2011 Gregory Nutt. All rights reserved. + * Copyright (C) 2009-2011, 2013 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <gnutt@nuttx.org> * * Redistribution and use in source and binary forms, with or without @@ -409,7 +409,8 @@ struct sam3u_dmaregs_s #undef EXTERN #if defined(__cplusplus) #define EXTERN extern "C" -extern "C" { +extern "C" +{ #else #define EXTERN extern #endif @@ -431,7 +432,7 @@ extern "C" { * ************************************************************************************/ -EXTERN void sam3u_clockconfig(void); +void sam3u_clockconfig(void); /************************************************************************************ * Name: sam3u_lowsetup @@ -443,7 +444,7 @@ EXTERN void sam3u_clockconfig(void); * ************************************************************************************/ -EXTERN void sam3u_lowsetup(void); +void sam3u_lowsetup(void); /**************************************************************************** * Name: sam3u_userspace @@ -457,7 +458,7 @@ EXTERN void sam3u_lowsetup(void); ****************************************************************************/ #ifdef CONFIG_NUTTX_KERNEL -EXTERN void sam3u_userspace(void); +void sam3u_userspace(void); #endif /**************************************************************************** @@ -470,23 +471,29 @@ EXTERN void sam3u_userspace(void); ****************************************************************************/ #ifdef CONFIG_NUTTX_KERNEL -EXTERN void sam3u_mpuinitialize(void); +void sam3u_mpuinitialize(void); #else # define sam3u_mpuinitialize() #endif /**************************************************************************** - * Name: sam3u_mpuheap + * Name: sam3u_mpu_uheap and sam3u_mpu_uheap * * Description: - * Map a heap region. + * Map a user- or kernel-heap region. * ****************************************************************************/ #ifdef CONFIG_NUTTX_KERNEL -EXTERN void sam3u_mpuheap(uintptr_t start, size_t size); +void sam3u_mpu_uheap(uintptr_t start, size_t size); +#else +# define sam3u_mpu_uheap(start,size) +#endif + +#if defined(CONFIG_NUTTX_KERNEL) && defined(CONFIG_MM_KERNEL_HEAP) +void sam3u_mpu_kheap(uintptr_t start, size_t size); #else -# define sam3u_mpuheap(start,size) +# define sam3u_mpu_kheap(start,size) #endif /************************************************************************************ @@ -498,7 +505,7 @@ EXTERN void sam3u_mpuheap(uintptr_t start, size_t size); ************************************************************************************/ #ifdef CONFIG_GPIO_IRQ -EXTERN void sam3u_gpioirqinitialize(void); +void sam3u_gpioirqinitialize(void); #else # define sam3u_gpioirqinitialize() #endif @@ -511,7 +518,7 @@ EXTERN void sam3u_gpioirqinitialize(void); * ************************************************************************************/ -EXTERN int sam3u_configgpio(uint16_t cfgset); +int sam3u_configgpio(uint16_t cfgset); /************************************************************************************ * Name: sam3u_gpiowrite @@ -521,7 +528,7 @@ EXTERN int sam3u_configgpio(uint16_t cfgset); * ************************************************************************************/ -EXTERN void sam3u_gpiowrite(uint16_t pinset, bool value); +void sam3u_gpiowrite(uint16_t pinset, bool value); /************************************************************************************ * Name: sam3u_gpioread @@ -531,7 +538,7 @@ EXTERN void sam3u_gpiowrite(uint16_t pinset, bool value); * ************************************************************************************/ -EXTERN bool sam3u_gpioread(uint16_t pinset); +bool sam3u_gpioread(uint16_t pinset); /************************************************************************************ * Name: sam3u_gpioirq @@ -542,7 +549,7 @@ EXTERN bool sam3u_gpioread(uint16_t pinset); ************************************************************************************/ #ifdef CONFIG_GPIO_IRQ -EXTERN void sam3u_gpioirq(uint16_t pinset); +void sam3u_gpioirq(uint16_t pinset); #else # define sam3u_gpioirq(pinset) #endif @@ -556,7 +563,7 @@ EXTERN void sam3u_gpioirq(uint16_t pinset); ************************************************************************************/ #ifdef CONFIG_GPIO_IRQ -EXTERN void sam3u_gpioirqenable(int irq); +void sam3u_gpioirqenable(int irq); #else # define sam3u_gpioirqenable(irq) #endif @@ -570,7 +577,7 @@ EXTERN void sam3u_gpioirqenable(int irq); ************************************************************************************/ #ifdef CONFIG_GPIO_IRQ -EXTERN void sam3u_gpioirqdisable(int irq); +void sam3u_gpioirqdisable(int irq); #else # define sam3u_gpioirqdisable(irq) #endif @@ -584,7 +591,7 @@ EXTERN void sam3u_gpioirqdisable(int irq); ************************************************************************************/ #ifdef CONFIG_DEBUG_GPIO -EXTERN int sam3u_dumpgpio(uint32_t pinset, const char *msg); +int sam3u_dumpgpio(uint32_t pinset, const char *msg); #else # define sam3u_dumpgpio(p,m) #endif @@ -609,7 +616,7 @@ EXTERN int sam3u_dumpgpio(uint32_t pinset, const char *msg); * ****************************************************************************/ -EXTERN DMA_HANDLE sam3u_dmachannel(uint32_t dmach_flags); +DMA_HANDLE sam3u_dmachannel(uint32_t dmach_flags); /**************************************************************************** * Name: sam3u_dmafree @@ -624,7 +631,7 @@ EXTERN DMA_HANDLE sam3u_dmachannel(uint32_t dmach_flags); * ****************************************************************************/ -EXTERN void sam3u_dmafree(DMA_HANDLE handle); +void sam3u_dmafree(DMA_HANDLE handle); /**************************************************************************** * Name: sam3u_dmatxsetup @@ -637,8 +644,8 @@ EXTERN void sam3u_dmafree(DMA_HANDLE handle); * ****************************************************************************/ -EXTERN int sam3u_dmatxsetup(DMA_HANDLE handle, uint32_t paddr, uint32_t maddr, - size_t nbytes); +int sam3u_dmatxsetup(DMA_HANDLE handle, uint32_t paddr, uint32_t maddr, + size_t nbytes); /**************************************************************************** * Name: sam3u_dmarxsetup @@ -651,8 +658,8 @@ EXTERN int sam3u_dmatxsetup(DMA_HANDLE handle, uint32_t paddr, uint32_t maddr, * ****************************************************************************/ -EXTERN int sam3u_dmarxsetup(DMA_HANDLE handle, uint32_t paddr, uint32_t maddr, - size_t nbytes); +int sam3u_dmarxsetup(DMA_HANDLE handle, uint32_t paddr, uint32_t maddr, + size_t nbytes); /**************************************************************************** * Name: sam3u_dmastart @@ -662,7 +669,7 @@ EXTERN int sam3u_dmarxsetup(DMA_HANDLE handle, uint32_t paddr, uint32_t maddr, * ****************************************************************************/ -EXTERN int sam3u_dmastart(DMA_HANDLE handle, dma_callback_t callback, void *arg); +int sam3u_dmastart(DMA_HANDLE handle, dma_callback_t callback, void *arg); /**************************************************************************** * Name: sam3u_dmastop @@ -674,7 +681,7 @@ EXTERN int sam3u_dmastart(DMA_HANDLE handle, dma_callback_t callback, void *arg) * ****************************************************************************/ -EXTERN void sam3u_dmastop(DMA_HANDLE handle); +void sam3u_dmastop(DMA_HANDLE handle); /**************************************************************************** * Name: sam3u_dmasample @@ -685,7 +692,7 @@ EXTERN void sam3u_dmastop(DMA_HANDLE handle); ****************************************************************************/ #ifdef CONFIG_DEBUG_DMA -EXTERN void sam3u_dmasample(DMA_HANDLE handle, struct sam3u_dmaregs_s *regs); +void sam3u_dmasample(DMA_HANDLE handle, struct sam3u_dmaregs_s *regs); #else # define sam3u_dmasample(handle,regs) #endif @@ -699,8 +706,8 @@ EXTERN void sam3u_dmasample(DMA_HANDLE handle, struct sam3u_dmaregs_s *regs); ****************************************************************************/ #ifdef CONFIG_DEBUG_DMA -EXTERN void sam3u_dmadump(DMA_HANDLE handle, const struct sam3u_dmaregs_s *regs, - const char *msg); +void sam3u_dmadump(DMA_HANDLE handle, const struct sam3u_dmaregs_s *regs, + const char *msg); #else # define sam3u_dmadump(handle,regs,msg) #endif @@ -720,7 +727,7 @@ EXTERN void sam3u_dmadump(DMA_HANDLE handle, const struct sam3u_dmaregs_s *regs, ****************************************************************************/ struct sdio_dev_s; /* See include/nuttx/sdio.h */ -EXTERN FAR struct sdio_dev_s *sdio_initialize(int slotno); +FAR struct sdio_dev_s *sdio_initialize(int slotno); /**************************************************************************** * Name: sdio_mediachange @@ -741,7 +748,7 @@ EXTERN FAR struct sdio_dev_s *sdio_initialize(int slotno); * ****************************************************************************/ -EXTERN void sdio_mediachange(FAR struct sdio_dev_s *dev, bool cardinslot); +void sdio_mediachange(FAR struct sdio_dev_s *dev, bool cardinslot); /**************************************************************************** * Name: sdio_wrprotect @@ -759,7 +766,7 @@ EXTERN void sdio_mediachange(FAR struct sdio_dev_s *dev, bool cardinslot); * ****************************************************************************/ -EXTERN void sdio_wrprotect(FAR struct sdio_dev_s *dev, bool wrprotect); +void sdio_wrprotect(FAR struct sdio_dev_s *dev, bool wrprotect); /**************************************************************************** * Name: sam3u_spicsnumber, sam3u_spiselect, sam3u_spistatus, and @@ -825,7 +832,7 @@ enum spi_dev_e; * ****************************************************************************/ -EXTERN int sam3u_spicsnumber(enum spi_dev_e devid); +int sam3u_spicsnumber(enum spi_dev_e devid); /**************************************************************************** * Name: sam3u_spiselect @@ -853,7 +860,7 @@ EXTERN int sam3u_spicsnumber(enum spi_dev_e devid); * ****************************************************************************/ -EXTERN void sam3u_spiselect(enum spi_dev_e devid, bool selected); +void sam3u_spiselect(enum spi_dev_e devid, bool selected); /**************************************************************************** * Name: sam3u_spistatus @@ -870,7 +877,7 @@ EXTERN void sam3u_spiselect(enum spi_dev_e devid, bool selected); * ****************************************************************************/ -EXTERN uint8_t sam3u_spistatus(FAR struct spi_dev_s *dev, enum spi_dev_e devid); +uint8_t sam3u_spistatus(FAR struct spi_dev_s *dev, enum spi_dev_e devid); /**************************************************************************** * Name: sam3u_spicmddata @@ -897,7 +904,7 @@ EXTERN uint8_t sam3u_spistatus(FAR struct spi_dev_s *dev, enum spi_dev_e devid); ****************************************************************************/ #ifdef CONFIG_SPI_CMDDATA -EXTERN int sam3u_spicmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd); +int sam3u_spicmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd); #endif #endif /* CONFIG_SAM3U_SPI */ diff --git a/nuttx/arch/arm/src/sam3u/sam3u_mpuinit.c b/nuttx/arch/arm/src/sam3u/sam3u_mpuinit.c index ef8553e9c..b2d3850ea 100644 --- a/nuttx/arch/arm/src/sam3u/sam3u_mpuinit.c +++ b/nuttx/arch/arm/src/sam3u/sam3u_mpuinit.c @@ -1,7 +1,7 @@ /**************************************************************************** * arch/arm/src/common/sam3u_mpuinit.c * - * Copyright (C) 2011 Gregory Nutt. All rights reserved. + * Copyright (C) 2011, 2013 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <gnutt@nuttx.org> * * Redistribution and use in source and binary forms, with or without @@ -102,17 +102,26 @@ void sam3u_mpuinitialize(void) } /**************************************************************************** - * Name: sam3u_mpuheap + * Name: sam3u_mpu_uheap and sam3u_mpu_uheap * * Description: - * Map a heap region (probably needs to extension to handle external SRAM). + * Map a user- or kernel-heap region. + * + * This logic may need an extension to handle external SRAM). * ****************************************************************************/ -void sam3u_mpuheap(uintptr_t start, size_t size) +void sam3u_mpu_uheap(uintptr_t start, size_t size) { mpu_userintsram(start, size); } +#ifdef CONFIG_MM_KERNEL_HEAP +void sam3u_mpu_kheap(uintptr_t start, size_t size) +{ + mpu_privintsram(start, size); +} +#endif + #endif /* CONFIG_NUTTX_KERNEL */ |