簡體   English   中英

如何在 u-boot 中設置此寄存器的位

[英]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);

http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/net/sunxi_emac.c;h=11cd0ea06888ba8e271b0c10376306df5291a3e2;hb=HEAD#l503

根據數據表,如果此“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM