diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2013-03-04 14:53:41 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2013-03-04 14:53:41 +0000 |
commit | b95bfcced4a2ff3f119220f1b5ef988105881faf (patch) | |
tree | 6e43e92ae61401589fc0dfd394f17e4dcff001ac | |
parent | 613f281fc9e425b18eca5c9db333a62068a3cacc (diff) | |
download | px4-nuttx-b95bfcced4a2ff3f119220f1b5ef988105881faf.tar.gz px4-nuttx-b95bfcced4a2ff3f119220f1b5ef988105881faf.tar.bz2 px4-nuttx-b95bfcced4a2ff3f119220f1b5ef988105881faf.zip |
Bugs reported by Mike Smith fixed; ZKIT-ARM-1769 CAN support from Rashid Fatah
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5703 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r-- | nuttx/Kconfig | 7 | ||||
-rw-r--r-- | nuttx/arch/arm/src/armv6-m/Toolchain.defs | 14 | ||||
-rw-r--r-- | nuttx/arch/arm/src/stm32/stm32_i2c.c | 4 | ||||
-rw-r--r-- | nuttx/configs/zkit-arm-1769/src/Makefile | 4 | ||||
-rw-r--r-- | nuttx/configs/zkit-arm-1769/src/up_can.c | 150 |
5 files changed, 170 insertions, 9 deletions
diff --git a/nuttx/Kconfig b/nuttx/Kconfig index dc77e9612..01653aa81 100644 --- a/nuttx/Kconfig +++ b/nuttx/Kconfig @@ -417,6 +417,13 @@ config DEBUG_SPI ---help--- Enable I2C driver debug SYSLOG output (disabled by default) +config DEBUG_CAN + bool "Enable CAN Debug Output" + default n + depends on CAN + ---help--- + Enable CAN driver debug SYSLOG output (disabled by default) + config DEBUG_DMA bool "Enable DMA Debug Output" default n diff --git a/nuttx/arch/arm/src/armv6-m/Toolchain.defs b/nuttx/arch/arm/src/armv6-m/Toolchain.defs index a85a97a3b..7fc4bf9cd 100644 --- a/nuttx/arch/arm/src/armv6-m/Toolchain.defs +++ b/nuttx/arch/arm/src/armv6-m/Toolchain.defs @@ -93,7 +93,7 @@ ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),ATOLLIC) ifneq ($(CONFIG_WINDOWS_NATIVE),y) WINTOOL = y endif - ARCHCPUFLAGS = -mcpu=cortex_m0 -mthumb -march=armv6e-m -mfloat-abi=soft + ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -march=armv6-m -mfloat-abi=soft endif # NuttX buildroot under Linux or Cygwin @@ -110,7 +110,7 @@ endif ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),CODEREDL) CROSSDEV ?= arm-none-eabi- ARCROSSDEV ?= arm-none-eabi- - ARCHCPUFLAGS = -mcpu=cortex_m0 -mthumb -march=armv6-m -mfloat-abi=soft + ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -march=armv6-m -mfloat-abi=soft endif # Code Red RedSuite under Windows @@ -121,7 +121,7 @@ ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),CODEREDW) ifneq ($(CONFIG_WINDOWS_NATIVE),y) WINTOOL = y endif - ARCHCPUFLAGS = -mcpu=cortex_m0 -mthumb -march=armv6e-m -mfloat-abi=soft + ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -march=armv6-m -mfloat-abi=soft endif # CodeSourcery under Linux @@ -129,7 +129,7 @@ endif ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),CODESOURCERYL) CROSSDEV ?= arm-none-eabi- ARCROSSDEV ?= arm-none-eabi- - ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -mfloat-abi=soft + ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -march=armv6-m -mfloat-abi=soft MAXOPTIMIZATION = -O2 endif @@ -141,7 +141,7 @@ ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),CODESOURCERYW) ifneq ($(CONFIG_WINDOWS_NATIVE),y) WINTOOL = y endif - ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -mfloat-abi=soft + ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -march=armv6-m -mfloat-abi=soft endif # devkitARM under Windows @@ -152,7 +152,7 @@ ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),DEVKITARM) ifneq ($(CONFIG_WINDOWS_NATIVE),y) WINTOOL = y endif - ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -mfloat-abi=soft + ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -march=armv6-m -mfloat-abi=soft endif # Generic GNU EABI toolchain on OS X, Linux or any typical Posix system @@ -161,5 +161,5 @@ ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),GNU_EABI) CROSSDEV ?= arm-none-eabi- ARCROSSDEV ?= arm-none-eabi- MAXOPTIMIZATION = -O3 - ARCHCPUFLAGS = -mcpu=cortex_m0 -mthumb -march=armv6e-m -mfloat-abi=soft + ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -march=armv6-m -mfloat-abi=soft endif diff --git a/nuttx/arch/arm/src/stm32/stm32_i2c.c b/nuttx/arch/arm/src/stm32/stm32_i2c.c index ee1033635..c56870ee8 100644 --- a/nuttx/arch/arm/src/stm32/stm32_i2c.c +++ b/nuttx/arch/arm/src/stm32/stm32_i2c.c @@ -1989,8 +1989,8 @@ int up_i2creset(FAR struct i2c_dev_s * dev) struct stm32_i2c_priv_s * priv; unsigned int clock_count; unsigned int stretch_count; - unit32_ scl_gpio; - unit32_ sda_gpio; + uint32_t scl_gpio; + uint32_t sda_gpio; int ret = ERROR; ASSERT(dev); diff --git a/nuttx/configs/zkit-arm-1769/src/Makefile b/nuttx/configs/zkit-arm-1769/src/Makefile index f16354913..8eb8a4f67 100644 --- a/nuttx/configs/zkit-arm-1769/src/Makefile +++ b/nuttx/configs/zkit-arm-1769/src/Makefile @@ -51,6 +51,10 @@ ifeq ($(CONFIG_USBMSC),y) CSRCS += up_usbmsc.c endif +ifeq ($(CONFIG_CAN),y) +CSRCS += up_can.c +endif + AOBJS = $(ASRCS:.S=$(OBJEXT)) COBJS = $(CSRCS:.c=$(OBJEXT)) diff --git a/nuttx/configs/zkit-arm-1769/src/up_can.c b/nuttx/configs/zkit-arm-1769/src/up_can.c new file mode 100644 index 000000000..0f50cd146 --- /dev/null +++ b/nuttx/configs/zkit-arm-1769/src/up_can.c @@ -0,0 +1,150 @@ +/************************************************************************************ + * configs/zkit-arm-1769/src/up_can.c + * arch/arm/src/board/up_can.c + * + * Copyright (C) 2013 Zilogic Systems. All rights reserved. + * Author: Raashid Muhammed <code@zilogic.com> + * + * Based on configs/olimex-lpc1766stk/src/up_can.c + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************************************/ + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include <nuttx/config.h> + +#include <errno.h> +#include <debug.h> + +#include <nuttx/can.h> +#include <arch/board/board.h> + +#include "chip.h" +#include "up_arch.h" + +#include "lpc17_can.h" +#include "zkitarm_internal.h" + +#if defined(CONFIG_CAN) && (defined(CONFIG_LPC17_CAN1) || defined(CONFIG_LPC17_CAN2)) + +/************************************************************************************ + * Pre-processor Definitions + ************************************************************************************/ +/* Configuration ********************************************************************/ + +#if defined(CONFIG_LPC17_CAN1) && defined(CONFIG_LPC17_CAN2) +# warning "Both CAN1 and CAN2 are enabled. Assuming only CAN1." +# undef CONFIG_LPC17_CAN2 +#endif + +#ifdef CONFIG_LPC17_CAN2 +# warning "CAN2 is not connected on the ZKIT-ARM-1769" +#endif + +#ifdef CONFIG_LPC17_CAN1 +# define CAN_PORT 1 +#else +# define CAN_PORT 2 +#endif + +/* Debug ***************************************************************************/ +/* Non-standard debug that may be enabled just for testing CAN */ + +#ifdef CONFIG_DEBUG_CAN +# define candbg dbg +# define canvdbg vdbg +# define canlldbg lldbg +# define canllvdbg llvdbg +#else +# define candbg(x...) +# define canvdbg(x...) +# define canlldbg(x...) +# define canllvdbg(x...) +#endif + +/************************************************************************************ + * Private Functions + ************************************************************************************/ + +/************************************************************************************ + * Public Functions + ************************************************************************************/ + +/************************************************************************************ + * Name: can_devinit + * + * Description: + * All LPC17 architectures must provide the following interface to work with + * examples/can. + * + ************************************************************************************/ + +int can_devinit(void) +{ + static bool initialized = false; + struct can_dev_s *can; + int ret; + + /* Check if we have already initialized */ + + if (!initialized) + { + /* Call lpc17_caninitialize() to get an instance of the CAN interface */ + + can = lpc17_caninitialize(CAN_PORT); + if (can == NULL) + { + candbg("ERROR: Failed to get CAN interface\n"); + return -ENODEV; + } + + /* Register the CAN driver at "/dev/can0" */ + + ret = can_register("/dev/can0", can); + if (ret < 0) + { + candbg("ERROR: can_register failed: %d\n", ret); + return ret; + } + + /* Now we are initialized */ + + initialized = true; + } + + return OK; +} + +#endif /* CONFIG_CAN && (CONFIG_LPC17_CAN1 || CONFIG_LPC17_CAN2) */ |