This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWR2944EVM: How to make the 2944 chip use the W25Q32JV flash chip?

Part Number: AWR2944EVM
Other Parts Discussed in Thread: UNIFLASH, AWR2944, SYSCONFIG

Tool/software:

Hello, we want to replace the flash chip matching the 2944. Refer to the sprach9e document to confirm that WINBOND's W25Q32JV chip is available. We modified the syscfg according to the mmwave_mcuplus_sdk_04_04_01_02\mmwave_mcuplus_sdk_04_04_01_02\tools\custom_flash\W25Q32JVSQ.json file.  we have modified the syscfg files of sbl_uart_uniflash, sbl_qspi, and appimage related projects, and used mmwave_mcuplus_sdk_04_04_01_02\mcu_plus_sdk_awr294x_09_00_00_15\examples\drivers\boot\sbl_uart_uniflash related operations to burn.But the burning is unsuccessful, please tell us the correct method.

Visible attachments using syscfg file

/**
* These arguments were used when this file was generated. They will be automatically applied on subsequent loads
* via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
* @cliArgs --device "AWR294X" --package "ETS" --part "Default" --context "r5fss0-0" --product "MCU_PLUS_SDK_AWR2944@09.00.00"
* @versions {"tool":"1.14.0+2667"}
*/

/**
* Import the modules used in this configuration.
*/
const flash = scripting.addModule("/board/flash/flash", {}, false);
const flash1 = flash.addInstance();
const adcbuf = scripting.addModule("/drivers/adcbuf/adcbuf", {}, false);
const adcbuf1 = adcbuf.addInstance();
const cbuff = scripting.addModule("/drivers/cbuff/cbuff", {}, false);
const cbuff1 = cbuff.addInstance();
const crc = scripting.addModule("/drivers/crc/crc", {}, false);
const crc1 = crc.addInstance();
const edma = scripting.addModule("/drivers/edma/edma", {}, false);
const edma1 = edma.addInstance();
const edma2 = edma.addInstance();
const ipc = scripting.addModule("/drivers/ipc/ipc");
const mcan = scripting.addModule("/drivers/mcan/mcan");
const mcan1 = mcan.addInstance();
const mibspi = scripting.addModule("/drivers/mibspi/mibspi", {}, false);
const mibspi1 = mibspi.addInstance();
const uart = scripting.addModule("/drivers/uart/uart", {}, false);
const uart1 = uart.addInstance();
const uart2 = uart.addInstance();
const clock = scripting.addModule("/kernel/dpl/clock");
const debug_log = scripting.addModule("/kernel/dpl/debug_log");
const mpu_armv7 = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false);
const mpu_armv71 = mpu_armv7.addInstance();
const mpu_armv72 = mpu_armv7.addInstance();
const mpu_armv73 = mpu_armv7.addInstance();
const mpu_armv74 = mpu_armv7.addInstance();
const mpu_armv75 = mpu_armv7.addInstance();
const mpu_armv76 = mpu_armv7.addInstance();
const mpu_armv77 = mpu_armv7.addInstance();
const mpu_armv78 = mpu_armv7.addInstance();

/**
* Write custom configuration values to the imported modules.
*/
flash1.$name = "CONFIG_FLASH0";
flash1.device = "CUSTOM_FLASH";
flash1.flashSize = 4194304;
flash1.flashManfId = "0xEF";
flash1.flashDeviceId = "0x4016";
flash1.flashQeType = "5";
flash1.fname = "W25Q32JV";
flash1.peripheralDriver.$name = "CONFIG_QSPI0";

adcbuf1.$name = "CONFIG_ADCBUF0";

cbuff1.$name = "CONFIG_CBUFF0";

crc1.$name = "CONFIG_CRC0";

edma1.$name = "CONFIG_EDMA0";
edma1.instance = "EDMA_DSS_B";
edma1.regionId = 0;
edma1.edmaRmDmaCh[0].resourceType = scripting.forceWrite("ownDmaCh");
edma1.edmaRmDmaCh[0].$name = "CONFIG_EDMA_RM0";
edma1.edmaRmDmaCh[0].startIndex = 0;
edma1.edmaRmDmaCh[0].endIndex = 63;
edma1.edmaRmQdmaCh[0].$name = "CONFIG_EDMA_RM1";
edma1.edmaRmTcc[0].$name = "CONFIG_EDMA_RM2";
edma1.edmaRmTcc[0].startIndex = 0;
edma1.edmaRmTcc[0].endIndex = 63;
edma1.edmaRmParam[0].$name = "CONFIG_EDMA_RM3";
edma1.edmaRmParam[0].startIndex = 0;
edma1.edmaRmReservedDmaCh[0].$name = "CONFIG_EDMA_RM4";
edma1.edmaRmReservedDmaCh[0].startIndex = 0;
edma1.edmaRmReservedDmaCh[0].endIndex = 0;

ipc.r5fss0_1 = "NONE";
ipc.vringNumBuf = 1;
ipc.vringMsgSize = 1152;

mcan1.$name = "CONFIG_MCAN0";
mcan1.MCAN.RX.$assign = "ball.D16";
mcan1.MCAN.TX.$assign = "ball.D17";

mibspi1.$name = "CONFIG_MIBSPI0";
mibspi1.bitRate = 600000;
mibspi1.t2cDelay = 0x5;
mibspi1.c2tDelay = 0x5;
mibspi1.dataSize = 8;
mibspi1.frameFormat = "POL0_PHA1";
mibspi1.advanced = true;
mibspi1.csHold = true;
mibspi1.instance = "MIBSPIB";
mibspi1.MIBSPI.$assign = "MIBSPIB";
mibspi1.MIBSPI.CLK.pu_pd = "nopull";
mibspi1.MIBSPI.CLK.$assign = "ball.T13";
mibspi1.MIBSPI.MISO.pu_pd = "nopull";
mibspi1.MIBSPI.MISO.$assign = "ball.U13";
mibspi1.MIBSPI.MOSI.pu_pd = "nopull";
mibspi1.MIBSPI.MOSI.$assign = "ball.V12";
mibspi1.mibspiChannel[0].$name = "CONFIG_MIBSPI_CH0";

const edma3 = edma.addInstance({}, false);
edma3.$name = "CONFIG_EDMA2";
mibspi1.edmaConfig = edma3;
edma3.edmaRmDmaCh[0].resourceType = scripting.forceWrite("ownDmaCh");
edma3.edmaRmDmaCh[0].$name = "CONFIG_EDMA_RM10";
edma3.edmaRmQdmaCh[0].$name = "CONFIG_EDMA_RM11";
edma3.edmaRmTcc[0].$name = "CONFIG_EDMA_RM12";
edma3.edmaRmParam[0].$name = "CONFIG_EDMA_RM13";
edma3.edmaRmReservedDmaCh[0].$name = "CONFIG_EDMA_RM14";

uart1.$name = "CONFIG_UART1";
uart1.intrEnable = "DISABLE";
uart1.baudRate = 3125000;
uart1.UART.$assign = "UARTB";
uart1.UART.RX.$used = false;
uart1.UART.TX.$assign = "ball.A14";

uart2.$name = "CONFIG_UART0";
uart2.baudRate = 921600;
uart2.UART.$assign = "UARTA";
uart2.UART.RX.$assign = "ball.B16";
uart2.UART.TX.$assign = "ball.C16";

edma2.$name = "CONFIG_EDMA1";
flash1.peripheralDriver.edmaConfig = edma2;
uart1.edmaConfig = edma2;
uart2.edmaConfig = edma2;
edma2.edmaRmDmaCh[0].$name = "CONFIG_EDMA_RM5";
edma2.edmaRmQdmaCh[0].$name = "CONFIG_EDMA_RM6";
edma2.edmaRmTcc[0].$name = "CONFIG_EDMA_RM7";
edma2.edmaRmParam[0].$name = "CONFIG_EDMA_RM8";
edma2.edmaRmReservedDmaCh[0].$name = "CONFIG_EDMA_RM9";

debug_log.enableLogZoneError = false;
debug_log.enableLogZoneWarning = false;

mpu_armv71.$name = "CONFIG_MPU_REGION0";
mpu_armv71.attributes = "Device";
mpu_armv71.allowExecute = false;

mpu_armv72.$name = "CONFIG_MPU_REGION1";
mpu_armv72.size = 14;

mpu_armv73.$name = "CONFIG_MPU_REGION2";
mpu_armv73.baseAddr = 0x80000;
mpu_armv73.size = 14;

mpu_armv74.$name = "CONFIG_MPU_REGION3";
mpu_armv74.baseAddr = 0x10200000;
mpu_armv74.size = 20;

mpu_armv75.$name = "CONFIG_MPU_REGION4";
mpu_armv75.attributes = "NonCached";
mpu_armv75.size = 14;
mpu_armv75.baseAddr = 0x102EC000;

mpu_armv76.$name = "CONFIG_MPU_REGION5";
mpu_armv76.baseAddr = 0xC5000000;
mpu_armv76.size = 13;
mpu_armv76.attributes = "NonCached";
mpu_armv76.allowExecute = false;

mpu_armv77.$name = "CONFIG_MPU_REGION6";
mpu_armv77.baseAddr = 0xA4030000;
mpu_armv77.size = 12;
mpu_armv77.attributes = "NonCached";
mpu_armv77.allowExecute = false;

mpu_armv78.$name = "CONFIG_MPU_REGION7";
mpu_armv78.baseAddr = 0x88000000;
mpu_armv78.size = 21;
mpu_armv78.attributes = "Cached+Sharable";
mpu_armv78.allowExecute = false;

/**
* Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
* version of the tool will not impact the pinmux you originally saw. These lines can be completely deleted in order to
* re-solve from scratch.
*/
flash1.peripheralDriver.QSPI["0"].$suggestSolution = "ball.U11";
flash1.peripheralDriver.QSPI["1"].$suggestSolution = "ball.V11";
flash1.peripheralDriver.QSPI["2"].$suggestSolution = "ball.T11";
flash1.peripheralDriver.QSPI["3"].$suggestSolution = "ball.R12";
flash1.peripheralDriver.QSPI.$suggestSolution = "QSPI0";
flash1.peripheralDriver.QSPI.CLK.$suggestSolution = "ball.R10";
flash1.peripheralDriver.QSPI.CS.$suggestSolution = "ball.U12";
mcan1.MCAN.$suggestSolution = "MCANA";
mibspi1.mibspiChannel[0].MSS_CSn.$suggestSolution = "ball.U14";

  • Hi Yang,

    Can you share the screenshot of changes you made in sysconfig tool?

    BR,

    Animesh Anand

  • ok,this is appimageproject

  • Hi Yang,

     what is the issue you are getting after you are trying to flash?

    BR,

    Animesh Anand

  • use sbl_uart_uniflash

    use uniflash

    [2024/7/18 下午5:39:46] [INFO] Cortex_R5_0: Initialization complete.
    [2024/7/18 下午5:39:46] [INFO] Cortex_R5_0: Sending UART Uniflash image at location C:\ti\uniflash_8.6.0\deskdb\content\TICloudAgent\win\ccs_base\mmWave\gen2/images/sbl_uart_uniflash.release.tiimage
    [2024/7/18 下午5:39:55] [INFO] Cortex_R5_0: UART Uniflash image sent.
    [2024/7/18 下午5:39:55] [INFO] Cortex_R5_0: Sending SBL image at location C:/Users/LTH/Desktop/2944_W25Q32/sbl_qspi_awr294x-evm_r5fss0-0_nortos_ti-arm-clang_W25Q32.tiimage
    [2024/7/18 下午5:39:56] [ERROR] Cortex_R5_0: XMODEM send failed, no response OR incorrect response from EVM OR cancelled by user, power cycle EVM and run this script again !!!
    [2024/7/18 下午5:39:56] [ERROR] Cortex_R5_0: XMODEM recv failed, no response OR incorrect response from EVM OR cancelled by user,Power cycle EVM and run this script again !!!
    [2024/7/18 下午5:39:56] [INFO] Cortex_R5_0: SBL image sent
    [2024/7/18 下午5:39:56] [INFO] Cortex_R5_0: Sending Appimage at location C:/Users/LTH/Desktop/2944_W25Q32/awr2944_corner_radar_W25Q32.appimage
    [2024/7/18 下午5:39:56] [ERROR] Cortex_R5_0: XMODEM send failed, no response OR incorrect response from EVM OR cancelled by user, power cycle EVM and run this script again !!!
    [2024/7/18 下午5:39:56] [ERROR] Cortex_R5_0: XMODEM recv failed, no response OR incorrect response from EVM OR cancelled by user,Power cycle EVM and run this script again !!!
    [2024/7/18 下午5:39:56] [INFO] Cortex_R5_0: Appimage sent
    [2024/7/18 下午5:39:56] [INFO] Cortex_R5_0: Instance deinitialized!

  • Hi Yang,

    Did you rebuild the SBL and appimage after modifying the sysconfiguration?

    BR,

    Animesh Anand