[英]How bits of this register is set in u-boot
我試圖弄清楚如何使用 u-boot 中的以下語句設置“SRAM_CTL1_CFG”寄存器的第 4 位和第 5 位:
/* Map SRAM to EMAC */
setbits_le32(&sram->ctrl1, 0x5 << 2);
根據數據表,如果此“SRAM_CTL1_CFG”的位 4:5 變為“01”,則 SRAM 將映射到 EMAC 外設。
http://linux-sunxi.org/SRAM_Controller_Register_Guide
這個setbits_le32(&sram->ctrl1, 0x5 << 2)
應該是setbits_le32(&sram->ctrl1, 0x4 << 2)
嗎?
所以,答案是肯定的,(0x5 << 2),十進制的 20 是二進制的 010100,我們將“4:5”設置為“01”,即 EMAC,並將第 2 位設置為 1。設置第 2 位to 1 目前是我們正在設置的魔法值,因為它是在 allwinner 提供的來源中設置的(大概,我沒有追溯所有歷史),沒有進一步解釋。 將此設置為 (0x4 << 2) 只會設置聲明的寄存器,但在其他也需要魔術值的板上可能會有一些隱藏的損壞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.