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.

[参考译文] 66AK2E05:使用 Processor SDK Linux 04.02.00.09重新编译 NAND 写入器

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/730935/66ak2e05-nand-writer-recompilation-with-processor-sdk-linux-04-02-00-09

器件型号:66AK2E05

您好!

由于我注意到 MCSDK 3.1.4中的 nandwriter.c (格式化 nand 闪存不允许坏块)存在问题、我想查看 与 Processor SDK 04.02.00.009兼容的最新代码(我正在从 MCSDK 迁移到此版本的 Processor SDK)。

在搜索此主题时、我仅找到 有关此路径的信息:[SDK 安装路径]/pdk_ _ /packages/ti/boot/writer.

但在处理器 SDK Linux 中没有这样的功能。 如何继续?

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

    我下载了 Processor SDK RTOS (5.0版、最后一个版本)并查看了[SDK 安装路径]/pdk_k2e_4_0_10\packages/ti\boot\writer\nand\src (我的目标平台为 k2e)中的 nandwriter.c。

    当我只想使用 Processor SDK Linux 时、我是否确实需要下载相同版本的 Processor SDK RTOS?

    关于 nandwriter.c、 代码似乎没有改变。 在 nand_erase_all_blks 函数中、仍然存在:

    静态 bool
    nand_erase_all_blks (platform_device_info *p_device)
    {
    uint32_t block;
    uint32_t max_blks;
    
    max_blks = p_device->block_count;
    
    对于(块=0;块 ".");="" if="" (platform_device_erase_block(p_device-="">句柄,块)!= Platform_eok)
    返回 false;
    }
    
    printf ("\n 格式化%d 和块\n"、块);
    返回(true);
    } 

    但从我的角度来看、它应该是这样的:

    静态 bool
    nand_erase_all_blks (platform_device_info *p_device)
    {
    uint32_t block;
    uint32_t max_blks;
    
    max_blks = p_device->block_count;
    
    对于(块=0;块 ".");="" if="" (platform_device_erase_block(p_device-="">Handle、block)!= Platform_eok)
    {
    printf ("\n 格式化和块%d 失败\n"、块);
    }
    
    
    printf ("\n 格式化%d 和块\n"、块);
    返回(真);
    }
    

    这是奇怪的、因为闪 Nand 之后接受错误的块。

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

    我不是很关注您尝试做的事情。 您在 Linux Proc SDK 中具有重新编译的主题行、但在 RTOS 中引用了代码。 从您引用的旧线程来看、它似乎与 program_evm 有关。 您是否尝试更改 program_EVM 中的 NAND 写入器代码? 还是在 Linux u-boot 中?

    Linux NAND u-boot 代码位于 Linux SDK/u-boot/drivers/MTD/n 中、TI 特定代码位于 Davinci_nand.c 中、用于初始化 EVM 上的器件并设置 ECC 布局。 nand 擦除代码位于 nand_util.c 中、这是上游代码。 在擦除函数中、我看到以下应跳过坏块并继续的注释:

    /*清除选项允许擦除 badblock。 以防止内部
    *从 ERASE()方法中检查,将块检查方法设置为伪
    *并在擦除时禁用坏块表。
    *

    如果您对上游代码有疑问、应在 Linux 内核开放源码论坛中进行讨论。

    如果您对 program_EVM 或 RTOS NAND 写入器有疑问、我将有一位 RTOS 工程师与您合作。

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

    尊敬的 Rex Chang:

    感谢您的完整回答。

    我想使用 program_EVM 格式化 NAND 闪存、然后使用 Processor SDK Linux 在我的定制板(基于66AK2E05 SoC)上刷写默认映像。

    program_evm 使用的是 nandwriter、是 MCSDK (nandwriter.c)中包含的源文件、但 Processor SDK Linux 中不再包含该源文件。 仅包括 nandwriter 的二进制文件(与 program_evm 一起)。

    由于当一个块出现故障(这一点并不少见)时、Nandwriter 正在停止格式化块、因此我想更改 Nandwriter 的源。  为了获取源代码、我唯一找到的方法是获取包含 nandwriter 源代码的 Processor SDK RTOS (与 Processor SDK Linux 相同版本)。

    这就是我提出2个问题的原因:

    1.   为什么 Nandwriter 源文件不像 MCSDK 中那样包含在处理器 SDK Linux 中?
    2. 当 nandwriter.c 中出现错误块时、为什么 NAND 格式化停止? 这听起来不是我想要的功能。    

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

    我假设您不在运行 Linux 的 ARM 环境中。 如果执行此操作、则可以尝试使用 u-boot 脚本通过"run burn_ubi"命令来刷写 NAND。

    我们在一段时间后发生了变化。 多核 SDK 用于仅支持多核产品系列 Keystone 和 Keystone-2、因此 MCSDK 包括用于 ARM 和 DSP 内核的 Linux 和 BIOS 软件包。 迁移到处理器 SDK 后、PSDK 在同一 BU 中同时支持多核平台和单核平台。 因此、SDK 将成为单独的 Linux 和 RTOS SDK。 Linux SDK 适用于具有运行 Linux 的 ARM 的平台。 RTOS SDK 适用于运行 RTOS 的 ARM。 程序_EVM 属于 RTOS 应用程序、因此它位于 RTOS SDK 中。

    如果您想使用 RTOS nandwrite、我需要由 RTOS 工程师对此进行研究。

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您在 Linux 环境中、则可以参阅入门指南第1.2.4.6节中所示的 K2H 的替代 u-boot 命令、
    software-dl.ti.com/.../Overview.html

    以下 u-boot 命令等效于1.2.4.6节中的替代 u-boot 命令。 您仍然需要设置 tftp 服务器。
    #运行 get_ubi-net
    运行 burn_ubi

    如果这解决了您的问题、请单击"已解决"。 如果您想进行 nandwrite、我将把该线程分配给 RTOS 工程师。

    谢谢!

    雷克斯