Created
August 30, 2017 01:57
-
-
Save JarrettR/9663952a78260cf8c00b275b950df9a1 to your computer and use it in GitHub Desktop.
git diff imx6sx_ai_m4/ imx6sx_sdb_m4/ > bsp.diff
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/imx6sx_ai_m4/board.h b/imx6sx_sdb_m4/board.h | |
index 8801729..f259fb1 100644 | |
--- a/imx6sx_ai_m4/board.h | |
+++ b/imx6sx_sdb_m4/board.h | |
@@ -38,7 +38,7 @@ | |
#include "clock_freq.h" | |
/* The board name */ | |
-#define BOARD_NAME "IMX6SX_AI_M4" | |
+#define BOARD_NAME "IMX6SX_SDB_M4" | |
#define BOARD_DOMAIN_ID (1) | |
/* ADC information for this board */ | |
@@ -59,19 +59,21 @@ | |
#define BOARD_SEMA4_BASEADDR SEMA4 | |
#define BOARD_SEMA4_IRQ_NUM SEMA4_CP1_IRQn | |
#define BOARD_SEMA4_HANDLER SEMA4_CP1_Handler | |
+#define BOARD_SEMA4_SHARE_MEM_NUM (15) | |
/* SENSOR information for this board */ | |
-#define BOARD_SENSOR_MMA8451Q_INT (0x1) | |
-#define BOARD_AI_SENSOR_MAG3110 (1) | |
+#define BOARD_SENSOR_MMA8451Q_INT (0x0) | |
/* GPIO information for this board */ | |
-#define BOARD_GPIO_LED_RDC_PDAP rdcPdapGpio1 | |
-#define BOARD_GPIO_LED_CONFIG (&gpioLed) | |
+#define BOARD_GPIO_KEY_RDC_PDAP rdcPdapGpio1 | |
+#define BOARD_GPIO_KEY_CONFIG (&gpioKeyFunc1) | |
+#define BOARD_GPIO_KEY_IRQ_NUM GPIO1_INT31_16_IRQn | |
+#define BOARD_GPIO_KEY_HANDLER GPIO1_Combined_16_31_Handler | |
-#define BOARD_GPIO_SENSOR_ACC_RDC_PDAP rdcPdapGpio3 | |
+#define BOARD_GPIO_SENSOR_ACC_RDC_PDAP rdcPdapGpio6 | |
#define BOARD_GPIO_SENSOR_ACC_CONFIG (&gpioSensorAccInt) | |
-#define BOARD_GPIO_SENSOR_ACC_IRQ_NUM GPIO3_INT31_16_IRQn | |
-#define BOARD_GPIO_SENSOR_ACC_HANDLER GPIO3_Combined_16_31_Handler | |
+#define BOARD_GPIO_SENSOR_ACC_IRQ_NUM GPIO6_INT15_0_IRQn | |
+#define BOARD_GPIO_SENSOR_ACC_HANDLER GPIO6_Combined_0_15_Handler | |
#define BOARD_GPIO_SENSOR_MAG_ALS_RDC_PDAP rdcPdapGpio6 | |
#define BOARD_GPIO_SENSOR_MAG_ALS_CONFIG (&gpioSensorMagAlsInt) | |
@@ -123,7 +125,7 @@ | |
#define BOARD_I2C_HANDLER I2C3_Handler | |
#define BOARD_I2C_MMA8451Q_ADDR (0x1C) | |
#define BOARD_I2C_MAG3110_ADDR (0x0E) | |
-#define BOARD_I2C_MAX7310_ADDR (0x32) | |
+#define BOARD_I2C_ISL29023_ADDR (0x44) | |
/* EPIT common information for this board */ | |
#define BOARD_EPIT_CCM_ROOT ccmRootPerclkClkSel | |
diff --git a/imx6sx_ai_m4/demo_apps/blinking_imx_demo/hardware_init.c b/imx6sx_sdb_m4/demo_apps/blinking_imx_demo/hardware_init.c | |
index edcd87c..5f86b64 100644 | |
--- a/imx6sx_ai_m4/demo_apps/blinking_imx_demo/hardware_init.c | |
+++ b/imx6sx_sdb_m4/demo_apps/blinking_imx_demo/hardware_init.c | |
@@ -43,6 +43,9 @@ void hardware_init(void) | |
/* In this example, we need to grasp board EPIT exclusively */ | |
RDC_SetPdapAccess(RDC, BOARD_EPITA_RDC_PDAP, 3 << (BOARD_DOMAIN_ID * 2), false, false); | |
+ /* In this demo, we need to share board GPIO without RDC SEMAPHORE */ | |
+ RDC_SetPdapAccess(RDC, BOARD_GPIO_KEY_RDC_PDAP, 0xFF, false, false); | |
+ | |
/* Select EPIT clock derived from OSC 24M */ | |
CCM_SetRootMux(CCM, BOARD_EPIT_CCM_ROOT, ccmRootmuxPerclkClkOsc24m); | |
/* Set relevant divider = 1. */ | |
@@ -52,7 +55,7 @@ void hardware_init(void) | |
CCM_ControlGate(CCM, BOARD_EPITA_CCM_CCGR, ccmClockNeededAll); | |
/* Configure gpio pin IOMUX */ | |
- configure_gpio_pin(BOARD_GPIO_LED_CONFIG); | |
+ configure_gpio_pin(BOARD_GPIO_KEY_CONFIG); | |
} | |
/******************************************************************************* | |
diff --git a/imx6sx_ai_m4/demo_apps/hello_world_qspi/armgcc/CMakeLists.txt b/imx6sx_sdb_m4/demo_apps/hello_world_qspi/armgcc/CMakeLists.txt | |
index def8c20..d04ec88 100644 | |
--- a/imx6sx_ai_m4/demo_apps/hello_world_qspi/armgcc/CMakeLists.txt | |
+++ b/imx6sx_sdb_m4/demo_apps/hello_world_qspi/armgcc/CMakeLists.txt | |
@@ -22,10 +22,10 @@ SET(CMAKE_EXECUTABLE_LIBRARY_SUFFIX) | |
SET(ProjDirPath ${CMAKE_CURRENT_SOURCE_DIR}) | |
# DEBUG LINK FILE | |
-set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -T${ProjDirPath}/../../../../../platform/devices/MCIMX6X/linker/gcc/MCIMX6X_M4_qspi1b.ld -static") | |
+set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -T${ProjDirPath}/../../../../../platform/devices/MCIMX6X/linker/gcc/MCIMX6X_M4_qspi2b.ld -static") | |
# RELEASE LINK FILE | |
-set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -T${ProjDirPath}/../../../../../platform/devices/MCIMX6X/linker/gcc/MCIMX6X_M4_qspi1b.ld -static") | |
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -T${ProjDirPath}/../../../../../platform/devices/MCIMX6X/linker/gcc/MCIMX6X_M4_qspi2b.ld -static") | |
# DEBUG ASM FLAGS | |
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mapcs -std=gnu99") | |
diff --git a/imx6sx_ai_m4/demo_apps/hello_world_qspi/hardware_init.c b/imx6sx_sdb_m4/demo_apps/hello_world_qspi/hardware_init.c | |
index 9e02123..8d55135 100644 | |
--- a/imx6sx_ai_m4/demo_apps/hello_world_qspi/hardware_init.c | |
+++ b/imx6sx_sdb_m4/demo_apps/hello_world_qspi/hardware_init.c | |
@@ -51,7 +51,7 @@ void RDC_memory_init(void) | |
end = ((uint32_t)__FLASH_END + 0xFFF) & 0xFFFFF000; | |
#endif | |
- RDC_SetMrAccess(RDC, rdcMrQspi1, start, end, (3 << (BOARD_DOMAIN_ID * 2)), true, false); | |
+ RDC_SetMrAccess(RDC, rdcMrQspi2, start, end, (3 << (BOARD_DOMAIN_ID * 2)), true, false); | |
} | |
void hardware_init(void) | |
diff --git a/imx6sx_ai_m4/demo_apps/low_power_imx6sx/can_wakeup/receiver_qspi/armgcc/CMakeLists.txt b/imx6sx_sdb_m4/demo_apps/low_power_imx6sx/can_wakeup/receiver_qspi/armgcc/CMakeLists.txt | |
index afe56c1..d9a7fc8 100644 | |
--- a/imx6sx_ai_m4/demo_apps/low_power_imx6sx/can_wakeup/receiver_qspi/armgcc/CMakeLists.txt | |
+++ b/imx6sx_sdb_m4/demo_apps/low_power_imx6sx/can_wakeup/receiver_qspi/armgcc/CMakeLists.txt | |
@@ -22,10 +22,10 @@ SET(CMAKE_EXECUTABLE_LIBRARY_SUFFIX) | |
SET(ProjDirPath ${CMAKE_CURRENT_SOURCE_DIR}) | |
# DEBUG LINK FILE | |
-set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -T${ProjDirPath}/../../../common/linker/gcc/MCIMX6X_M4_qspi1b_lowpower.ld -static") | |
+set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -T${ProjDirPath}/../../../common/linker/gcc/MCIMX6X_M4_qspi2b_lowpower.ld -static") | |
# RELEASE LINK FILE | |
-set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -T${ProjDirPath}/../../../common/linker/gcc/MCIMX6X_M4_qspi1b_lowpower.ld -static") | |
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -T${ProjDirPath}/../../../common/linker/gcc/MCIMX6X_M4_qspi2b_lowpower.ld -static") | |
# DEBUG ASM FLAGS | |
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mapcs -std=gnu99") | |
@@ -94,8 +94,6 @@ ADD_EXECUTABLE(can_wakeup_rx | |
"${ProjDirPath}/../../../../../../../platform/devices/MCIMX6X/startup/gcc/startup_MCIMX6X_M4.S" | |
"${ProjDirPath}/../../../../../../../rtos/FreeRTOS/Source/portable/MemMang/heap_2.c" | |
"${ProjDirPath}/../FreeRTOSConfig.h" | |
- "${ProjDirPath}/../../../../../../../platform/drivers/src/i2c_imx.c" | |
- "${ProjDirPath}/../../../../../../../platform/drivers/inc/i2c_imx.h" | |
"${ProjDirPath}/../main.c" | |
"${ProjDirPath}/../../../common/lpm_mcore.c" | |
"${ProjDirPath}/../../../common/lpm_mcore.h" | |
diff --git a/imx6sx_ai_m4/demo_apps/low_power_imx6sx/can_wakeup/receiver_qspi/hardware_init.c b/imx6sx_sdb_m4/demo_apps/low_power_imx6sx/can_wakeup/receiver_qspi/hardware_init.c | |
index 469973c..8aa02ed 100644 | |
--- a/imx6sx_ai_m4/demo_apps/low_power_imx6sx/can_wakeup/receiver_qspi/hardware_init.c | |
+++ b/imx6sx_sdb_m4/demo_apps/low_power_imx6sx/can_wakeup/receiver_qspi/hardware_init.c | |
@@ -30,26 +30,6 @@ | |
#include "board.h" | |
#include "pin_mux.h" | |
-#include "i2c_imx.h" | |
- | |
-/******************************************************************************* | |
- * Definitions | |
- ******************************************************************************/ | |
-/*! @brief MAG3110 Registers address definition. */ | |
-#define MAX7310_INTPUT_PORT (0x00) | |
-#define MAX7310_OUTPUT_PORT (0x01) | |
-#define MAX7310_POLARITY_INVERSION (0x02) | |
-#define MAX7310_CONFIGURATION (0x03) | |
-#define MAX7310_TIMEOUT (0x04) | |
- | |
-/*! @brief i2c send data in polling mode as master. */ | |
-static bool I2C_MasterSendDataPolling(I2C_Type *base, | |
- const uint8_t *cmdBuff, | |
- uint32_t cmdSize, | |
- const uint8_t *txBuff, | |
- uint32_t txSize); | |
-/*! @brief wake up the can transceiver. */ | |
-static void FLEXCAN_WakeupTransceiver(void); | |
void hardware_init(void) | |
{ | |
@@ -83,128 +63,8 @@ void hardware_init(void) | |
/* FLEXCAN Pin setting */ | |
configure_flexcan_pins(BOARD_FLEXCAN_BASEADDR); | |
- | |
- /* Select I2C clock derived from OSC clock(24M) */ | |
- CCM_SetRootMux(CCM, BOARD_I2C_CCM_ROOT, ccmRootmuxPerclkClkOsc24m); | |
- /* Set relevant divider = 1. */ | |
- CCM_SetRootDivider(CCM, BOARD_I2C_CCM_DIV, 0); | |
- | |
- /* Enable I2C3 clock */ | |
- CCM_ControlGate(CCM, BOARD_I2C_CCM_CCGR, ccmClockNeededAll); | |
- | |
- /* I2C Pin setting */ | |
- configure_i2c_pins(BOARD_I2C_BASEADDR); | |
- | |
- /* In this example, we need to grasp I2C exclusively to wake up can transceiver first*/ | |
- RDC_SetPdapAccess(RDC, BOARD_I2C_RDC_PDAP, 3 <<(BOARD_DOMAIN_ID * 2), false, false); | |
- | |
- /* wake up the can transceiver */ | |
- FLEXCAN_WakeupTransceiver(); | |
- | |
- /* Then we should restore the i2c default PDAP setting */ | |
- RDC_SetPdapAccess(RDC, BOARD_I2C_RDC_PDAP, 0xFF, false, false); | |
-} | |
- | |
-static bool I2C_MasterSendDataPolling(I2C_Type *base, | |
- const uint8_t *cmdBuff, | |
- uint32_t cmdSize, | |
- const uint8_t *txBuff, | |
- uint32_t txSize) | |
-{ | |
- if (I2C_GetStatusFlag(base, i2cStatusBusBusy)) | |
- return false; | |
- | |
- /* Set I2C work under Tx mode */ | |
- I2C_SetDirMode(base, i2cDirectionTransmit); | |
- | |
- /* Switch to Master Mode and Send Start Signal. */ | |
- I2C_SetWorkMode(base, i2cModeMaster); | |
- | |
- /* Send first byte */ | |
- if (0 != cmdSize) | |
- { | |
- I2C_WriteByte(base, *cmdBuff++); | |
- cmdSize--; | |
- } | |
- else | |
- { | |
- I2C_WriteByte(base, *txBuff++); | |
- txSize--; | |
- } | |
- while (1) | |
- { | |
- /* Wait I2C transmission status flag assert. */ | |
- while (!I2C_GetStatusFlag(base, i2cStatusInterrupt)); | |
- | |
- /* Clear I2C transmission status flag. */ | |
- I2C_ClearStatusFlag(base, i2cStatusInterrupt); | |
- | |
- /* Transmit complete. */ | |
- if ((I2C_GetStatusFlag(base, i2cStatusReceivedAck)) || | |
- ((0 == txSize) && (0 == cmdSize))) | |
- { | |
- /* Switch to Slave mode and Generate a Stop Signal. */ | |
- I2C_SetWorkMode(base, i2cModeSlave); | |
- | |
- /* Switch back to Rx direction. */ | |
- I2C_SetDirMode(base, i2cDirectionReceive); | |
- | |
- /* Wait until bus idle. */ | |
- while (I2C_GetStatusFlag(base, i2cStatusBusBusy)); | |
- | |
- return true; | |
- } | |
- else | |
- { | |
- if (0 != cmdSize) | |
- { | |
- I2C_WriteByte(base, *cmdBuff++); | |
- cmdSize--; | |
- } | |
- else | |
- { | |
- I2C_WriteByte(base, *txBuff++); | |
- txSize--; | |
- } | |
- } | |
- } | |
} | |
-static void FLEXCAN_WakeupTransceiver(void) | |
-{ | |
- i2c_init_config_t i2cInitConfig = { | |
- .baudRate = 400000u, | |
- .slaveAddress = 0x00 | |
- }; | |
- uint8_t cmdBuffer[5]; | |
- uint8_t txBuffer[5]; | |
- i2cInitConfig.clockRate = get_i2c_clock_freq(BOARD_I2C_BASEADDR); | |
- /* Enable ii2c driver */ | |
- I2C_Init(BOARD_I2C_BASEADDR, &i2cInitConfig); | |
- /* Enable the I2C module */ | |
- I2C_Enable(BOARD_I2C_BASEADDR); | |
- | |
- /* Set can wake-up pin as output */ | |
- cmdBuffer[0] = BOARD_I2C_MAX7310_ADDR << 1; | |
- cmdBuffer[1] = MAX7310_CONFIGURATION; | |
- txBuffer[0] = 0x7F; | |
- I2C_MasterSendDataPolling(BOARD_I2C_BASEADDR, cmdBuffer, 2, txBuffer, 1); | |
- | |
- /* Output '1' to trigger transceiver wake-up */ | |
- cmdBuffer[0] = BOARD_I2C_MAX7310_ADDR << 1; | |
- cmdBuffer[1] = MAX7310_OUTPUT_PORT; | |
- txBuffer[0] = 0x80; | |
- I2C_MasterSendDataPolling(BOARD_I2C_BASEADDR, cmdBuffer, 2, txBuffer, 1); | |
- | |
- /* Output '0' to clear transceiver wake-up */ | |
- cmdBuffer[0] = BOARD_I2C_MAX7310_ADDR << 1; | |
- cmdBuffer[1] = MAX7310_OUTPUT_PORT; | |
- txBuffer[0] = 0x00; | |
- I2C_MasterSendDataPolling(BOARD_I2C_BASEADDR, cmdBuffer, 2, txBuffer, 1); | |
- | |
- /* deinit i2c3 */ | |
- I2C_Deinit(BOARD_I2C_BASEADDR); | |
-} | |
/******************************************************************************* | |
* EOF | |
******************************************************************************/ | |
diff --git a/imx6sx_ai_m4/demo_apps/low_power_imx6sx/can_wakeup/transmitter_qspi/armgcc/CMakeLists.txt b/imx6sx_sdb_m4/demo_apps/low_power_imx6sx/can_wakeup/transmitter_qspi/armgcc/CMakeLists.txt | |
index 659ecf4..9a493d2 100644 | |
--- a/imx6sx_ai_m4/demo_apps/low_power_imx6sx/can_wakeup/transmitter_qspi/armgcc/CMakeLists.txt | |
+++ b/imx6sx_sdb_m4/demo_apps/low_power_imx6sx/can_wakeup/transmitter_qspi/armgcc/CMakeLists.txt | |
@@ -22,10 +22,10 @@ SET(CMAKE_EXECUTABLE_LIBRARY_SUFFIX) | |
SET(ProjDirPath ${CMAKE_CURRENT_SOURCE_DIR}) | |
# DEBUG LINK FILE | |
-set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -T${ProjDirPath}/../../../../../../../platform/devices/MCIMX6X/linker/gcc/MCIMX6X_M4_qspi1b.ld -static") | |
+set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -T${ProjDirPath}/../../../../../../../platform/devices/MCIMX6X/linker/gcc/MCIMX6X_M4_qspi2b.ld -static") | |
# RELEASE LINK FILE | |
-set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -T${ProjDirPath}/../../../../../../../platform/devices/MCIMX6X/linker/gcc/MCIMX6X_M4_qspi1b.ld -static") | |
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -T${ProjDirPath}/../../../../../../../platform/devices/MCIMX6X/linker/gcc/MCIMX6X_M4_qspi2b.ld -static") | |
# DEBUG ASM FLAGS | |
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mapcs -std=gnu99") | |
@@ -94,8 +94,6 @@ ADD_EXECUTABLE(can_wakeup_tx | |
"${ProjDirPath}/../../../../../../../platform/devices/MCIMX6X/startup/gcc/startup_MCIMX6X_M4.S" | |
"${ProjDirPath}/../../../../../../../rtos/FreeRTOS/Source/portable/MemMang/heap_2.c" | |
"${ProjDirPath}/../FreeRTOSConfig.h" | |
- "${ProjDirPath}/../../../../../../../platform/drivers/src/i2c_imx.c" | |
- "${ProjDirPath}/../../../../../../../platform/drivers/inc/i2c_imx.h" | |
"${ProjDirPath}/../main.c" | |
"${ProjDirPath}/../../../../../../../platform/drivers/src/flexcan.c" | |
"${ProjDirPath}/../../../../../../../platform/drivers/inc/flexcan.h" | |
diff --git a/imx6sx_ai_m4/demo_apps/low_power_imx6sx/can_wakeup/transmitter_qspi/hardware_init.c b/imx6sx_sdb_m4/demo_apps/low_power_imx6sx/can_wakeup/transmitter_qspi/hardware_init.c | |
index 55002e6..7e1fef4 100644 | |
--- a/imx6sx_ai_m4/demo_apps/low_power_imx6sx/can_wakeup/transmitter_qspi/hardware_init.c | |
+++ b/imx6sx_sdb_m4/demo_apps/low_power_imx6sx/can_wakeup/transmitter_qspi/hardware_init.c | |
@@ -30,26 +30,6 @@ | |
#include "board.h" | |
#include "pin_mux.h" | |
-#include "i2c_imx.h" | |
- | |
-/******************************************************************************* | |
- * Definitions | |
- ******************************************************************************/ | |
-/*! @brief MAG3110 Registers address definition. */ | |
-#define MAX7310_INTPUT_PORT (0x00) | |
-#define MAX7310_OUTPUT_PORT (0x01) | |
-#define MAX7310_POLARITY_INVERSION (0x02) | |
-#define MAX7310_CONFIGURATION (0x03) | |
-#define MAX7310_TIMEOUT (0x04) | |
- | |
-/*! @brief i2c send data in polling mode as master. */ | |
-static bool I2C_MasterSendDataPolling(I2C_Type *base, | |
- const uint8_t *cmdBuff, | |
- uint32_t cmdSize, | |
- const uint8_t *txBuff, | |
- uint32_t txSize); | |
-/*! @brief wake up the can transceiver. */ | |
-static void FLEXCAN_WakeupTransceiver(void); | |
void hardware_init(void) | |
{ | |
@@ -77,128 +57,8 @@ void hardware_init(void) | |
/* FLEXCAN Pin setting */ | |
configure_flexcan_pins(BOARD_FLEXCAN_BASEADDR); | |
- | |
- /* Select I2C clock derived from OSC clock(24M) */ | |
- CCM_SetRootMux(CCM, BOARD_I2C_CCM_ROOT, ccmRootmuxPerclkClkOsc24m); | |
- /* Set relevant divider = 1. */ | |
- CCM_SetRootDivider(CCM, BOARD_I2C_CCM_DIV, 0); | |
- | |
- /* Enable I2C3 clock */ | |
- CCM_ControlGate(CCM, BOARD_I2C_CCM_CCGR, ccmClockNeededAll); | |
- | |
- /* I2C Pin setting */ | |
- configure_i2c_pins(BOARD_I2C_BASEADDR); | |
- | |
- /* In this example, we need to grasp I2C exclusively to wake up can transceiver first*/ | |
- RDC_SetPdapAccess(RDC, BOARD_I2C_RDC_PDAP, 3 <<(BOARD_DOMAIN_ID * 2), false, false); | |
- | |
- /* wake up the can transceiver */ | |
- FLEXCAN_WakeupTransceiver(); | |
- | |
- /* Then we should restore the i2c default PDAP setting */ | |
- RDC_SetPdapAccess(RDC, BOARD_I2C_RDC_PDAP, 0xFF, false, false); | |
-} | |
- | |
-static bool I2C_MasterSendDataPolling(I2C_Type *base, | |
- const uint8_t *cmdBuff, | |
- uint32_t cmdSize, | |
- const uint8_t *txBuff, | |
- uint32_t txSize) | |
-{ | |
- if (I2C_GetStatusFlag(base, i2cStatusBusBusy)) | |
- return false; | |
- | |
- /* Set I2C work under Tx mode */ | |
- I2C_SetDirMode(base, i2cDirectionTransmit); | |
- | |
- /* Switch to Master Mode and Send Start Signal. */ | |
- I2C_SetWorkMode(base, i2cModeMaster); | |
- | |
- /* Send first byte */ | |
- if (0 != cmdSize) | |
- { | |
- I2C_WriteByte(base, *cmdBuff++); | |
- cmdSize--; | |
- } | |
- else | |
- { | |
- I2C_WriteByte(base, *txBuff++); | |
- txSize--; | |
- } | |
- while (1) | |
- { | |
- /* Wait I2C transmission status flag assert. */ | |
- while (!I2C_GetStatusFlag(base, i2cStatusInterrupt)); | |
- | |
- /* Clear I2C transmission status flag. */ | |
- I2C_ClearStatusFlag(base, i2cStatusInterrupt); | |
- | |
- /* Transmit complete. */ | |
- if ((I2C_GetStatusFlag(base, i2cStatusReceivedAck)) || | |
- ((0 == txSize) && (0 == cmdSize))) | |
- { | |
- /* Switch to Slave mode and Generate a Stop Signal. */ | |
- I2C_SetWorkMode(base, i2cModeSlave); | |
- | |
- /* Switch back to Rx direction. */ | |
- I2C_SetDirMode(base, i2cDirectionReceive); | |
- | |
- /* Wait until bus idle. */ | |
- while (I2C_GetStatusFlag(base, i2cStatusBusBusy)); | |
- | |
- return true; | |
- } | |
- else | |
- { | |
- if (0 != cmdSize) | |
- { | |
- I2C_WriteByte(base, *cmdBuff++); | |
- cmdSize--; | |
- } | |
- else | |
- { | |
- I2C_WriteByte(base, *txBuff++); | |
- txSize--; | |
- } | |
- } | |
- } | |
} | |
-static void FLEXCAN_WakeupTransceiver(void) | |
-{ | |
- i2c_init_config_t i2cInitConfig = { | |
- .baudRate = 400000u, | |
- .slaveAddress = 0x00 | |
- }; | |
- uint8_t cmdBuffer[5]; | |
- uint8_t txBuffer[5]; | |
- i2cInitConfig.clockRate = get_i2c_clock_freq(BOARD_I2C_BASEADDR); | |
- /* Enable ii2c driver */ | |
- I2C_Init(BOARD_I2C_BASEADDR, &i2cInitConfig); | |
- /* Enable the I2C module */ | |
- I2C_Enable(BOARD_I2C_BASEADDR); | |
- | |
- /* Set can wake-up pin as output */ | |
- cmdBuffer[0] = BOARD_I2C_MAX7310_ADDR << 1; | |
- cmdBuffer[1] = MAX7310_CONFIGURATION; | |
- txBuffer[0] = 0x7F; | |
- I2C_MasterSendDataPolling(BOARD_I2C_BASEADDR, cmdBuffer, 2, txBuffer, 1); | |
- | |
- /* Output '1' to trigger transceiver wake-up */ | |
- cmdBuffer[0] = BOARD_I2C_MAX7310_ADDR << 1; | |
- cmdBuffer[1] = MAX7310_OUTPUT_PORT; | |
- txBuffer[0] = 0x80; | |
- I2C_MasterSendDataPolling(BOARD_I2C_BASEADDR, cmdBuffer, 2, txBuffer, 1); | |
- | |
- /* Output '0' to clear transceiver wake-up */ | |
- cmdBuffer[0] = BOARD_I2C_MAX7310_ADDR << 1; | |
- cmdBuffer[1] = MAX7310_OUTPUT_PORT; | |
- txBuffer[0] = 0x00; | |
- I2C_MasterSendDataPolling(BOARD_I2C_BASEADDR, cmdBuffer, 2, txBuffer, 1); | |
- | |
- /* deinit i2c3 */ | |
- I2C_Deinit(BOARD_I2C_BASEADDR); | |
-} | |
/******************************************************************************* | |
* EOF | |
******************************************************************************/ | |
diff --git a/imx6sx_ai_m4/demo_apps/low_power_imx6sx/common/linker/arm/MCIMX6X_M4_qspi1b_lowpower.scf b/imx6sx_ai_m4/demo_apps/low_power_imx6sx/common/linker/arm/MCIMX6X_M4_qspi1b_lowpower.scf | |
deleted file mode 100644 | |
index 2b965de..0000000 | |
--- a/imx6sx_ai_m4/demo_apps/low_power_imx6sx/common/linker/arm/MCIMX6X_M4_qspi1b_lowpower.scf | |
+++ /dev/null | |
@@ -1,89 +0,0 @@ | |
-#! armcc -E | |
-/* | |
-** ################################################################### | |
-** Processors: MCIMX6Xxxxx08AB | |
-** MCIMX6Xxxxx10AB | |
-** | |
-** Compiler: ARM C/C++ Compiler | |
-** Reference manual: IMX6SXRM, Rev.A, February 2015 | |
-** Version: rev. 1.0, 2015-07-29 | |
-** | |
-** Abstract: | |
-** Linker file for the ARM C/C++ Compiler | |
-** | |
-** Copyright (c) 2015 Freescale Semiconductor, Inc. | |
-** All rights reserved. | |
-** | |
-** Redistribution and use in source and binary forms, with or without modification, | |
-** are permitted provided that the following conditions are met: | |
-** | |
-** o Redistributions of source code must retain the above copyright notice, this list | |
-** of conditions and the following disclaimer. | |
-** | |
-** o 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. | |
-** | |
-** o Neither the name of Freescale Semiconductor, Inc. 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 HOLDER 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. | |
-** | |
-** http: www.freescale.com | |
-** mail: support@freescale.com | |
-** | |
-** ################################################################### | |
-*/ | |
- | |
-#define m_interrupts_start 0x68000000 | |
-#define m_interrupts_size 0x00000240 | |
- | |
-#define m_text_start 0x68000240 | |
-#define m_text_size 0x00007DC0 | |
- | |
-#define m_data_start 0x20000000 | |
-#define m_data_size 0x8000 | |
- | |
-/* Sizes */ | |
-#if (defined(__stack_size__)) | |
- #define Stack_Size __stack_size__ | |
-#else | |
- #define Stack_Size 0x0400 | |
-#endif | |
- | |
-#if (defined(__heap_size__)) | |
- #define Heap_Size __heap_size__ | |
-#else | |
- #define Heap_Size 0x0400 | |
-#endif | |
- | |
-LR_m_text m_text_start m_text_size { ; load region size_region | |
- ER_m_text m_text_start m_text_size { ; load address = execution address | |
- * (InRoot$$Sections) | |
- .ANY (+RO) | |
- .ANY (.ram_function, .ram_function_end) | |
- } | |
- RW_m_data m_data_start m_data_size { ; RW data | |
- .ANY (+RW +ZI) | |
- } | |
- ARM_LIB_HEAP m_data_start+m_data_size-Heap_Size-Stack_Size EMPTY Heap_Size { ; Heap region growing up | |
- } | |
- ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size { ; Stack region growing down | |
- } | |
-} | |
- | |
-LR_m_interrupts m_interrupts_start m_interrupts_size { | |
- VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address | |
- * (RESET,+FIRST) | |
- } | |
-} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment