我想弄清楚" SRAM_CTL1_CFG"寄存器的第4和第5位使用u-boot中的以下语句设置:
/* Map SRAM to EMAC */
setbits_le32(&sram->ctrl1, 0x5 << 2);
根据数据表,如果这是&#34; SRAM_CTL1_CFG&#34;的第4:5位成为&#34; 01&#34; SRAM将映射到EMAC外设。
http://linux-sunxi.org/SRAM_Controller_Register_Guide
这个setbits_le32(&sram->ctrl1, 0x5 << 2)
不应该setbits_le32(&sram->ctrl1, 0x4 << 2)
吗?
答案 0 :(得分:2)
所以,答案是肯定的,(0x5&lt;&lt;&lt; 2),二进制20十进制是010100二进制,我们设置&#39; 4:5&#39;到&#39; 01&#39;这是EMAC以及将第2位设置为1.将第2位设置为1当前是我们设置的神奇值,因为它已被设置(可能,我没有追踪所有的历史背影)在所有人提供的来源中,没有进一步解释。将其设置为(0x4&lt;&lt; 2)将仅设置所声明的寄存器,但是在其他需要魔术值的板上也可能存在一些隐藏的断裂。