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.

[参考译文] AM5749:AM5749:AM5749自定义电路板上用于连接 FPGA 的 GPMC 设置不正确。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1164995/am5749-am5749-gpmc-setting-for-connect-fpga-is-not-correct-on-am5749-custom-board

器件型号:AM5749

(因为没有回复,所以我新设了一个与此无关的帖子。 抱歉。)

您好

使用 DTS 文件说明设置 GPMC 时遇到问题。

我正在使用 SDK-Linux-am57xx-EVM-08_02_01_00和 SD 卡引导。

我修改 dra7.dtsi 和 am574x-idk.dts 文件、如下所示。

=== dra7.dtsi ===

/* OCP2SCP1 */
对于 DWC3_3和 DWC3_4、/* IRQ 需要 IRQ 交叉开关*/
GPMC:GPMC@50000000{
兼容="ti、am3352-gpmC";
ti、hwmds ="gpmC";
REG =<0x50000000 0x37c>;/*器件 IO 寄存器*/
中断= ;
DMA =<&EDMA_Xbar 4 0>;
dma-names ="rxtx";
GPMC、num-cs =<8>;
GPMC、num-waitpins =<2>;
#address-cells =<2>;
大小单元格=<1>;
中断控制器;
#interrupt-cells =<2>;
GPIO 控制器;
#GPIO-cells =<2>;
状态="正常";       //<=此处已更改
};

==== am574x-idk.dts ===

GPMC{
状态="正常";
//reg =<0 0x50000000 0 0x37c>;// 64位器件 IO 寄存器
//compatible ="ti、am5532-gpMC";
//ti、hwmod ="gpmC";
TI、无空闲启动;
pinctrl-names ="default";
pinctrl-0 =<&ADRs_GPMC_DEFAULT>;
//中断控制器;
//GPIO 控制器;

#address-cell =<2>;
size-cell =<1>;
范围=<0 0x01000000 0x01000000>;//最小 GPMC 分区= 64MB
//3 0 0x20000000 0x10000000>;//最小 GPMC 分区= 64MB

fpgacs0@0、0{
//status ="确定";
REG =<0 0x01000000 0x04000000>;

组宽度=<2>;
//中断父级= ;
//中断=<0>;

GPMC、同步读取;
GPMC、同步写入;
GPMC、器件宽度=<2>;// 16位
GPMC、mux-add-data =<1>;// 1:AAD、2:AD
GPMC、突发长度=<16>;// 16字

};

};

&dra7_PMX_CORE{
idk_led_rgb0b_default:idk_led_rgb0b_default{
pinctrl-single、pins =<
DRA7XX_CORE_IOPAD (0x3714、PIN_OUTPUT | MUX_MODE14)// GPIO1_4
>;
};

ADRs_GPMC_DEFAULT:ADRs_GPMC_DEFAULT{
pinctrl-single、pins =<
DRA7XX_CORE_IOPAD (0x3400、PIN_INPUT | MUX_MODE0)// GPMC_AD0
DRA7XX_CORE_IOPAD (0x3404、PIN_INPUT | MUX_MODE0)// GPMC_AD1
DRA7XX_CORE_IOPAD (0x3408、PIN_INPUT | MUX_MODE0)// GPMC_AD2
DRA7XX_CORE_IOPAD (0x340c、PIN_INPUT | MUX_MODE0)// GPMC_AD3
DRA7XX_CORE_IOPAD (0x3410、PIN_INPUT | MUX_MODE0)// GPMC_AD4

(笑声)

};

};

修改后、我使用"make linux-dtbs"命令进行编译并成功编译。

我使用 sudo 权限将文件 am574x-idk.dTB 复制到 SD 卡(/media/someone/rootfs/boot)、文件时间也随之改变。

但 GPMC 的 Booting 消息看起来不起作用

==== 正在引导消息====

[5.586914]正在注册 SWP/SWPB 仿真处理程序
[5.592041] OMAP_VOLTGE_LARD_INIT:未添加电压驱动器支持
[5.598419] TI OMAP4+器件的电源管理。
[5.603637]正在加载已编译的 X.509证书
[5.628051] DMM 4e000000.DMM:使用中的勘误表 i878的权变措施
[5.635375] DMM 4e000000.DMM:已初始化所有 PAT 条目
[5.642059][DRM]为次要0上的 omapdrm.0初始化了 omapdrm 1.0.0 20110917
[5.649505] OMAP-GPMC 50000000。GPMC:GPMC 版本6.0
[5.654663] GPMC_mem_init:禁用映射在0x0-0x1000000的 CS 0
[5.661071] OMAP-GPMC 50000000。GPMC:无法将 GPMC CS 0重新映射到0x0000000002000000
[5.668579] OMAP-GPMC 50000000。GPMC:无法探测 DT 子'fpgacs0':-22
[5.675964] V3_3D:由 smps9提供
[5.680053] VTT_FIXED:由 V3_3D 供电
[5.685089]已注册 OMAP-iommu 40d01000.MMU:40d01000.MMU
[5.692474]已注册 OMAP-iommu 40d02000.MMU:40d02000.MMU
[5.698669]平台40800000。dsp:添加到 iommu 组0
[5.705169]已注册 OMAP-IMU 588820.MMU:588820.MMU

启动后、命令"cat /proc/iomem "会打印如下所示。

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

root@am57xx-EVM:~# cat /proc/iomem
40300000-4037FFFF:40300000。ocmcram ocmcram@40300000
40d01000-40d010ff:40d01000.MMU MMU@0
40d02000-40d020ff:40d020.MMU MMU@0
41501000-415010ff:41501000.MMU MMU@0
41502000-415020ff:415020.MMU MMU@0
43300000-433ffff:43300000。DMA EDMA3_cc

4ae0c154-4ae0c157:4ae07de4.reguler-abb-GPU ldo-address
4ae0c158-4ae0c15b:4ae07ddc.reguler-abb-MPU ldo-address
4ae10000-4ae101ff:4ae1000.GPIO@0
4ae20000-4ae2007f:4ae2000.timer timer@0
4b300000-4b3000ff:4b300000.SPI QSPI_base
50000000-5000037b:50000000。GPMC GPMC@50000000
55082000-550820ff:550820.MMU MMU@0
58000000-5800007f:580000.DSS DSS
58001000-58001fff:58001000.dispc dispc@0
58004054-58004057:580000.dss pll1_clkctrl
58004300-5800431f:580000.DSS pll1.
58009054-58009057:580000.dss pll2_clkctrl
58009300-5800931f:580000.DSS pll2.
58882000-588820ff:588820.MMU MMU@0
8000000000-afcffff:系统 RAM
80008000-80ffff:内核代码
81200000-812fc00f:内核数据
b0000000-ffff:系统 RAM


root@am57xx-EVM:~# devmem2 0x01000000 h

/dev/mem 已打开。[75.796722]-------- [在此处剪切]-----
[75.802673]警告:CPU:0 PID:218、位于 drivers/bus/omap_l3_oc.c:141 L3_interrupt_handler + 0x294/0x38c
[75.812042] 44000000.OCP:L3自定义错误:主 MPU 目标 GPMC (读取):在功能访问期间以用户模式访问数据
[75.823120]链接的模块:Sch FQ_codel cryptodev (O)
[75.828491] CPU:0 PID:218 Comm:devmem2被污染:G O 5.10.100-g7a7a3af903 #1
[75.837066]硬件名称:通用 DRA74X (平展器件树)
[75.843200][ ](展开回扫)从[ ](show_stack+0x10/0x14)

总线错误(转储内核)
root@am57xx-EVM:~# devmem2 0x50000000 h
/dev/mem 已打开。
映射到地址 bb6f4d000的内存。
在地址0x50000000 (0xb6f4d000)处读取:0x0060
root@am57xx-EVM:~# devmem2 0x50000000 w
/dev/mem 已打开。
映射到地址 bb6f2c000的内存。
在地址0x50000000 (bb6f2c000)处读取:0x00000060
root@am57xx-EVM:~# devmem2 0x50000300 w
/dev/mem 已打开。
映射到地址 bb6f40000的内存。
在地址0x50000300 (bb6f40300):0x00000000处读取
root@am57xx-EVM:~#

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

我想使用 devmem2命令访问 GPMC 地址范围(0x00000000 ~ 0x3fff_FFFF)。

我想使用 DTS 设置解决此问题。 有可能吗?

您能否提供一些建议或了解相关主题?

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

    我更改了 DTS 中的 GPMC 部分、如下所示。

    === DTS ===

    GPMC{
    状态="正常";
    TI、无空闲启动;
    pinctrl-names ="default";
    pinctrl-0 =<&ADRs_GPMC_DEFAULT>;

    范围=<0 0x08000000 0x10000000>;//最小 GPMC 分区= 64MB

    fpgacs0@0{
    REG =<0 0x04000000>;
    组宽度=<2>;

    GPMC、同步读取;

    ===

    命令"cat /proc/iomem 显示了 GPMC 寄存器空间。

    但未显示 GPMC 数据地址。

    === cat /proc/iomem (已编辑)==

    root@am57xx-EVM:~# cat /proc/iomem
    40300000-4037FFFF:40300000。ocmcram ocmcram@40300000
    40d01000-40d010ff:40d01000.MMU MMU@0
    40d02000-40d020ff:40d020.MMU MMU@0
    41501000-415010ff:41501000.MMU MMU@0
    41502000-415020ff:415020.MMU MMU@0
    43300000-433ffff:43300000。DMA EDMA3_cc
    44000000-44ffff:440000.OCP OCP
    45000000-45000fff:440000.OCP OCP
    48020000 - 4802001f:串行
    48034000-4803407f:48034000.计时器@0
    48036000-4803607f:48036000计时器@0
    4803e000-4803e07f:4803e000计时器@0
    480511000-480511ff:480510.GPIO@0
    480530-480531ff:480530.GPIO@0
    48055000-480551ff:48055000。GPIO@0
    48057000-480571ff:48057000.GPIO@0
    480590-480591ff:480590.GPIO@0
    4805b000-4805b1ff:4805b000.GPIO@0
    4805d000-4805d1ff:4805d000.GPIO@0
    48070000-480700ff:48070000.i2c i2c@0
    48086000-4808607f:48086000计时器@0

    (笑声)

    4ae07e34-4ae07e37:4ae07e34.reguler-abb-ivahd 设置地址
    4ae0c154-4ae0c157:4ae07de4.reguler-abb-GPU ldo-address
    4ae0c158-4ae0c15b:4ae07ddc.reguler-abb-MPU ldo-address
    4ae10000-4ae101ff:4ae1000.GPIO@0
    4ae20000-4ae2007f:4ae2000.timer timer@0
    50000000-5000037b:50000000。GPMC GPMC@50000000
    55082000-550820ff:550820.MMU MMU@0
    58000000-5800007f:580000.DSS DSS
    58001000-58001fff:58001000.dispc dispc@0
    58004054-58004057:580000.dss pll1_clkctrl
    58004300-5800431f:580000.DSS pll1.
    58009054-58009057:580000.dss pll2_clkctrl
    58009300-5800931f:580000.DSS pll2.
    58882000-588820ff:588820.MMU MMU@0
    8000000000-afcffff:系统 RAM
    80008000-80ffff:内核代码
    81200000-812fc00f:内核数据
    b0000000-ffff:系统 RAM
    root@am57xx-EVM:~#

    ===========

    但该命令"devmem2 0x08000000 h"挂起 Linux。

    ===命令结果===

    root@am57xx-EVM:~# devmem2 0x50000000 h
    /dev/mem 已打开。
    映射到地址 bb6f33000的内存。
    在地址0x50000000 (0xb6f33000)处读取:0x0060
    root@am57xx-EVM:~# devmem2 0x08000000 h
    /dev/mem 已打开。                          ===(挂起、因此复位系统)

    U-Boot SPL 2021.01-00003-g16d964ac27脏污(2022年10月01日- 11:58:40 +0900)
    DRA762-GP ES1.0 ABZ 封装
    尝试从 MMC1引导
    正在从 FAT 加载环境... 好的

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

    有任何杀菌剂?

    谢谢。

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

    您好、Khoosen、

    您的问题是否仍然存在?

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

    关闭此主题。