關於樹莓派Pi 3B的位址對映問題

2021-09-11 22:46:20 字數 1024 閱讀 6530

關於樹莓派pi 3b的位址對映問題

摘要:

在裝置驅動程式的開發過程中,我們通常需要跟硬體位址打交道。在不帶作業系統的嵌入式平台上(譬如微控制器,stm32等),我們直接操作的是硬體實體地址。但是在基於linux的嵌入式平台上,我們需要與作業系統打交道。作業系統操作的是虛擬位址,因此我們有將物理位址對映成為虛擬位址的操作。

從這個圖示中我們可以看到三個位址,乙個是arm虛擬位址,乙個是arm實體地址。它們之間通過arm mmu來對映。還有乙個是vc cpu匯流排位址。這是我們直接操作暫存器的位址,vc cpu 匯流排位址通過vc/arm mmu與arm實體地址進行對映。我現在是要操作gpio,我們來看看gpio的位址對映。

首先我們需要知道bcm2835的io基址裝載在0x20000000,但是bcm2837有一點不同是裝載在0x3f000000,這可以從官方文件獲知: 。

那麼現在io在vc cpu匯流排上的基址是0x7e000000,在實體地址上的基址是0x3f000000。

我麼來看操作gpio的暫存器,現在假設我需要操作gpio2,輸出高電平。查閱bcm2835晶元手冊【89-90頁】:

我們只需要操作gpfsel0暫存器(gpio0-gpio9的功能選擇暫存器),gpset0暫存器(設定gpio0-gpio31高電平暫存器)。現在只需要獲取這兩個暫存器的位址即可。

我們發現gpfsel0暫存器vc cpu匯流排位址是0x7e200000,相對基址偏移0x00200000,那麼arm實體地址也是偏移這麼多,其arm實體地址是0x3f200000。同理,gpset0的arm實體地址是0x3f20001c。我們在嵌入式linux中,可以使用mmap函式或者ioremap函式將這兩個arm物理位址對映成虛擬位址,就等同於直接操作gpio硬體位址了。

樹莓派 樹莓派3B 的系統安裝

樹莓派3b 系統安裝 參考 樹莓派3b 安裝系統 建議使用谷歌瀏覽器,看不懂可以一鍵翻譯,比較方便,其他瀏覽器可不可以我已經不記得了 解壓後 3.52g 準備一張sd卡 其實u盤也可,我用的u盤 最起碼16g,稍大點比較好,我用的是32gu盤 windows系統下安裝 1.用讀卡器連線sd卡與電腦,...

關於樹莓派3B的一些配置

參考樹莓派更換更新國內源 參考樹莓派設定解析度 參考樹莓派 raspberry pi 學習10 安裝ftp伺服器 剛安裝好的樹莓派 linux 系統沒有設定root使用者密碼的,我們需要先設定root使用者的密碼,在命令列介面下,或者在終端中輸入命令 sudo passwd或者sudo passwd...

樹莓派3B 的串列埠使用

摘要 我們在使用樹莓派做串列埠開發時,需要深入了解樹莓派的串列埠,具體的參考官方文件見 簡單介紹 樹莓派有兩個內建串列埠,乙個是pl011 uart,乙個是mini uart。這兩個串列埠都由不同的硬體模組實現,所有稍微有些不同,但都是3.3v電壓的串列埠。預設情況下,pl011 uart連線了藍芽...