Skip to content

Instantly share code, notes, and snippets.

@JarrettR
Created August 30, 2017 01:57
Show Gist options
  • Save JarrettR/9663952a78260cf8c00b275b950df9a1 to your computer and use it in GitHub Desktop.
Save JarrettR/9663952a78260cf8c00b275b950df9a1 to your computer and use it in GitHub Desktop.
git diff imx6sx_ai_m4/ imx6sx_sdb_m4/ > bsp.diff
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