API for flash memory mapping, requires implementation.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9534 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
61d215fb3d
commit
d22d4c839e
|
@ -114,7 +114,8 @@ typedef enum {
|
||||||
QSPI_STOP = 1, /**< Stopped. */
|
QSPI_STOP = 1, /**< Stopped. */
|
||||||
QSPI_READY = 2, /**< Ready. */
|
QSPI_READY = 2, /**< Ready. */
|
||||||
QSPI_ACTIVE = 3, /**< Exchanging data. */
|
QSPI_ACTIVE = 3, /**< Exchanging data. */
|
||||||
QSPI_COMPLETE = 4 /**< Asynchronous operation complete. */
|
QSPI_COMPLETE = 4, /**< Asynchronous operation complete. */
|
||||||
|
QSPI_MEMMAP = 5 /**< In memory mapped mode. */
|
||||||
} qspistate_t;
|
} qspistate_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -128,6 +129,10 @@ typedef struct {
|
||||||
|
|
||||||
#include "hal_qspi_lld.h"
|
#include "hal_qspi_lld.h"
|
||||||
|
|
||||||
|
#if !defined(QSPI_SUPPORTS_MEMMAP)
|
||||||
|
#error "low level does not define QSPI_SUPPORTS_MEMMAP"
|
||||||
|
#endif
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Driver macros. */
|
/* Driver macros. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
@ -192,6 +197,35 @@ typedef struct {
|
||||||
(qspip)->state = QSPI_ACTIVE; \
|
(qspip)->state = QSPI_ACTIVE; \
|
||||||
qspi_lld_receive(qspip, cmdp, n, rxbuf); \
|
qspi_lld_receive(qspip, cmdp, n, rxbuf); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (QSPI_SUPPORTS_MEMMAP == TRUE) || defined(__DOXYGEN__)
|
||||||
|
/**
|
||||||
|
* @brief Maps in memory space a QSPI flash device.
|
||||||
|
* @pre The memory flash device must be initialized appropriately
|
||||||
|
* before mapping it in memory space.
|
||||||
|
*
|
||||||
|
* @param[in] qspip pointer to the @p QSPIDriver object
|
||||||
|
* @param[in] cmdp pointer to the command descriptor
|
||||||
|
* @param[out] addrp pointer to the memory start address of the mapped
|
||||||
|
* flash or @p NULL
|
||||||
|
*
|
||||||
|
* @iclass
|
||||||
|
*/
|
||||||
|
#define qspiMapFlashI(qspip, cmdp, addrp) \
|
||||||
|
qspi_lld_map_flash(qspip, cmdp, addrp)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Maps in memory space a QSPI flash device.
|
||||||
|
* @post The memory flash device must be re-initialized for normal
|
||||||
|
* commands exchange.
|
||||||
|
*
|
||||||
|
* @param[in] qspip pointer to the @p QSPIDriver object
|
||||||
|
*
|
||||||
|
* @iclass
|
||||||
|
*/
|
||||||
|
#define qspiUnmapFlashI(qspip) \
|
||||||
|
qspi_lld_unmap_flash(qspip)
|
||||||
|
#endif /* QSPI_SUPPORTS_MEMMAP == TRUE */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -265,6 +299,12 @@ extern "C" {
|
||||||
void qspiReceive(QSPIDriver *qspip, const qspi_command_t *cmdp,
|
void qspiReceive(QSPIDriver *qspip, const qspi_command_t *cmdp,
|
||||||
size_t n, uint8_t *rxbuf);
|
size_t n, uint8_t *rxbuf);
|
||||||
#endif
|
#endif
|
||||||
|
#if QSPI_SUPPORTS_MEMMAP == TRUE
|
||||||
|
void qspiMapFlash(QSPIDriver *qspip,
|
||||||
|
const qspi_command_t *cmdp,
|
||||||
|
uint8_t **addrp);
|
||||||
|
void qspiUnmapFlash(QSPIDriver *qspip);
|
||||||
|
#endif
|
||||||
#if QSPI_USE_MUTUAL_EXCLUSION == TRUE
|
#if QSPI_USE_MUTUAL_EXCLUSION == TRUE
|
||||||
void qspiAcquireBus(QSPIDriver *qspip);
|
void qspiAcquireBus(QSPIDriver *qspip);
|
||||||
void qspiReleaseBus(QSPIDriver *qspip);
|
void qspiReleaseBus(QSPIDriver *qspip);
|
||||||
|
|
|
@ -291,6 +291,40 @@ void qspi_lld_receive(QSPIDriver *qspip, const qspi_command_t *cmdp,
|
||||||
dmaStreamEnable(qspip->dma);
|
dmaStreamEnable(qspip->dma);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if (QSPI_SUPPORTS_MEMMAP == TRUE) || defined(__DOXYGEN__)
|
||||||
|
/**
|
||||||
|
* @brief Maps in memory space a QSPI flash device.
|
||||||
|
* @pre The memory flash device must be initialized appropriately
|
||||||
|
* before mapping it in memory space.
|
||||||
|
*
|
||||||
|
* @param[in] qspip pointer to the @p QSPIDriver object
|
||||||
|
* @param[in] cmdp pointer to the command descriptor
|
||||||
|
* @param[out] addrp pointer to the memory start address of the mapped
|
||||||
|
* flash or @p NULL
|
||||||
|
*
|
||||||
|
* @notapi
|
||||||
|
*/
|
||||||
|
void qspi_lld_map_flash(QSPIDriver *qspip,
|
||||||
|
const qspi_command_t *cmdp,
|
||||||
|
uint8_t **addrp) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Maps in memory space a QSPI flash device.
|
||||||
|
* @post The memory flash device must be re-initialized for normal
|
||||||
|
* commands exchange.
|
||||||
|
*
|
||||||
|
* @param[in] qspip pointer to the @p QSPIDriver object
|
||||||
|
*
|
||||||
|
* @notapi
|
||||||
|
*/
|
||||||
|
void qspi_lld_unmap_flash(QSPIDriver *qspip) {
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif /* QSPI_SUPPORTS_MEMMAP == TRUE */
|
||||||
|
|
||||||
#endif /* HAL_USE_QSPI */
|
#endif /* HAL_USE_QSPI */
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
|
@ -31,6 +31,13 @@
|
||||||
/* Driver constants. */
|
/* Driver constants. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name QSPI capabilities
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define QSPI_SUPPORTS_MEMMAP FALSE
|
||||||
|
/** @} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name DCR register options
|
* @name DCR register options
|
||||||
* @{
|
* @{
|
||||||
|
@ -257,6 +264,12 @@ extern "C" {
|
||||||
size_t n, const uint8_t *txbuf);
|
size_t n, const uint8_t *txbuf);
|
||||||
void qspi_lld_receive(QSPIDriver *qspip, const qspi_command_t *cmdp,
|
void qspi_lld_receive(QSPIDriver *qspip, const qspi_command_t *cmdp,
|
||||||
size_t n, uint8_t *rxbuf);
|
size_t n, uint8_t *rxbuf);
|
||||||
|
#if QSPI_SUPPORTS_MEMMAP == TRUE
|
||||||
|
void qspi_lld_map_flash(QSPIDriver *qspip,
|
||||||
|
const qspi_command_t *cmdp,
|
||||||
|
uint8_t **addrp);
|
||||||
|
void qspi_lld_unmap_flash(QSPIDriver *qspip);
|
||||||
|
#endif
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -92,12 +92,16 @@ void qspiStart(QSPIDriver *qspip, const QSPIConfig *config) {
|
||||||
|
|
||||||
osalDbgCheck((qspip != NULL) && (config != NULL));
|
osalDbgCheck((qspip != NULL) && (config != NULL));
|
||||||
|
|
||||||
|
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
|
|
||||||
osalDbgAssert((qspip->state == QSPI_STOP) || (qspip->state == QSPI_READY),
|
osalDbgAssert((qspip->state == QSPI_STOP) || (qspip->state == QSPI_READY),
|
||||||
"invalid state");
|
"invalid state");
|
||||||
|
|
||||||
qspip->config = config;
|
qspip->config = config;
|
||||||
qspi_lld_start(qspip);
|
qspi_lld_start(qspip);
|
||||||
qspip->state = QSPI_READY;
|
qspip->state = QSPI_READY;
|
||||||
|
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,10 +119,13 @@ void qspiStop(QSPIDriver *qspip) {
|
||||||
osalDbgCheck(qspip != NULL);
|
osalDbgCheck(qspip != NULL);
|
||||||
|
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
|
|
||||||
osalDbgAssert((qspip->state == QSPI_STOP) || (qspip->state == QSPI_READY),
|
osalDbgAssert((qspip->state == QSPI_STOP) || (qspip->state == QSPI_READY),
|
||||||
"invalid state");
|
"invalid state");
|
||||||
|
|
||||||
qspi_lld_stop(qspip);
|
qspi_lld_stop(qspip);
|
||||||
qspip->state = QSPI_STOP;
|
qspip->state = QSPI_STOP;
|
||||||
|
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,8 +143,11 @@ void qspiStartCommand(QSPIDriver *qspip, const qspi_command_t *cmdp) {
|
||||||
osalDbgCheck((qspip != NULL) && (cmdp != NULL));
|
osalDbgCheck((qspip != NULL) && (cmdp != NULL));
|
||||||
|
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
|
|
||||||
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
||||||
|
|
||||||
qspiStartCommandI(qspip, cmdp);
|
qspiStartCommandI(qspip, cmdp);
|
||||||
|
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,8 +169,11 @@ void qspiStartSend(QSPIDriver *qspip, const qspi_command_t *cmdp,
|
||||||
osalDbgCheck((n > 0U) && (txbuf != NULL));
|
osalDbgCheck((n > 0U) && (txbuf != NULL));
|
||||||
|
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
|
|
||||||
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
||||||
|
|
||||||
qspiStartSendI(qspip, cmdp, n, txbuf);
|
qspiStartSendI(qspip, cmdp, n, txbuf);
|
||||||
|
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,8 +195,11 @@ void qspiStartReceive(QSPIDriver *qspip, const qspi_command_t *cmdp,
|
||||||
osalDbgCheck((n > 0U) && (rxbuf != NULL));
|
osalDbgCheck((n > 0U) && (rxbuf != NULL));
|
||||||
|
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
|
|
||||||
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
||||||
|
|
||||||
qspiStartReceiveI(qspip, cmdp, n, rxbuf);
|
qspiStartReceiveI(qspip, cmdp, n, rxbuf);
|
||||||
|
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,10 +222,13 @@ void qspiCommand(QSPIDriver *qspip, const qspi_command_t *cmdp) {
|
||||||
osalDbgCheck((cmdp->cfg & QSPI_CFG_DATA_MODE_MASK) == QSPI_CFG_DATA_MODE_NONE);
|
osalDbgCheck((cmdp->cfg & QSPI_CFG_DATA_MODE_MASK) == QSPI_CFG_DATA_MODE_NONE);
|
||||||
|
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
|
|
||||||
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
||||||
osalDbgAssert(qspip->config->end_cb == NULL, "has callback");
|
osalDbgAssert(qspip->config->end_cb == NULL, "has callback");
|
||||||
|
|
||||||
qspiStartCommandI(qspip, cmdp);
|
qspiStartCommandI(qspip, cmdp);
|
||||||
(void) osalThreadSuspendS(&qspip->thread);
|
(void) osalThreadSuspendS(&qspip->thread);
|
||||||
|
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,10 +254,13 @@ void qspiSend(QSPIDriver *qspip, const qspi_command_t *cmdp,
|
||||||
osalDbgCheck((cmdp->cfg & QSPI_CFG_DATA_MODE_MASK) != QSPI_CFG_DATA_MODE_NONE);
|
osalDbgCheck((cmdp->cfg & QSPI_CFG_DATA_MODE_MASK) != QSPI_CFG_DATA_MODE_NONE);
|
||||||
|
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
|
|
||||||
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
||||||
osalDbgAssert(qspip->config->end_cb == NULL, "has callback");
|
osalDbgAssert(qspip->config->end_cb == NULL, "has callback");
|
||||||
|
|
||||||
qspiStartSendI(qspip, cmdp, n, txbuf);
|
qspiStartSendI(qspip, cmdp, n, txbuf);
|
||||||
(void) osalThreadSuspendS(&qspip->thread);
|
(void) osalThreadSuspendS(&qspip->thread);
|
||||||
|
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,14 +286,71 @@ void qspiReceive(QSPIDriver *qspip, const qspi_command_t *cmdp,
|
||||||
osalDbgCheck((cmdp->cfg & QSPI_CFG_DATA_MODE_MASK) != QSPI_CFG_DATA_MODE_NONE);
|
osalDbgCheck((cmdp->cfg & QSPI_CFG_DATA_MODE_MASK) != QSPI_CFG_DATA_MODE_NONE);
|
||||||
|
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
|
|
||||||
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
||||||
osalDbgAssert(qspip->config->end_cb == NULL, "has callback");
|
osalDbgAssert(qspip->config->end_cb == NULL, "has callback");
|
||||||
|
|
||||||
qspiStartReceiveI(qspip, cmdp, n, rxbuf);
|
qspiStartReceiveI(qspip, cmdp, n, rxbuf);
|
||||||
(void) osalThreadSuspendS(&qspip->thread);
|
(void) osalThreadSuspendS(&qspip->thread);
|
||||||
|
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
}
|
}
|
||||||
#endif /* QSPI_USE_WAIT == TRUE */
|
#endif /* QSPI_USE_WAIT == TRUE */
|
||||||
|
|
||||||
|
#if (QSPI_SUPPORTS_MEMMAP == TRUE) || defined(__DOXYGEN__)
|
||||||
|
/**
|
||||||
|
* @brief Maps in memory space a QSPI flash device.
|
||||||
|
* @pre The memory flash device must be initialized appropriately
|
||||||
|
* before mapping it in memory space.
|
||||||
|
*
|
||||||
|
* @param[in] qspip pointer to the @p QSPIDriver object
|
||||||
|
* @param[in] cmdp pointer to the command descriptor
|
||||||
|
* @param[out] addrp pointer to the memory start address of the mapped
|
||||||
|
* flash or @p NULL
|
||||||
|
*
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
|
void qspiMapFlash(QSPIDriver *qspip,
|
||||||
|
const qspi_command_t *cmdp,
|
||||||
|
uint8_t **addrp) {
|
||||||
|
|
||||||
|
osalDbgCheck((qspip != NULL) && (cmdp != NULL));
|
||||||
|
osalDbgCheck((cmdp->cfg & QSPI_CFG_DATA_MODE_MASK) != QSPI_CFG_DATA_MODE_NONE);
|
||||||
|
|
||||||
|
osalSysLock();
|
||||||
|
|
||||||
|
osalDbgAssert(qspip->state == QSPI_READY, "not ready");
|
||||||
|
|
||||||
|
qspiMapFlashI(qspip, cmdp, addrp);
|
||||||
|
qspip->state = QSPI_MEMMAP;
|
||||||
|
|
||||||
|
osalSysUnlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Maps in memory space a QSPI flash device.
|
||||||
|
* @post The memory flash device must be re-initialized for normal
|
||||||
|
* commands exchange.
|
||||||
|
*
|
||||||
|
* @param[in] qspip pointer to the @p QSPIDriver object
|
||||||
|
*
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
|
void qspiUnmapFlash(QSPIDriver *qspip) {
|
||||||
|
|
||||||
|
osalDbgCheck(qspip != NULL);
|
||||||
|
|
||||||
|
osalSysLock();
|
||||||
|
|
||||||
|
osalDbgAssert(qspip->state == QSPI_MEMMAP, "not ready");
|
||||||
|
|
||||||
|
qspiUnmapFlashI(qspip);
|
||||||
|
qspip->state = QSPI_READY;
|
||||||
|
|
||||||
|
osalSysUnlock();
|
||||||
|
}
|
||||||
|
#endif /* QSPI_SUPPORTS_MEMMAP == TRUE */
|
||||||
|
|
||||||
#if (QSPI_USE_MUTUAL_EXCLUSION == TRUE) || defined(__DOXYGEN__)
|
#if (QSPI_USE_MUTUAL_EXCLUSION == TRUE) || defined(__DOXYGEN__)
|
||||||
/**
|
/**
|
||||||
* @brief Gains exclusive access to the QSPI bus.
|
* @brief Gains exclusive access to the QSPI bus.
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><contentList><content id="CCR-qspi-qspip-qspi_lld_receive-(format)" val="4"/><content id="cfg-cmdp-qspi_lld_receive-(format)" val="4"/><content id="id[2]-id-m25qStart-(format)" val="4"/><content id="id[1]-id-m25qStart-(format)" val="4"/><content id="id[0]-id-m25qStart-(format)" val="4"/><content id="AFRL-gpiop-initgpio-(format)" val="4"/><content id="AFRH-gpiop-initgpio-(format)" val="4"/><content id="ODR-gpiop-initgpio-(format)" val="4"/><content id="IDR-gpiop-initgpio-(format)" val="4"/><content id="PUPDR-gpiop-initgpio-(format)" val="4"/><content id="OSPEEDR-gpiop-initgpio-(format)" val="4"/><content id="MODER-gpiop-initgpio-(format)" val="4"/><content id="afrh-config-initgpio-(format)" val="4"/><content id="moder-config-initgpio-(format)" val="4"/><content id="config-initgpio-(format)" val="4"/><content id="r2-(format)" val="4"/><content id="cfg-cmdp-qspiReceive-(format)" val="4"/><content id="CCR-qspi-qspip-qspi_lld_send-(format)" val="4"/><content id="CR-qspi-qspip-qspi_lld_send-(format)" val="4"/><content id="cfg-cmdp-qspiSend-(format)" val="4"/><content id="CR2-adc-adcp-adc_lld_start_conversion-(format)" val="4"/><content id="CR2-adc-null-port_wait_for_interrupt-(format)" val="4"/><content id="cr2-adc_lld_start_conversion-(format)" val="4"/><content id="cmd-flash_cmd_receive-(format)" val="4"/></contentList>"/>
|
<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><contentList><content id="cmd-flash_cmd_receive-(format)" val="4"/><content id="cr2-adc_lld_start_conversion-(format)" val="4"/><content id="CR2-adc-null-port_wait_for_interrupt-(format)" val="4"/><content id="CR2-adc-adcp-adc_lld_start_conversion-(format)" val="4"/><content id="cfg-cmdp-qspiSend-(format)" val="4"/><content id="CR-qspi-qspip-qspi_lld_send-(format)" val="4"/><content id="CCR-qspi-qspip-qspi_lld_send-(format)" val="4"/><content id="cfg-cmdp-qspiReceive-(format)" val="4"/><content id="r2-(format)" val="4"/><content id="config-initgpio-(format)" val="4"/><content id="moder-config-initgpio-(format)" val="4"/><content id="afrh-config-initgpio-(format)" val="4"/><content id="MODER-gpiop-initgpio-(format)" val="4"/><content id="OSPEEDR-gpiop-initgpio-(format)" val="4"/><content id="PUPDR-gpiop-initgpio-(format)" val="4"/><content id="IDR-gpiop-initgpio-(format)" val="4"/><content id="ODR-gpiop-initgpio-(format)" val="4"/><content id="AFRH-gpiop-initgpio-(format)" val="4"/><content id="AFRL-gpiop-initgpio-(format)" val="4"/><content id="id[0]-id-m25qStart-(format)" val="4"/><content id="id[1]-id-m25qStart-(format)" val="4"/><content id="id[2]-id-m25qStart-(format)" val="4"/><content id="cfg-cmdp-qspi_lld_receive-(format)" val="4"/><content id="CCR-qspi-qspip-qspi_lld_receive-(format)" val="4"/></contentList>"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <globalVariableList/> "/>
|
<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <globalVariableList/> "/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList/> "/>
|
<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList/> "/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="./build/ch.elf"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="./build/ch.elf"/>
|
||||||
|
|
Loading…
Reference in New Issue