编辑焊盘控制寄存器无效

时间:2015-05-18 00:05:20

标签: linux-kernel beagleboneblack

在阅读AM3359技术参考手册后,我看到您可以编辑焊盘控制寄存器(引脚复用器)。我尝试使用devmem2编辑这些寄存器,它说它成功写入它但在再次读取值时它完全相同。

我使用命令sudo devmem2 0x44E10818 w 0x7并返回

Value at address 0x44E10818 (0xb6f2c818): 0x31
Written 0x7; readback 0x7

然后我又读了它,它的值是:0x31。 我能想到的是,linux内核中可能存在一些设置值的东西。导致多路复用器保持其值的原因是什么?

1 个答案:

答案 0 :(得分:2)

AM335x TRM我可以看到:

  • 0x44E10000是控制模块寄存器库的地址(来自第2节"存储器映射")
  • 0x818conf_gpmc_ad6(来自第9节"控制模块")

AM335x datasheet我看到:

  • GPMC_AD6 pad是R9球(对于ZCZ SoC,你在BBB上有)

BBB Rev. A6 schematics我看到:

  • R9球已连接至MMC1_DAT6
  • MMC1_DAT6行已连接到eMMC flash

从您的问题(使用TRM)我可以得出结论:

  • 默认情况下,此引脚在mmc1_dat6模式
  • 中复用
  • 您正尝试将其重新调整为gpio1_6模式

因此,从这次调查中我可以说你不应该重新启动该引脚(即使它是可能的),因为它需要被复用为mmc1_dat6以便eMMC可以访问你的SoC。

如果确实需要将其复制为gpio1_6,请务必首先在设备树文件中更改它的mux模式(并用新的文件替换BBB上的dtb文件)。在这种情况下,您无法将8-bit mode用于eMMC,因此您可能需要在设备树文件中将此模式更改为4位。

参考文献:

[1] AM3359 SoC documentation

[2] BeagleBone Black (Rev. A6) documentation (schematics, etc.)