diff --git a/arch/arm/src/nuc1xx/chip/nuc_gpio.h b/arch/arm/src/nuc1xx/chip/nuc_gpio.h index 5ad806ea18..4e2f2d7f74 100644 --- a/arch/arm/src/nuc1xx/chip/nuc_gpio.h +++ b/arch/arm/src/nuc1xx/chip/nuc_gpio.h @@ -426,7 +426,7 @@ #define GPIO_PMD_OPENDRAIN 2 /* Open drain output */ #define GPIO_PMD_BIDI 3 /* Quasi bi-directional */ -#define GPIO_PMD_SHIFT(n) ((n) << 1) /* Bits 2n-2n+_1: GPIOx Pin[n] mode control */ +#define GPIO_PMD_SHIFT(n) ((n) << 1) /* Bits 2n-2n+1: GPIOx Pin[n] mode control */ #define GPIO_PMD_MASK(n) (3 << GPIO_PMD_SHIFT(n)) # define GPIO_PMD(n,v) ((v) << GPIO_PMD_SHIFT(n)) diff --git a/arch/arm/src/nuc1xx/nuc_gpio.c b/arch/arm/src/nuc1xx/nuc_gpio.c index be59191570..1ba92a801f 100644 --- a/arch/arm/src/nuc1xx/nuc_gpio.c +++ b/arch/arm/src/nuc1xx/nuc_gpio.c @@ -101,7 +101,7 @@ int nuc_configgpio(gpio_cfgset_t cfgset) /* Set the the GPIO PMD register */ - regaddr = base + NUC_GPIOA_PMD_OFFSET; + regaddr = base + NUC_GPIO_PMD_OFFSET; regval = getreg32(regaddr); regval &= ~GPIO_PMD_MASK(pin); @@ -131,7 +131,7 @@ int nuc_configgpio(gpio_cfgset_t cfgset) /* Check if we need to disable the digital input path */ regaddr = base + NUC_GPIO_OFFD_OFFSET; - regval = getreg32(regaddr); + regval = getreg32(regaddr); regval &= ~GPIO_OFFD(pin); if ((cfgset & GPIO_ANALOG) != 0) @@ -144,7 +144,7 @@ int nuc_configgpio(gpio_cfgset_t cfgset) /* Check if we need to enable debouncing */ regaddr = base + NUC_GPIO_DBEN_OFFSET; - regval = getreg32(regaddr); + regval = getreg32(regaddr); regval &= ~GPIO_DBEN(pin); if ((cfgset & GPIO_DEBOUNCE) != 0) @@ -174,24 +174,24 @@ int nuc_configgpio(gpio_cfgset_t cfgset) case GPIO_INTERRUPT_FALLING_EDGE: isrc |= GPIO_ISRC(pin); - ien |= GPIO_IF_EN(pin); + ien |= GPIO_IF_EN(pin); break; case GPIO_INTERRUPT_BOTH_EDGES: isrc |= GPIO_ISRC(pin); - ien |= (GPIO_IF_EN(pin) | GPIO_IR_EN(pin)); + ien |= (GPIO_IF_EN(pin) | GPIO_IR_EN(pin)); break; case GPIO_INTERRUPT_HIGH_LEVEL: isrc |= GPIO_ISRC(pin); - imd |= GPIO_IMD(pin); - ien |= GPIO_IR_EN(pin); + imd |= GPIO_IMD(pin); + ien |= GPIO_IR_EN(pin); break; case GPIO_INTERRUPT_LOW_LEVEL: isrc |= GPIO_ISRC(pin); - imd |= GPIO_IMD(pin); - ien |= GPIO_IF_EN(pin); + imd |= GPIO_IMD(pin); + ien |= GPIO_IF_EN(pin); break; default: @@ -201,6 +201,14 @@ int nuc_configgpio(gpio_cfgset_t cfgset) putreg32(ien, base + NUC_GPIO_IEN_OFFSET); putreg32(imd, base + NUC_GPIO_IMD_OFFSET); putreg32(isrc, base + NUC_GPIO_ISRC_OFFSET); + + /* If the pin is an output, set the initial output value */ + + if ((cfgset & GPIO_MODE_MASK) == GPIO_OUTPUT) + { + nuc_gpiowrite(cfgset, (cfgset & GPIO_OUTPUT_SET) != 0); + } + return 0; } diff --git a/configs/nutiny-nuc120/README.txt b/configs/nutiny-nuc120/README.txt index 69cf3c2e06..3333866db1 100644 --- a/configs/nutiny-nuc120/README.txt +++ b/configs/nutiny-nuc120/README.txt @@ -90,7 +90,7 @@ LEDs LED_SIGNAL In a signal handler LED might glow LED_ASSERTION An assertion failed LED ON while handling the assertion LED_PANIC The system has crashed LED Blinking at 2Hz - LED_IDLE NUC1XX is is sleep mode (Optional, not used) + LED_IDLE NUC1XX is in sleep mode (Optional, not used) Serial Console ============== diff --git a/configs/nutiny-nuc120/scripts/ld.script b/configs/nutiny-nuc120/scripts/ld.script index aed7e1b68e..a380ba6237 100644 --- a/configs/nutiny-nuc120/scripts/ld.script +++ b/configs/nutiny-nuc120/scripts/ld.script @@ -44,7 +44,9 @@ MEMORY } OUTPUT_ARCH(arm) +EXTERN(_vectors) ENTRY(_stext) + SECTIONS { .text : { diff --git a/configs/nutiny-nuc120/src/nutiny-nuc120.h b/configs/nutiny-nuc120/src/nutiny-nuc120.h index 55744fb61b..dcc2a95904 100644 --- a/configs/nutiny-nuc120/src/nutiny-nuc120.h +++ b/configs/nutiny-nuc120/src/nutiny-nuc120.h @@ -68,10 +68,10 @@ * LED_SIGNAL In a signal handler LED might glow * LED_ASSERTION An assertion failed LED ON while handling the assertion * LED_PANIC The system has crashed LED Blinking at 2Hz - * LED_IDLE NUC1XX is is sleep mode (Optional, not used) + * LED_IDLE NUC1XX is in sleep mode (Optional, not used) */ -#define GPIO_LED (GPIO_OUTPUT | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN8) +#define GPIO_LED (GPIO_OUTPUT | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN0) /* Button definitions ***************************************************************/ /* The NuTiny has no buttons */