Summary: | Включить поддержку SPI Flash | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Антон Мидюков <antohami> |
Component: | u-boot-sunxi | Assignee: | Sergey Bolshakov <sbolshakov> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P5 | CC: | iv, sbolshakov |
Version: | unstable | ||
Hardware: | aarch64 | ||
OS: | Linux |
Description
Антон Мидюков
2022-07-15 06:54:03 MSK
(In reply to Антон Мидюков from comment #0) > В u-boot для Orange Pi Prime нет подержки SPI Flash, поэтому после записи в > набортную микросхему платы при помощи sunxi-fel SPL сообщает, что не нашёл > U-boot на поддерживаемых накопителях. Помогло включение опций в > orangepi_prime_defconfig: > CONFIG_SPI=y > CONFIG_SPL_SPI_SUNXI=y > CONFIG_SPI_FLASH_WINBOND=y > > Возможно ли включить поддержку SPI и для других плат с sunxi? Или далеко не > все имеют микросхему SPI на борту и нужно к платам подходить индивидуально? > Я так понимаю, что вместо CONFIG_SPI_FLASH_WINBOND=y может быть нужно > указать другой параметр. В апстриме SPI включают на тех платах, где действительно есть микросхема. Я для себя включил и на nanopi duo2. Логика тут, мне кажется, такая: поскольку SPI при этом нужен рано, ещё в SPL (где есть ограничение по размеру кода), нужно знать, какой именно SPI_FLASH там стоит -- навскидку, кроме winbond, там может оказаться и macronix, и stmicro, и чёрт в ступе. Так что да, для всех сразу и чтоб никто не ушёл обиженным, не получится. prime у меня нет, что там стоит и стоит ли вообще, я не знаю -- но готов поверить на слово в следующем релизе. На схеме электрической SPI NOR Flash есть: https://linux-sunxi.org/images/a/ae/ORANGEPI-Prime_V1_0.pdf Может быть распаяна, а может и нет. У меня распаяна на обратной стороне платы. Не смог прочитать, что написано на микросхеме. Поэтому провёл эксперимент и убрал CONFIG_SPI_FLASH_WINBOND=y. Прошил, и тоже грузится. Конфиг получился такой: $ cat u-boot.cfg.configs |grep -i spi CONFIG_DM_SPI CONFIG_DM_SPI_FLASH CONFIG_ENV_IS_IN_SPI_FLASH CONFIG_ENV_SPI_BUS CONFIG_ENV_SPI_CS CONFIG_ENV_SPI_MAX_HZ CONFIG_ENV_SPI_MODE CONFIG_SPI CONFIG_SPI_FLASH CONFIG_SPI_FLASH_SMART_HWCAPS CONFIG_SPI_FLASH_UNLOCK_ALL CONFIG_SPI_FLASH_USE_4K_SECTORS CONFIG_SPI_MEM CONFIG_SPI_SUNXI CONFIG_SPL_SPI_SUNXI CONFIG_SYS_SPI_U_BOOT_OFFS Итого нужно только CONFIG_SPI=y CONFIG_SPL_SPI_SUNXI=y => saveenv Saving Environment to SPIFlash... Invalid bus 0 (err=-19) *** Warning - spi_flash_probe_bus_cs() failed, using default environment Failed (-19) Видимо, для записи u-boot'ом требуется собрать с правильным CONFIG_SPI_FLASH_<???> Поправка: для загрузки самого u-boot не нужно вообще ничего, кроме CONFIG_SPL_SPI_SUNXI, а дальше всё загрузится как обычно, с mmc, usb или сети. Вот если хотеть хранить в spi flash env или тем паче ядро, нужно что-то ещё. на orangepi_pc2, железке, похожей на prime у меня работает: => env default -a -f ## Resetting to default environment => env save Saving Environment to SPIFlash... Erasing SPI flash...Writing to SPI flash...done OK => (Ответ для Sergey Bolshakov на комментарий #4) > на orangepi_pc2, железке, похожей на prime у меня работает: > => env default -a -f > ## Resetting to default environment > => env save > Saving Environment to SPIFlash... Erasing SPI flash...Writing to SPI > flash...done > OK > => попробую собрать с CONFIG_SPI_FLASH_MACRONIX=y (In reply to Антон Мидюков from comment #2) > На схеме электрической SPI NOR Flash есть: > https://linux-sunxi.org/images/a/ae/ORANGEPI-Prime_V1_0.pdf > > Может быть распаяна, а может и нет. У меня распаяна на обратной стороне > платы. Не смог прочитать, что написано на микросхеме. Поэтому провёл > эксперимент и убрал CONFIG_SPI_FLASH_WINBOND=y. Прошил, и тоже грузится. > Конфиг получился такой: > > $ cat u-boot.cfg.configs |grep -i spi > CONFIG_DM_SPI > CONFIG_DM_SPI_FLASH > CONFIG_ENV_IS_IN_SPI_FLASH > CONFIG_ENV_SPI_BUS > CONFIG_ENV_SPI_CS > CONFIG_ENV_SPI_MAX_HZ > CONFIG_ENV_SPI_MODE > CONFIG_SPI > CONFIG_SPI_FLASH > CONFIG_SPI_FLASH_SMART_HWCAPS > CONFIG_SPI_FLASH_UNLOCK_ALL > CONFIG_SPI_FLASH_USE_4K_SECTORS > CONFIG_SPI_MEM > CONFIG_SPI_SUNXI > CONFIG_SPL_SPI_SUNXI > CONFIG_SYS_SPI_U_BOOT_OFFS > > Итого нужно только > CONFIG_SPI=y > CONFIG_SPL_SPI_SUNXI=y > > => saveenv > Saving Environment to SPIFlash... Invalid bus 0 (err=-19) > *** Warning - spi_flash_probe_bus_cs() failed, using default environment > > Failed (-19) > > Видимо, для записи u-boot'ом требуется собрать с правильным > CONFIG_SPI_FLASH_<???> ну как минимум нужен CONFIG_SPI_SUNXI, поскольку CONFIG_SPL_SPI_SUNXI вещь в себе и в собственно u-boot поддержку SPL не добавит. (In reply to Антон Мидюков from comment #5) > (Ответ для Sergey Bolshakov на комментарий #4) > > на orangepi_pc2, железке, похожей на prime у меня работает: > > => env default -a -f > > ## Resetting to default environment > > => env save > > Saving Environment to SPIFlash... Erasing SPI flash...Writing to SPI > > flash...done > > OK > > => > > попробую собрать с CONFIG_SPI_FLASH_MACRONIX=y ну гадать-то зачем -- снять крупно на телефон микросхему не получится ? (Ответ для Sergey Bolshakov на комментарий #7) > (In reply to Антон Мидюков from comment #5) > > (Ответ для Sergey Bolshakov на комментарий #4) > > > на orangepi_pc2, железке, похожей на prime у меня работает: > > > => env default -a -f > > > ## Resetting to default environment > > > => env save > > > Saving Environment to SPIFlash... Erasing SPI flash...Writing to SPI > > > flash...done > > > OK > > > => > > > > попробую собрать с CONFIG_SPI_FLASH_MACRONIX=y > > ну гадать-то зачем -- снять крупно на телефон микросхему не получится ? После применения лайф-хака с термопастой (надпись выгравирована) смог прочитать невооружённым глазом: MXIC MX 25L1606EM2I-12G. Это всё-таки Macronix. (Ответ для Антон Мидюков на комментарий #8) > (Ответ для Sergey Bolshakov на комментарий #7) > > (In reply to Антон Мидюков from comment #5) > > > попробую собрать с CONFIG_SPI_FLASH_MACRONIX=y > > > > ну гадать-то зачем -- снять крупно на телефон микросхему не получится ? > > После применения лайф-хака с термопастой (надпись выгравирована) смог > прочитать невооружённым глазом: MXIC MX 25L1606EM2I-12G. Это всё-таки > Macronix. Собрал с CONFIG_SPI=y CONFIG_SPI_SUNXI=y CONFIG_SPL_SPI_SUNXI=y CONFIG_SPI_FLASH_MACRONIX=y И всё равно не работает. (In reply to Антон Мидюков from comment #9) > (Ответ для Антон Мидюков на комментарий #8) > > (Ответ для Sergey Bolshakov на комментарий #7) > > > (In reply to Антон Мидюков from comment #5) > > > > попробую собрать с CONFIG_SPI_FLASH_MACRONIX=y > > > > > > ну гадать-то зачем -- снять крупно на телефон микросхему не получится ? > > > > После применения лайф-хака с термопастой (надпись выгравирована) смог > > прочитать невооружённым глазом: MXIC MX 25L1606EM2I-12G. Это всё-таки > > Macronix. > > Собрал с > CONFIG_SPI=y > CONFIG_SPI_SUNXI=y > CONFIG_SPL_SPI_SUNXI=y > CONFIG_SPI_FLASH_MACRONIX=y > > И всё равно не работает. В devicetree для prime spi flash нет, ни в u-boot, ни в kernel. Можно скопировать как есть ноду &spi0 из рядом лежащего sun50i-h5-orangepi-pc2.dts (Ответ для Sergey Bolshakov на комментарий #10) > (In reply to Антон Мидюков from comment #9) > > (Ответ для Антон Мидюков на комментарий #8) > > > (Ответ для Sergey Bolshakov на комментарий #7) > > > > (In reply to Антон Мидюков from comment #5) > > > > > попробую собрать с CONFIG_SPI_FLASH_MACRONIX=y > > > > > > > > ну гадать-то зачем -- снять крупно на телефон микросхему не получится ? > > > > > > После применения лайф-хака с термопастой (надпись выгравирована) смог > > > прочитать невооружённым глазом: MXIC MX 25L1606EM2I-12G. Это всё-таки > > > Macronix. > > > > Собрал с > > CONFIG_SPI=y > > CONFIG_SPI_SUNXI=y > > CONFIG_SPL_SPI_SUNXI=y > > CONFIG_SPI_FLASH_MACRONIX=y > > > > И всё равно не работает. > > В devicetree для prime spi flash нет, ни в u-boot, ни в kernel. > Можно скопировать как есть ноду &spi0 из рядом лежащего > sun50i-h5-orangepi-pc2.dts Скопировал, собрал и заработало. Спасибо! включено в 2022.10-alt1 |