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.

[参考译文] TDA4VM:在 OSPI 上使用 UNIFLASH 刷写微型 rootfs 映像

Guru**** 2037690 points
Other Parts Discussed in Thread: UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/920696/tda4vm-flashing-the-tiny-rootfs-image-using-uniflash-on-ospi

器件型号:TDA4VM
主题中讨论的其他器件:UNIFLASH

大家好、

我使用 以下命令创建了 Tiny Arago-Tina-image-J7-EVM:

toolchain_base=/usr/local/arm/toolchain external_toolchain=Aarch64-linux-gnu-gcc machine=j7-evm bitbake Arago-Tina-image

使用此 和此 ,我创建了 ubifs rootfs 映像。

我将使用 UART (Uni-Flash)通过 此处提到的以下命令将映像刷写到 OSPI 上的0x800000地址

sudo /opt/ti/uniflash_6.0.0/dslite.sh --mode processors -c /dev/ttyUSB1 -f rootfs/ubi.img -d 3 -o 0x800000

但我遇到存储器访问错误:

/opt/ti/uniflash_6.0.0/dslite.sh:Zeile 75: 6186 Speicherzugriffsfehler (Speicherabzug geschrieben)./ProcessorSDKSerialFlash -c /dev/ttyUSB1 -f rootfs/ubi.img -d 3 -o 0x800000

ubi.img 的大小为37M。

我的问题是:

我的 UBIFS 是否创建正确?

如何使用 OSPI 上的 UART (UNIFLASH)刷写 ubifs 映像?

EVM 上的 NORFlash 有多大?

谢谢、

Pouyan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Pouyan、您好!

    在运行用于刷写 OSPI 的命令之前、您是否运行了 Flasher 命令?

    此命令在以下位置引用: http://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/pdk_jacinto_07_00_00/docs/userguide/board/uniflash.html#downloading-flash-programr

    您需要运行与以下命令类似的命令" dslite.bat --mode processors -c COM7 -f C:\ti\uniflash_5.3.1\processors\FlashWriter\j721e_evm\uart_j721e_evm_flash_programmer_release.tiimage -i 0"、然后尝试刷写 ubi.img 作为下一步。

    EVM 上的 NOR 闪存为64MB。

    => SF 探测器
    SF:检测到的 mt35xu512aba、页大小为256字节、擦除大小为128 KiB、总共64 MiB 

    此致

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 Karthik、

    感谢您的回复、

    是的、我闪存了闪存器。 然后尝试刷写我的映像。 因此、当我在0x80000 (8MiB)之后进行复制时、我应该有足够的空间(638-8=56)。 但由于存储器访问问题、我无法闪存、那么我如何解决这个问题呢?

    谢谢、

    Pouyan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Pouyan、您好!

    我需要您的帮助才能在我的最后重现此内容、以便进一步调试。 将与您脱机联系。

    此致

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Pouyan、您好!

    抱歉、这超出了我的优先级。 我现在开始对此进行研究。 将很快更新。

    此致

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Pouyan、您好!  

    您可以使用 SD 卡等任何其他介质刷写 UBIFS 吗? 我尝试用一个微型文件系统(内核和 DTB 通过 tftp 提供)刷写 UBIFS、并且能够引导。

    如果您使用的是 EVM 或自定义硬件、但具有 SD 卡接口、请告诉我、我可以帮助您完成这些步骤。

    此致、

    Karan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Pouyan、您好!

    假设您有可用的 SD 卡接口。

    -1-获取微型文件系统

    请查找所附的微型文件系统 :/cfs-file/__key/communityserver-discussions-components-files/791/6708.tisdk_2D00_tiny_2D00_image_2D00_j7_2D00_evm.tar.xz

    或者、也可以使用以下指令生成相同的:

    git clone git://arago-project.org/git/projects/oe-layersetup.git tisdk
    cd tisdk/#
    
    从7.00安装程序复制配置文件 Yocto-build/configs/psdkla/psdkla-07_00_00.txt
    ./oe-layertool-setup.sh -f psdkla-07_00_00.txt
    
    #导出代理
    导出ftp_proxy=http://webproxy.ext.ti.com:80
    导出http_proxy=http://webproxy.ext.ti.com:80
    导出https_proxy=http://webproxy.ext.ti.com:80
    
    cd Build
    #如果要重用下载文件夹
    vi conf/local.conf
    ,编辑配置文件。 CONF/setenv
    
    #这是到 ARMv7和 ARMv8
    工具链_base=/sdk/tools machine=j7-evm bittmp -k tisdk-Tiny-image
    
    # build image 可在此处找到
    la -la tisdk/build/arago-bake-external_arm-glibc/deploy/images/j7-evms/tisdm/j7-evm/tisx7-tis-image.z-jtisdk-z-ime.z-imine.z-imine.z-jtisdk.z-im 

    -2-将微型文件系统刷写到 OSPI 的 UBI 分区

    我们将使用此映像刷写到 OSPI 的 UBI 分区。 在  https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-jacinto7/07_00_01_01/exports/docs/linux/Foundational_Components/Kernel/Kernel_Drivers/QSPI.html 闪存上使用 UBIFS 的部分中的说明

    获得 tisdk-Tina-image-j7-evm.tar.xz 后、请执行以下步骤:

    #使用 SD 卡引导至文件系统
    
    cat /proc/mtd
    ubiformat /dev/mtd6
    ubiattach -p /dev/mtd6
    ubimkvol /dev/ubi0 -N flash_fs -s 55Mibmkdir
    /mnt/flash
    mount -t ubifs ubi0:flash_fs /mnt/flash
    
    cd//mnt/flash
    tar xvf /home/root/tisdk-tiny-image-j7-evm.tar.xz
    sync
    
    cd /home/root umount
    /mnt/flash
    
    #在此处完成刷写 

    请注意、我们尚未将内核映像和 DTB 闪存到微型映像、我们需要在从 OSPI UBIFS 引导时从 TFTP 或 SD 卡中选择此映像。

    注意:我们不会将内核映像和 DTB 闪存为此映像、因为 u-boot 需要从 UBIFS 读取映像和 DTB、并且当前在 u-boot 尝试打开和读取 UNIFS 时会出现问题。 为了解决这一问题、我们为 u-boot 提供内核映像和 DTB。

    -3-更新 u-boot 环境以支持 UBIFS

    此外、需要根据以下内容修改 u-boot 环境以启用 UBI FS (这不是 SDK 的一部分、因此需要执行其他步骤)

    diff --git a/include/configs/j721e_evm.h b/include/configs/j721e_evm.h
    index edf747b8d3..9d5b7452ca 100644
    -- a/include/configs/j721e_evm.h
    ++ b/include/configs/j721e_evm.h
    @@-82、6 +82、14 @@
    "${mtdparts}\0" \
    "run_kern=booti ${loadaddr}${rd_spec}${fdtaddr}\0"
    
    +#define Extra ENV_J721E_Board_settings_UBI \
    + "init_ubi=run args_all args_ubi;SF 探测器;" \
    + "ubi 零件 ospi.rootfs;ubifsmount ubi:flash_fs;\0" \
    + "get_kern_ubi=ubifsload ${loadaddr}${bootdir}/${name_kern}\0"\
    + "get_FDT_ubi=ubifsload ${fdtaddr}${bootdir}/${name_FDT}\0" \
    + "args_ubi=setenv bootargs console=${console}${optargets}" \
    + rootfstype=ubifs root=ubi0:flash_fs rw ubi.mtd=ospi.rootfs\0"
    +
    // U-Boot MMC 特定配置*/
    #define Extra ENV_J721E_Board_settings_MMC \
    "引导=MMC\0" \
    @@-142、6 + 150、7 @@
    DEFAULT_FIT TI_args \
    Extra ENV_J721E_Board_settings \
    Extra ENV_J721E_Board_settings_MMC \
    + Extra _ENV_J721E_Board_settings_UBI \
    Extra _ENV_RPROC_SETTINGS \
    Extra ENV_DFUARGS \
    DEFAULT_UFS_TI_args \
    

    应用此选项后、请重建 u-boot 并将其替换到 OSPI 闪存中。 您还可以在 u-boot 提示符下添加这些环境变量。

    -4-从 OSPI UBI 分区中的文件系统引导

    现在、您已经在 OSPI UBI 中刷写了微型文件系统、并且修改了 u-boot 并使用环境来支持它。 现在将引导模式更改为 OPSI 并运行以下代码:

    =>运行 args_all
    =>运行 args_ubi
    =>
    =>=> setenv boot ubi
    =>
    =>
    =>=>#在这里可以从 TFTP 等加载, 您只需要 RAM 中的 DTB 和内核映像
    #这是因为我们在 UBIFS 的微型文件系统中没有内核映像和 DTB
    =>
    ext4load MMC 1:2 0x82000000 /boot/Image
    16654344字节在337ms 内读取(47.1 MIB/s)
    =>
    =>=> ext4load MMC 1:2 0x81200000 /boot/k3-j721e-common-proc-board.dtb
    92333字节在5ms (17.6 MIB/s)内读取
    =>
    => booti 0x82000000 - 0x81200000 

    注意:我已经看到、如果您在安装 UBIFS 后执行硬回波(关闭电源->打开)、那么下次它会损坏文件系统。 请改用软卷筒(在内核命令下运行 reboot)。

    我可以理解、上述指令最初看起来有点不知所措。 原因是开箱即用不受支持/测试频繁。 我可以帮助您解决有关上述流程的更多问题、或在遇到上述问题时遇到困难。

    此外、请告诉我 UBIFS 文件系统将在整个用例中增加价值、然后我可以回圈给团队、看看是否可能将其作为 SDK 的一部分。

    此致、

    Karan