25eb09c3bb
replace *(.init_array .init_array.*) with KEEP(*(.init_array .init_array.*)). The KEEP statement within a linker script will instruct the linker to keep the specified section, even if no symbols inside it are referenced. This statement is used within the SECTIONS section of the linker script. This becomes relevant when garbage collection is performed at link time, enabled by passing the --gc-sections switch to the linker. The KEEP statement instructs the linker to use the specified section as a root node when creating a dependency graph, looking for unused sections. Essentially forcing the section to be marked as used. Signed-off-by: cuiziwei <cuiziwei@xiaomi.com> |
||
---|---|---|
.. | ||
configs | ||
include | ||
scripts | ||
src | ||
Kconfig | ||
README.txt |
README ====== This port is for the FRDM-K28F development board that features the MK28FN2M0VMI15 MCU. The features of the FRDM-K28F board are: o Kinetis MK28FN2M0VMI15 MCU (ARM Cortex-M4 at150 MHz, 1 MB SRAM, 2 MB flash, HS and FS USB, 169 MAPBGA package). o Kinetis K20 MCU (K20DX128VFM5) based OpenSDA circuit. o Dual-role high-speed and full-speed USB interface with the micro-B USB connector via the high-speed switch. o One 256 Mbit (32 MB) on-board QuadSPI memory at 1.8 V. o One 128 Mbit (16 MB) on-board mobile SDRAM memory at 3.3 V. o Multiple independent voltage domains: VDD_CORE, VDD, VBAT, and VDDIO_E. o FlexIO socket which enables you to connect an optional TFT Proto 5" CAPACITIVE from MikroElektronika (5" display board with capacitive touch). o Easy access to the MCU input/output through Arduino R3-compatible I/O connectors to connect external add-on boards. o Flexible power supply option—OpenSDA v2.2 USB, Kinetis K28 USB, or an external source. o FXOS8700CQ—6-axis sensor with accelerometer and magnetometer. o RGB LED. o Two mechanical push-buttons for user input and one for the reset. o Programmable OpenSDA v2.2 debug circuit supporting the DAP-Link interface software which provides: - Mass-Storage Device (MSD) flash programming interface. - CMSIS-DAP debug interface over a driverless USB HID connection providing run-control debugging and compatibility with the IDE tools. - Virtual serial port interface. - Open-source CMSIS-DAP software project. Contents ======== o STATUS o Serial Console o LEDs and Buttons o Configurations STATUS ====== 2018-05-05: The basic NSH port appears to be fully functional. I do see one anomaly: There is a significant, long start up delay. This delay seems to be variable from immediate to several seconds. I have not studied the cause, but there are the symptoms: This debug on, I see this output after a reset: __start: Reset status: 00:00 NuttShell (NSH) NuttX-7.24 nsh> help help usage: help [-v] [<cmd>] [ cmp false mkdir rm true ? dirname free mh rmdir uname basename dd help mount set umount break df hexdump mv source unset cat echo kill mw sleep usleep cd exec ls ps test xd cp exit mb pwd time Builtin Apps: nsh> The delay occurs between the reset and the __start debug output. __start is the reset handler so this is very early in the logic. On a reset, it vectors to __start. That particular debug message is output after most low-level initialization has occurred. So the delay is something within the initialization sequence at the beginning of __start. My suspicion is the delays associated with the clock configuration. Serial Console ============== ----- --------------- ------------------------------- GPIO LPUART FUNCTION BOARD CONFIGURATION ----- --------------- ------------------------------- PTA1 LPUART0_RX PTA1 GPIO0 PTA15 LPUART0_RX PTA15 FXIO0_D21 PTB14 LPUART0_RX PTB14 PTB16 LPUART0_RX PTB16 SDRAM_D17 PTC25 LPUART0_RX PTC25 LPUART0_RX_TGTMCU PTD6 LPUART0_RX PTD6 Arduino_D17_ADC0_SE7b PTA2 LPUART0_TX PTA2 INT PTA14 LPUART0_TX PTA14 FXIO0_D20 PTB15 LPUART0_TX N/C PTB17 LPUART0_TX PTB17 SDRAM_D16 PTC24 LPUART0_TX PTC24 LPUART0_TX_TGTMCU PTD7 LPUART0_TX PTD7 SDRAM_CKE PTA3 LPUART0_RTS PTA3 PTA17 LPUART0_RTS PTA17 FXIO0_D23 PTB2 LPUART0_RTS PTB2 Arduino_D19_ADC0_SE12/I2C0_SCL/SDRAM_WE PTB12 LPUART0_RTS PTB12 Arduino_D5_FTM1_CH0/FTM0_CH4 PTC27 LPUART0_RTS PTC27 FXOS8700CQ_RESET PTD4 LPUART0_RTS PTD4 SDRAM_A10 PTA0 LPUART0_CTS PTA0 K28F_SWD_CLK PTA16 LPUART0_CTS PTA16 FXIO0_D22 PTB3 LPUART0_CTS PTB3 Arduino_D18_ADC0_SE13/I2C0_SDA/SDRAM_CS0 PTB13 LPUART0_CTS PTB13 Arduino_D6_FTM1_CH1/FTM0_CH5 PTC26 LPUART0_CTS PTC26 FXOS8700CQ_INT PTD5 LPUART0_CTS PTD5 SDRAM_A9 ----- --------------- ------------------------------- PTD8 LPUART1_RX PTD8 FXIO0_D24 PTC3 LPUART1_RX PTC3 CLKOUT PTE1 LPUART1_RX PTE1 QSPIA0_SCLK PTC4 LPUART1_TX PTC4 SDRAM_A19 PTD9 LPUART1_TX PTD9 FXIO0_D25 PTE0 LPUART1_TX PTE0 QSPIA0_DATA3 PTD10 LPUART1_RTS PTD10 FXIO0_D26 PTC1 LPUART1_RTS PTC1 SDRAM_A21 PTE3 LPUART1_RTS PTE3 QSPIA0_DATA2 PTC2 LPUART1_CTS PTC1 SDRAM_A21 PTD11 LPUART1_CTS PTD11 FXIO0_D27 PTE2 LPUART1_CTS PTE2 QSPIA0_DATA0 ----- --------------- ------------------------------- PTA25 LPUART2_RX PTA25 SDHC0_D0/Arduino_D0_LPUART2_RX PTD2 LPUART2_RX PTD2 SDRAM_A12 PTE13 LPUART2_RX N/C PTE17 LPUART2_RX N/C PTA24 LPUART2_TX PTA24 SDHC0_D1/Arduino_D1_LPUART2_TX PTD3 LPUART2_TX PTD3 SDRAM_A11 PTE12 LPUART2_TX PTE12 I2S0_TX_BCLK PTE16 LPUART2_TX N/C PTD0 LPUART2_RTS PTD0 Button_LLWU_P12 PTA27 LPUART2_RTS PTA27 SDHC0_CMD PTE19 LPUART2_RTS N/C PTA26 LPUART2_CTS PTA26 SDHC0_DCLK PTD1 LPUART2_CTS PTD1 Arduino_D16_ADC0_SE5b PTE18 LPUART2_CTS N/C ----- --------------- ------------------------------- PTA29 LPUART3_RX PTA29 SDHC0_D2 PTB10 LPUART3_RX PTB10 SDRAM_D19 PTC16 LPUART3_RX PTC16 SDRAM_DQM2 PTE5 LPUART3_RX PTE5 QSPIA0_SS0/USB0_SOF_OUT PTA28 LPUART3_TX PTA28 SDHC0_D3 PTB11 LPUART3_TX PTB11 SDRAM_D18 PTC17 LPUART3_TX PTC17 SDRAM_DQM3 PTE4 LPUART3_TX PTE4 QSPIA0_DATA1 PTB8 LPUART3_RTS PTB8 SDRAM_D21 PTA31 LPUART3_RTS PTA31 PTC18 LPUART3_RTS PTC18 Arduino_D7 PTE7 LPUART3_RTS PTE7 I2S0_RXD0/LEDRGB_GREEN PTA30 LPUART3_CTS PTA30 PTB9 LPUART3_CTS PTB9 SDRAM_D20 PTC19 LPUART3_CTS PTC19 Arduino_D8 PTE6 LPUART3_CTS PTE6 I2S0_MCK/LEDRGB_RED ----- --------------- ------------------------------- PTA21 LPUART4_RX PTA21 TE/FXIO0_D9 PTC14 LPUART4_RX PTC14 SDRAM_D25 PTE21 LPUART4_RX N/C PTA20 LPUART4_TX PTA20 RD/FXIO0_D8 PTC15 LPUART4_TX PTC15 SDRAM_D24 PTE20 LPUART4_TX N/C PTA23 LPUART4_RTS PTA23 WR/FXIO0_D7 PTC12 LPUART4_RTS PTC12 SDRAM_D27 PTE23 LPUART4_RTS N/C PTA22 LPUART4_CTS PTA22 CS/FXIO0_D6 PTC13 LPUART4_CTS PTC13 SDRAM_D26 PTE22 LPUART4_CTS N/C ----- --------------- ------------------------------- Arduino RS-232 Shield --------------------- ----- --------------- ------------------------------- GPIO LPUART FUNCTION BOARD CONFIGURATION ----- --------------- ------------------------------- PTA25 LPUART2_RX PTA25 SDHC0_D0/Arduino_D0_LPUART2_RX PTA24 LPUART2_TX PTA24 SDHC0_D1/Arduino_D1_LPUART2_TX ----- --------------- ------------------------------- Note: PTA24 and PTA25 are shared between Micro SD Card circuit and Arduino connectors. Remove R106 and R107 or R94 and R11 as necessary to prevent contention. Virtual serial port ------------------- A serial port connection is available between the OpenSDA v2.2 MCU and pins PTC24 and PTC25 of the K28 MCU: ----- --------------- ------------------------------- GPIO LPUART FUNCTION BOARD CONFIGURATION ----- --------------- ------------------------------- PTC25 LPUART0_RX PTC25 LPUART0_RX_TGTMCU PTC24 LPUART0_TX PTC24 LPUART0_TX_TGTMCU ----- --------------- ------------------------------- Default Console --------------- Unless otherwise noted, LPUART0 (the virtual serial port) is the console used in all Freedom-K28F configurations. RGB LED ------- An RGB LED is connected through GPIO as shown below: LED K28 ------ ------------------------------------------------------- RED PTE6 GREEN PTE7 BLUE PTE8 If CONFIG_ARCH_LEDs is defined, then NuttX will control the LED on board the Freedom K28. Usage of these LEDs is defined in include/board.h and src/k28_leds.c. The following definitions describe how NuttX controls the LEDs: SYMBOL Meaning LED state RED GREEN BLUE ------------------- ----------------------- ----------------- LED_STARTED NuttX has been started OFF OFF OFF LED_HEAPALLOCATE Heap has been allocated OFF OFF ON LED_IRQSENABLED Interrupts enabled OFF OFF ON LED_STACKCREATED Idle stack created OFF ON OFF LED_INIRQ In an interrupt (no change) LED_SIGNAL In a signal handler (no change) LED_ASSERTION An assertion failed (no change) LED_PANIC The system has crashed FLASH OFF OFF LED_IDLE K28 is in sleep mode (Optional, not used) Buttons ------- Two push button switches, SW2 and SW3, are available on the FRDM-K28F board. SW2 is connected to PTA4 and SW3 is connected to PTD0. Beside the general purpose IO function, both SW2 and SW3 can be used as a low-leakage wakeup (LLWU) source. Switch GPIO Function --------- --------------------------------------------------------------- SW2 PTA4/NMI_B SW3 PTD0/LLWU_P12