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.

[参考译文] AM263P4-Q1:刷写定制电路板

Guru**** 2393725 points
Other Parts Discussed in Thread: UNIFLASH, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1507864/am263p4-q1-flashing-custom-board

器件型号:AM263P4-Q1
Thread 中讨论的其他器件:UNIFLASHSYSCONFIG

工具/软件:

嘿、专家、

我有一个有关刷写定制电路板的问题。  
作为使用 IS25LX064的闪存 iam (与 eval 板相同、只是带有64MB RAM 而不是256MB)

作为 SW、我要使用:
CCS 12.8.1.00005
SDK 10_00_00_35
Uniflash 8.1.4983

首先我阅读本指南: https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/latest/exports/docs/api_guide_am263px/CUSTOM_FLASH_SUPPORT_GUIDE.html 并运行 ospi 闪存诊断示例、输出如下:

Cortex_R5_0][OSPI 闪存诊断测试]正在启动...

[OSPI 闪存诊断测试]闪存制造商 ID:0x9D

[OSPI 闪存诊断测试]闪存器件 ID      :0x5A17

[OSPI 闪存诊断测试]在第一个块上执行闪存擦除...

[OSPI 闪存诊断测试]已完成!!

[OSPI 闪存诊断测试]执行读写测试...

[OSPI 闪存诊断测试]读写测试通过!

[QSPI 闪存诊断测试] SFDP 信息:

============================================

                     SFDP                      

============================================

SFDP 主要修订版                      :0x1

SFDP 次要版本                      :0x9

此表中的参数标题数:3.

 

此闪存中其他参数表的类型

--------------------------------------------------------

4字节寻址模式指令表

NOR SPI 配置文件表

闪存的 JSON 数据:

 

 

"flashSize":8388608,

"flashPageSize":256、

"flashManfId":"0x9D"、

"flashDeviceId":"0x5A17"、

"flashBlockSize":131072、

"flashSectorSize":4096、

"cmdBlockErase3B":"0xD8"、

"cmdBlockErase4B":"0xDC"、

"cmdSectorErase3B":"0x20"、

"cmdSectorErase4B":"0x21"、

"原型":{

"P111":{

"isDtr":false、

"cmdRd":"0x03"、

"cmdWr":"0x02"、

"modeClksCmd":0、

"modeClksRd":0、

"dummyClksCmd":0、

"dummyClksRd":0、

"enableType":"0"、

"enableSeq":"0x00"、

"dummyCfg":null、

"protocfg":null、

"strDtrCfg":空

}、

"P112":空、

"P114":空、

"P118":{

"isDtr":false、

"cmdRd":"0x7C"、

"cmdWr":"0x84"、

"modeClksCmd":0、

"modeClksRd":1、

"dummyClksCmd":0、

"dummyClksRd":7、

"enableType":"0"、

"enableSeq":"0x00"、

"dummyCfg":null、

"protocfg":null、

"strDtrCfg":空

}、

"p444s":空、

"p444d":空、

"p888s":空、

"p888d":{

"isDtr":false、

"cmdRd":"0x0B"、

"cmdWr":"0x12"、

"modeClksCmd":0、

"modeClksRd":0、

"dummyClksCmd":8、

"dummyClksRd":32,

"enableType":"0"、

"enableSeq":"0x00"、

"dummyCfg":{

"isAddrReg":错误、

"cmdRegRd":"0x00"、

"cmdRegWr":"0x00"、

"cfgReg":"0x00000000"、

"移位":0、

"Mask":"0x00"、

BitP":31

}、

"protocfg":{

"isAddrReg":错误、

"cmdRegRd":"0x00"、

"cmdRegWr":"0x00"、

"cfgReg":"0x00000000"、

"shift":0、

"Mask":"0x00"、

"BitP":0

}、

"strDtrCfg":{

"isAddrReg":错误、

"cmdRegRd":"0x00"、

"cmdRegWr":"0x00"、

"cfgReg":"0x00000000"、

"shift":0、

"Mask":"0x00"、

"BitP":0

}

}、

"pCustom (pCustom)":{

"fxn":空

}

}、

"addrByteSupport":"1"、

"fourByteAddrEnSeq":"0x22"、

"cmdExtType":"repeat"、

"ResetType":"0x30"、

"deviceBusyType":"0"、

"cmdWren":"0x06"、

"cmdRdsr":"0x05"、

"srWip": 0、

"srWel": 0、

"cmdChipErase":"0xC7"、

"rdIdSettings":{

"cmd":"0x9F"、

"numBytes":5、

"dummy4":0、

"dummy8":0

}、

"xspiWipRdCmd":"0x00"、

"xspiWipReg":"0x00000000"、

"xspiWipBit":0、

"flashDeviceBusyTimeout":20000000、

"flashPageProgTimeout":120

}

 

所有测试均已通过!!

我得出结论、我的闪存连接正确吗?
我想知道为什么这与 SDK 中提供的 Jason 数据不同(请参阅随附的文件)。

之后我获取了 flasher_JTAG_uniflash_am263px-LP 示例、调整了 SysConfig 中的引脚排列并更改了闪存设置(只是 ID 和大小、如果我更改了其他参数、它将不再起作用)

然后、我选择了 Uniflashtool,选择了 cosum flasher  并具有我所改编的 lasher_JTAG_uniflash_am263px-LP 示例的正确路径、并刷写了修改后的 sbl_ospi 和我的应用程序:

在这里、我不确定外部闪存位于哪个地址的定义。 我只是拿了我在 am263p-cc 评估板上测试时使用的地址。  
当我加载文件时、unifflash 表示可以刷新:

但当我尝试读取地址0x60000000处的存储器时、只有0。 这里没有任何内容。

有什么想法,我做错了?

此致

Marcel

 

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

    您好:Marcel、

    您需要在 SysConfig 中对闪存配置进行一些更改。  

    为了验证闪存是否正常工作、我们可以使用 ospi_flash_io 中的示例 examples/drivers/ospi/ospi_flash_io

    更改闪存配置之前、请在闪存上运行诊断示例并记下 SFDP 表。

    请按照以下步骤操作、

    1.打开 SDK 中的 ospi_flash_io 示例(确保所有设置都完好无损、SysConfig 中的配置都未更改)。 此外、您可以确保它在 LaunchPad 上正常工作。

    2.打开 SysConfig 中的"闪存驱动程序"部分。 (SYSCONFIG > TI 驱动程序>闪存)

    3.更改 "闪存中的闪存大小">"基本闪存配置">"以字节为单位的闪存大小" 如 SFDP 表中所示

    4、更改  闪存 JEDEC 制造商 ID JEDEC 器件 ID 如 SFDP 表中所示

    5、更改 闪存繁忙超时 如 SFDP 表中所示

    6.其他配置可以保留为以前的配置。

    现在运行示例、如果控制台/串行终端中出现成功消息、则我们可以写入和读取闪存。 通过这种方法、可以验证闪存读写。

    [注意:在更改这些配置时、OSPI 输出引脚有可能自动更改。 重新配置前确保锁定销钉、完成后再次锁定。]

    我没有64MB 闪存、但512MB 闪存与我一起使用、并在这里验证了相同的内容、我进行了这些更改。  

    另外、该文件似乎没有附加。 您能再附加一次吗?

    此致、

    Aswin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    但当我尝试读取地址0x60000000处的存储器时、只有零。 这里没有任何内容。

    有什么想法,我做错了?
    [/报价]

    您如何读取存储器?

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

    使用 Uniflashtool 的 IAM:

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

    您好:Marcel、

    Uniflash 工具出现问题、

    我在0x60000000位置刷写了 SBL NULL、正如您在 COM 端口打印中看到的那样。 即使如此、Uniflash 也在错误的位置显示0x0。

    使用闪存读取 API 读取应用程序中的闪存内容  

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

    我已刷写 SBL OSPI 和 hello world、当我从 CCS 的"Memory Browser"中检查时、我能够看到正确的内容。

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

    这是我想在最后一篇文章中上传的 SDK 闪存的 Jason 文件:

    "flashSize":8388608,
    "flashPageSize":256、
    "flashManfId":"0x9D"、
    "flashDeviceId":"0x5A17"、
    "flashBlockSize":131072、
    "flashSectorSize":4096、
    "cmdBlockErase3B":"0xD8"、
    "cmdBlockErase4B":"0xDC"、
    "cmdSectorErase3B":"0x20"、
    "cmdSectorErase4B":"0x21"、
    "原型":{
    "P111":{
    "isDtr":false、
    "cmdRd":"0x03"、
    "cmdWr":"0x02"、
    "modeClksCmd":0、
    "modeClksRd":0、
    "dummyClksCmd":0、
    "dummyClksRd":0、
    "enableType":"0"、
    "enableSeq":"0x00"、
    "dummyCfg":null、
    "protocfg":null、
    "strDtrCfg":空
    }、
    "P112":空、
    "P114":空、
    "P118":{
    "isDtr":false、
    "cmdRd":"0x7C"、
    "cmdWr":"0x84"、
    "modeClksCmd":0、
    "modeClksRd":0、
    "dummyClksCmd":0、
    "dummyClksRd":7、
    "enableType":"0"、
    "enableSeq":"0x00"、
    "dummyCfg":null、
    "protocfg":null、
    "strDtrCfg":空
    }、
    "p444s":空、
    "p444d":空、
    "p888s":空、
    "p888d":{
    "isDtr":false、
    "cmdRd":"0x7C"、
    "cmdWr":"0x84"、
    "modeClksCmd":0、
    "modeClksRd":0、
    "dummyClksCmd":16,
    "dummyClksRd":16,
    "enableType":"0"、
    "enableSeq":"0x00"、
    "dummyCfg":{
    "isAddrReg":正确、
    "cmdRegRd":"0x85"、
    "cmdRegWr":"0x81"、
    "cfgReg":"1"、
    "移位":0、
    "mask":"0xFF"、
    bitP":16
    }、
    "protocfg":{
    "isAddrReg":正确、
    "cmdRegRd":"0x85"、
    "cmdRegWr":"0x81"、
    "cfgReg":"0"、
    "shift":0、
    "mask":"0xFF"、
    231.
    }、
    "strDtrCfg":{
    "isAddrReg":正确、
    "cmdRegRd":"0x85"、
    "cmdRegWr":"0x81"、
    "cfgReg":"0x00000000"、
    "shift"(移位):255、
    "Mask"(掩码):255、
    "BitP":0
    }
    }、
    "pCustom (pCustom)":{
    "fxn":空
    }
    }、
    "addrByteSupport":"1"、
    "fourByteAddrEnSeq":"0xA1"、
    "cmdExtType":"repeat"、
    "ResetType":"0x30"、
    "deviceBusyType":"0"、
    "cmdWren":"0x06"、
    "cmdRdsr":"0x05"、
    "srWip":0、
    "srWel":1、
    "cmdChipErase":"0xC7"、
    "rdIdSettings":{
    "cmd":"0x9F"、
    "numBytes":5、
    "dummy4":0、
    "dummy8":8、
    "addressBytesSize":0
    }、
    "xspiWipRdCmd":"0x00"、
    "xspiWipReg":"0x00000000"、
    "xspiWipBit":0、
    "flashDeviceBusyTimeout":72000000、
    "flashPageProgTimeout":120
    }

    我尝试了  ospi_flash_io  示例。 我添加了"闪存"部分。 此外、我更改了关于我的电路板的复位引脚和 OSPI 引脚:
     


    我在调试中运行代码、所有测试都通过!

    因此可以进行读取和写入。

    此致、
    Marcel

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

    屏幕截图显示地址0x0、而不是 0x60000000

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

    您刷写了 Uniflash 工具。 您如何访问存储器浏览器? 如果你点击了调试另一个项目,你也刷新它不是你吗?

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

    您好:Marcel、

    使用 uniflash 工具刷写后、可以打开 Code Composer Studio 并启动目标配置。 连接内核、然后从"View"选项打开"Memory Browser"。

    您可以按照此方法查看存储器内容。 无需调试/刷写另一个工程。

    此致

    Aswin

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

    您好:Marcel、

    由于您现在可以读取和写入闪存、因此也可以对 flasher.out 使用相同的闪存配置。

    您现在可以使用 uniflash 工具和修改后的 flasher.out 文件进行刷写。 要读取内容、请按照存储器浏览器方法操作。

    此致、

    Aswin

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

    嘿、Aswin、

    我只是重复了这些步骤。
    我获取了  flasher_JTAG_uniflash_am263px-LP 示例、更改了 OSPI 引脚排列和闪存配置、就像我在 ospi_flash_io 示例中所做的那样。




    然后、我对电路板进行下电上电并使用 Uniflashtool 进行闪存(使用的是代价闪光器):

    之后、我启动目标配置并打开存储器视图、我仍然看到的唯一值是零:


    我使用的地址是否有问题?
    您还有其他想法、我可以测试什么?

    此致、

    Marcel

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

    您好:Marcel、  

    您能否确认  应用程序是否正在运行? 是否仅在读取内容时出现问题?

    此致、

    Aswin

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

    嘿、Aswin、

    否问题不仅在于读取内容。
    刷写后应用程序未运行。

    此致、

    Marcel

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

    您好:Marcel、  

    您能否确认您是否也针对 SBL 调整了闪存配置。 您是否使用了预编译的 SBL?

    我更改了不同闪存的闪存器和 SBL 配置、并通过刷写 hello world 示例对其进行了测试、并且能够读取和运行应用程序。

    此致、

    Aswin

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

    嘿、Aswin、

    我将 sbl_ospi_am263px-lp_r5fss0-0_nortos_ti-arm-clang 导入了我的工作区、并还更改了闪存配置和 OSPI 引脚排列。
    尽管如此,不管我在闪着什么,当我读出记忆时,我还是会想见一些东西。
    我只是用我的 am263p-cc 测试它。 我刷新了不同的文件并尝试用 uniflash 读出存储器。 我就是这样工作的。

    此致、

    Marcel

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

    嘿、Aswin、

    刚刚测试了一些新的东西。
    与我的 am263p-cc 评估板,我试图用 uniflash 闪存,但用 costum 闪存器闪存。
    在那里、我首先尝试 在没有任何更改的情况下为 cc 构建 JTAG_uniflash、并将其转换到闪存中。 闪存进程不适用于 uniflash。
    所以我使用了预编译版本。 在这里、我得到了同样的结果、就像使用成本电路板一样。 存储器中只有零

    此致、

    Marcel

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

    您好:Marcel、

    我们是否可以 使用不同的方法刷写到器件中、看看问题是否仍然存在。  

    您能使用 UART 闪存器方法吗? 您可以找到通过 UART 执行刷写的步骤 实现。

    请参阅该部分  刷写文件的基本步骤  在下  UART Uniflash  确保使用更新后的刷写器和 SBL 文件。

    此致、

    Aswin

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

    嘿、Aswin、
    只需使用评估板测试、因为这样可以更轻松地切换引导模式。
    它只是功能,但当我选择自定义闪存器没有。

    您使用什么文件作为自定义闪存器?
    我只需要为 costum flasher 命名路径、而没有其他名称吗?


    此致、

    Marcel

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

    您好:Marcel、

    请按照以下步骤使用定制闪存器进行刷写。

    1.自定义闪存器图像需要由用户生成。 为此、请 打开工程  MCU_PLUS_SDK_am263px_10_00_00_35/tools/flasher/JTAG_uniflash  工程的示例工程。  

    2.在 SysConfig 中更改闪存配置后(如果需要)、构建工程。 将得到一个.out 文件。 此.out 文件是您需要在 uniflash 中的自定义闪存器选项中提及的刷写器文件。 确保引脚配置和闪存配置正确。

    3.现在选中 Custom Flasher 复选框,并在 uniflash 中提及此.out 文件的路径和文件名。 请参阅随附的屏幕截图。

    我提到了.out 文件的路径和文件名。  

    4.现在加载 SBL 和应用程序。 在 SysConfig 中将闪存配置调整到闪存器件后加载了 SBL。

    5、按下"Load Images"按钮后应刷写器件。  

    您可以通过将器件保持在 OSPI/QSPI 引导模式来刷写器件。 另外、建议使用最新版本的 uniflash。

    此致、

    Aswin

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

    嘿、Aswin、
    "对不起,我不知道该怎么办。"
    过去、我无法更改成本电路板的引导模式、因此一直处于 DEV 引导模式。
    要检查闪存是否成功、我唯一的选择是检查存储器。
    今天我可以将引导模式更改为 ospi。 刷写成功、并且已正确引导至我的代码。
    IAM 不是很确定是否检查内存在过去没有成功或为什么它现在运行,但感谢支持,我认为我们可以解决这个问题。

    此致、

    Marcel

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

    您好:Marcel、

    很高兴听到它起作用了。  

    此致、

    Aswin