在阅读AM3359技术参考手册后,我看到您可以编辑焊盘控制寄存器(引脚复用器)。我尝试使用devmem2编辑这些寄存器,它说它成功写入它但在再次读取值时它完全相同。
我使用命令sudo devmem2 0x44E10818 w 0x7
并返回
Value at address 0x44E10818 (0xb6f2c818): 0x31
Written 0x7; readback 0x7
然后我又读了它,它的值是:0x31。 我能想到的是,linux内核中可能存在一些设置值的东西。导致多路复用器保持其值的原因是什么?
答案 0 :(得分:2)
从AM335x TRM我可以看到:
0x44E10000
是控制模块寄存器库的地址(来自第2节"存储器映射")0x818
为conf_gpmc_ad6
(来自第9节"控制模块")从AM335x datasheet我看到:
GPMC_AD6
pad是R9
球(对于ZCZ
SoC,你在BBB上有)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位。
参考文献:
[2] BeagleBone Black (Rev. A6) documentation (schematics, etc.)