Задать вопрос
Ответы пользователя по тегу Raspberry Pi
  • Как исправить ошибку при старте отладки через OpenOCD "unknown flash device"?

    max_dark
    @max_dark Автор вопроса
    Диванный эксперт
    Для патча потребуются номера команд чтения/записи и размеры блоков.
    Номера основных команд у этого класса устройств совпадают у большинства производителей.

    Для первого нужно добавить:
    FLASH_ID(
        "by25q128es", // название чипа
        0x03,         // "Read Data" - команда чтения
        0x0b,         // "Quick Read" - ускоренное чтение
        0x02,         // "Page Program" - записать "страницу"
        0xd8,         // "64K Block Erase" - стереть блок
        0xc7,         // "Chip Erase" - стереть всё
        0x00184068,   // ID производителя / устройства
        0x100,        // 256 байт, размер "страницы" для записи
        0x10000,      // 64KiB, размер стираемого блока(в байтах)
        0x1000000     // 16MiB, общий объём памяти(в байтах)
    ),


    Для второго отличие только в объеме (4MiB):
    FLASH_ID("zbit zb25vq32"  ,       0x03, 0x0b, 0x02, 0xd8, 0xc7, 0x0016405e, 0x100, 0x10000, 0x0400000),


    UPD0:
    Для RP2040 есть другой способ - нужно пропатчить "target/rp2040.cfg" для поддержки указания размера flash

    # allow skip flash auto_probe
    if { [info exists FLASH_SIZE] } {
    	set _FLASH_SIZE $FLASH_SIZE
    } else {
    	set _FLASH_SIZE 0
    }
    
    # flash bank $_FLASHNAME rp2040_flash 0x10000000 0 0 0 $_FLASH_TARGET
    flash bank $_FLASHNAME rp2040_flash 0x10000000 $_FLASH_SIZE 0 0 $_FLASH_TARGET
    
    if { $_BOTH_CORES } {
    	# Alias to ensure gdb connecting to core 1 gets the correct memory map
    	# flash bank $_CHIPNAME.alias virtual 0x10000000 0 0 0 $_TARGETNAME_1 $_FLASHNAME
    	flash bank $_CHIPNAME.alias virtual 0x10000000 $_FLASH_SIZE 0 0 $_TARGETNAME_1 $_FLASHNAME
    
    	# Select core 0
    	targets $_TARGETNAME_0
    }

    Но это работает только для OpenOCD, собранного из исходников, полученных из основного репозитория.
    Ответ написан
    Комментировать