Как запрограммировать вспышку с PSoC 4100S Plus (КИПРЕСС)? - PullRequest
0 голосов
/ 25 октября 2019

Я использую чип PSoC 4100S Plus (CYPRESS). Я хочу управлять чипом через SWD.

Здесь есть Официальные документы введите описание ссылки здесь

И я также нашел пример на github введите описание ссылки здесь

Я могу успешно прочитать SWD ID, Silicon ID и стирать все флешки пользователя, но запрограммировать флэш-память и прочитать флэш-памятьразные. Я думаю, что это не программировать во флэш-памяти, есть ли какой-либо метод? Понятия не имею, спасибо большое. Вот мой читаемый флеш и флеш-код программы

/ считывание флеш /

    for (i = 0; i < BYTES_PER_FLASH_ROW; i += 4) {
        /* Read flash via AHB-interface */
        //Read_IO(SRAM_PARAMS_BASE + i + 0x08, &flashData);
        Read_IO(rowAddress + i, &flashData);
        if (swd_PacketAck != SWD_OK_ACK) {
            return (FAILURE);
        }

        chipData[i + 0] = (flashData >> 0) & 0xFF;
        chipData[i + 1] = (flashData >> 8) & 0xFF;
        chipData[i + 2] = (flashData >> 16) & 0xFF;
        chipData[i + 3] = (flashData >> 24) & 0xFF;
    }

/ программная вспышка /

for (i = 0; i < BYTES_PER_FLASH_ROW; i += 4) {
    parameter1 =
        (rowData[i] << 0) + (rowData[i + 1] << 8) +
        (rowData[i + 2] << 16) + (rowData[i + 3] << 24);

    /* Write parameter1 in SRAM */
    Write_IO(SRAM_PARAMS_BASE + 0x08 + i, parameter1);
    Write_IO(TEST_MODE , parameter1);

}

Write_IO(CPUSS_SYSARG, SRAM_PARAMS_BASE);

    /* Request SROM operation */
Write_IO(CPUSS_SYSREQ, SROM_SYSREQ_BIT | SROM_CMD_LOAD_LATCH);

parameter1 = (uint32_t) (((uint32_t) SROM_KEY1 << 0) +
                (((uint32_t) SROM_KEY2 +
                  (uint32_t) SROM_CMD_PROGRAM_ROW) << 8) +
                (((uint32_t) arrayID & 0x000000FF) << 16) +
                (((uint32_t) arrayID & 0x0000FF00) << 16));

Write_IO (SRAM_PARAMS_BASE+0x00, parameter1); // Write params in SRAM

Write_IO (CPUSS_SYSARG, SRAM_PARAMS_BASE); // Set location of parameters

Write_IO (CPUSS_SYSREQ, SROM_SYSREQ_BIT | SROM_CMD_PROGRAM_ROW); // SROM operation
...