1126292_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1126292_zh-CN

1126292_zh-CN

重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我在之前的帖子中展示了如何从 U-boot 中更新 SDK 映像。然而,在那个例子中,我没有听从自己的建议,最初我将 FMC uCode 图像刻录到闪存中的错误位置。重新启动后,我不再有以太网连接,并且需要通过我的调试器Codewarrior重新刷新 FMC 代码。在这篇文章中,我将尝试介绍我所做的恢复工作,让您了解如何通过调试器重新刷新 P3041DS,甚至是裸板。

首先,我们需要 Codewarrior。我目前在 Windows 主机上使用版本 10.2,但看起来Codewarrior 10.3是目前最新版本。您还需要一个硬件 TAP,可以是 USB Tap、Codewarrior TAP、GigaTap 或以太网 Tap。对于 P3041,这需要一个 COP 接口 16 针接头。我的 USB 分接头已借出,因此我使用以太网分接头,这提供了通过 LAN 访问的额外便利。

为了本文的目的,我假设我已经清除了 NOR 闪存中的所有内容(包括 RCW)。这与从工厂返回的一块空白板的情况类似。在这种情况下,为了连接调试器,我们需要设置硬编码的 RCW。从 P3041DS 文档中,我看到 DIP 开关 SW1 配置 RCW_SRC

sw1.JPG

我需要一个硬编码的 RCW 选项,因此我将查看 P3041RM 以找出应将 cfg_rcw_src 设置为何。

rcw.JPG

由此,我确定我想要设置 cfg_rcw_src = 1_0010,因此我在 DS 上适当地设置 SW1。

IMG_20130506_112602.jpg

请注意,在 DS 系统上,“ON”='1'

SW1 重新配置为硬编码 RCW 选项后,我将以太网 TAP 探头尖端插入 COP 接头。

IMG_20130506_112718.jpg

注意 pin1 的位置,并适当排列探头尖端。

现在是时候启动 Codewarrior 了。Codewarrior 基于eclipse 。我不会进行大型的 Eclipse 教程 - 但我会演示一些基础知识。Codewarrior 做的第一件事就是询问您工作区的位置。工作区是包含您可能拥有的任何项目的文件夹。在这种情况下,我创建了一个名为workspace_community的新文件夹。

workspace.JPG

我将为此创建一个新项目。项目包含我可能编译并下载到裸板的文件、初始化脚本以及如何连接到电路板的设置。选择文件/新建/Power Architecture 项目

我将我的项目命名为P3041DS并单击“下一步”

project.JPG

接下来,选择合适的处理器

processor.JPG

构建设置通常用于构建代码,就我而言,这真的不重要。

build.JPG

我只使用 Core0,因此我按NEXT ,然后最后选择我的 TAP 连接。就我而言,我使用的是 IP 地址为 192.168.1.76 的以太网 TAP

tap.JPG

我不打算使用跟踪,因此我可以在下一个屏幕上单击“完成” ,然后就会看到 Codewarrior 编码前景。我对编写任何代码不感兴趣,所以我要建立我的调试连接。为此,我单击工具栏上错误旁边的小向下箭头,然后选择“调试配置”

cw1.png

有三种方法可以连接到目标:

  • 附加将把调试器附加到正在运行的目标
  • 下载将重置目标,初始化它,并将代码下载到目标
  • 连接复位,初始化目标并暂停

请注意,重置和初始化是可选的,可以配置。

我将使用Codewarrior Connect ,并将为我的项目选择该选项。要配置我的连接,我可以选择连接旁边的编辑

connect.png

在这里我看到我的连接类型是以太网 TAP,具有正确的 IP 地址,正如我之前在新项目向导中选择的那样。

connection.png

如果我想更改我的初始化脚本,我会选择目标旁边的“编辑”

initialization.png

这将打开一个屏幕,其中显示用于连接特定目标的选项。您可以选择重置核心或不重置,也可以选择使用脚本初始化目标。默认脚本可以作为定制板的参考。它们初始化 DDR、MMU、本地总线等参数,以便调试器能够访问这些外围设备。再次强调,我不会详述细节。安装中包含 Codewarrior 文档,通常位于C:\Program Files\Freescale\CW PA v10.xx\PA\Help\PDF目录中。

在这种情况下,我使用标准 P3041DS 系统,只需返回主调试“调试配置”屏幕并单击调试。这将通过以太网 TAP 启动与目标的连接,并将 eclipse 前景更改为调试前景。

debug_pros.png

我看到我的目标已经停止在 0xFFFFFFFC 的重置向量处。在右下角我有一个调试器外壳。如果它不在您的视图中,您可以通过窗口/显示视图/调试器 Shell 启用它

在调试器 Shell 中,我可以直接向调试器输入命令。例如,为了读取并验证 DDR 是否正常工作,我将转储从地址 0x0 开始的 20 个位置

mem 0x0 20

这应该在默认项目上返回 0xdeadbeef,因为这是在初始化文件中将 flash 初始化的值。我可以对 flash 做同样的事情:

     mem 0xe8000000 20

这应该返回闪存的前 20 个位置,这是我的重置配置字应该存储的地方。如果这两者都返回数据,我们就可以刻录闪存了。

Codewarrior Flash 刻录机通过 Codewarrior 10.x 中的目标任务运行。目标任务定义了闪存接口、地址和要刻录的图像。在目标任务视图中,单击绿色加号图标以添加目标任务。

target_task.png

这将打开一个窗口,我们可以在其中命名任务。任务类型应为闪存编程器。硬件诊断任务类型对于运行内存测试很有用,但这在 Codewarrior 文档中有所讨论。运行配置描述了我们如何连接到电路板。由于我已经通过项目连接到目标,因此我选择 Active Debug Context。

target_t_2.png

应显示与创建的任务相对应的视图。此时,我们需要添加闪存设备。闪存基地址是您可以通过单击“添加设备”窗口中组织右侧来更改组织。这将显示一个包含各个组织的下拉菜单。

flash_type.png

基地址是通过初始化脚本配置的。默认情况下,此设置为 0xE8000000。目标 RAM 定义了目标上供算法使用的缓冲区。在视图的底部,可以添加 Flash 程序员操作,描述要执行的操作。示例包括擦除或编程文件。可以设置多个操作,例如擦除整个闪存、编程 RCW、FMC uCode 和 Uboot。

在这张图片中,我添加了一个操作来将 bin 文件中包含的 RCW 编程到位置 0xe8000000。由于二进制文件没有偏移量,我需要将地址偏移量 0xe8000000 应用于该文件。我指示它在编程之前也擦除扇区,并将操作限制在受影响的扇区内。

rcw.png

当我添加了所有需要的内容后,请务必保存目标任务。下面是我的目标任务更新 RCW 和 Fman UCode 的屏幕截图。

flash_final.png

我会将它保存到框架中,这意味着它是项目的一部分。

然后,要运行闪存编程器,只需单击目标任务视图中的绿色“播放”箭头。编程器应该运行,如果成功,将在 Codewarrior 闪存编程器控制台中打印一条消息。

console.png

您现在可以断开 codewarrior(红色停止按钮图标),并尝试启动您的系统。请记住,DIP 开关仍然设置为硬配置重置配置字,因此我一定要先将它们改回来。

Qonverge回复:重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

下划线只是让它更容易阅读 - 没有别的作用。它有时被用来打破一小口。

保留值可以是任何值。有时它们是空白的——没有任何意义。有时它们是内部测试模式等等......

对于大多数 QorIQ 部件,我们将内容按 MSB 到 LSB 列出。例如我现在打开了 P3041RM。

LAD[0:15] - LAD0 是 MSB

LCS[0:7] - LCS0 是 MSB

EC1_RXD[3:0] - RXD3 为 MSB

回复:重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

保罗,


感谢您回复我。我有一个后续问题。


为什么显示的位在第 0 位和第 1 位之间显示下划线“_”?

 

下划线的意义是什么...只是为了更容易查看而分解一部分吗?


根据此回复,我们一直误解了硬编码 POR 配置输入以及非硬编码 POR 配置。


当你转到保留值时会发生什么?


我们的主板是几年前设计的,但我们不断发现一些奇怪的行为。


鲍勃

 

回复:重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

这些位(至少在 Power Architecture 上)通常按 MSB 到 LSB(从左到右)的方式书写。因此,在 cfg_rcw_src[0:4] 的情况下,crg_rcw_src0 是 MSB。这对应于 LGPL0。

因此,当写入 cfg_rcw_src[0:4]=1_0010 时:

cfg_rcw_src0 = lgpl0 = 1

cfg_rcw_src1 = lgpl1 = 0

cfg_rcw_src2 = lgpl2 = 0

cfg_rcw_src3 = lgpl3 = 1

cfg_rcw_src4 = lgpl4 = 0

回复:重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

保罗,

我是一名硬件工程师,对于如何将 cfg_rcw_scr(0:4) 与实际硬件信号关联感到困惑。这种混淆导致无法确定 cfg_rcw_scr 位的最高有效位。

对于上面显示的硬编码表表 4-32,对于等于 cfg_rcw_src(0:4) 的 1_0010,最高有效位是什么,cfg_rcw_src[0] 还是 cfg_rcw_src[4]?

对于下面显示的 LGPLx 硬件信号,当您写入 cfg_rcw_src(0:4) = 1_0010 时,哪个是 msb 是不明确的。硬件约定建议最左边的数字是 msb,它是 cfg_rcw_src(0)。

 

Cfg_rcw_src[0] = LGPL0

 

Cfg_rcw_src[1] = LGPL1

 

Cfg_rcw_src[2] = LGPL2

 

Cfg_rcw_src[3] = LGPL3

 

Cfg_rcw_src[4] = LGPL5

 

你能解释一下其中的歧义吗?

谢谢!

鲍勃

回复:重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

无论如何,我想我找到了这个问题的答案。它位于 QorIQ_SDK_Infocenter.pdf 文档内。以下是有关如何构建 u-boot 以支持 CW 的步骤。

这些步骤是否也适用于生成 u-boot elf 文件?

问:如何使用调试器(CodeWarrior 支持)构建 u-boot/内核?

答:对于 u-boot:

1. $ cd

2. $ bitbake -c cleansstate u-boot

3.修改u-boot_git.bb文件,添加以下内容:

• $ cd meta-fsl-ppc/recipes-kernel/u-boot

• $ add 'EXTRA_OEMAKE += "CONFIG_CW=1"' in u-boot_git.bb file

4.重建u-boot:

•$ bitbake u-boot

回复:重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Hi Marius,

我已经重新安装了最新的 CW 并设法找到了文档Targeting_PA_Processors.pdf

文档中提到我们必须构建具有 Code Warrior Debugger 支持的 u-boot 或者构建 u-boot elf 文件。它谈论的是文件夹iso/help/documents/pdf,我可以在其中找到有关如何执行这些操作的步骤,但我不知道这个文件夹在哪里。

如何在 yocto 构建环境中构建 u-boot elf 或构建支持 CW 的 u-boot?

回复:重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我将对 Flash 编程器例程做一个小小的说明。使用“已经准备好的”闪存编程器目标任务而不是制作一些新的任务非常简单。

只需右键单击并导入您的主板所需的 FP 目标任务。这些提供的目标任务的最好的部分在于它们已经构建了所有必要的闪存设备和内存设置。

此致,

Marius

回复:重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Hi,

P3041DS 处的 u-boot 必须写入 NOR flash 的最后 512KB 中。是的,过程类似,只需使用从 0xeff80000 开始的起始地址。

对于 u-boot 调试,请查看 PA\Help\PDF\Targeting_PA_Processors.pdf 中有关

<5.4.6 从 NOR、NAND、SPI 和SDCard/MMC 闪存设备调试 U-Boot>章节。

此致,

Marius

回复:重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我也对 u-boot 的刷新感兴趣。如果有的话就太好了。

回复:重新刷新 P3041DS<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Hi Paul,

感谢上述有用的文档。我有几个问题希望您能给我一些提示:

1) 您在文档中展示了如何将 rcw 和 fman ucode 刷入闪存。那么刷写u-boot的过程也是类似的吗?

2)如何使用 Code Warehouse 和 USB Tap 调试 u-boot(在 yocto 环境中编译)?有关于这个过程的任何文档吗?

Tags (1)
No ratings
Version history
Last update:
‎01-06-2026 01:15 AM
Updated by: