(因为没有回复,所以我新设了一个与此无关的帖子。 抱歉。)
您好
使用 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 设置解决此问题。 有可能吗?
您能否提供一些建议或了解相关主题?