⑴ arm-linux平台,如何知道一個外設的物理地址
HD7279A上都沒有地址線,數據線,應該沒有所謂的物理地址。
⑵ gccarm 下如何為變數指定固定地址
先建立一個足夠大的數組。然後從這個數組頭地址開始找後5bit是0的地址。
建立結構體指針指向這個地址。
雖然這個方法很啰嗦。而且結構也不太好不過可以解決你的問題。
⑶ arm IO口 地址
#define SPI_CS 0x00000100 /* P0.8 */
0x00000100 你看ARM的指導手冊。。。這個代表一個物理地址。都是ARM出廠時規定好的
0x00000100 就是P0.8這個口
define 是宏定義 把SPI_CS這個SPI片選引腳(這時是軟體上的,沒有實際用途 只是一個符號)和硬體地址聯系起來 聯系以後 可以用SPI_CS代表片選信號進行操作了。。。(你總不能每次對SPI片選操作都用0x00000100這么長地址表示吧,當然 你也可以直接誒用 0x00000100來操作。。這個不直觀對吧)
麻煩詳細解釋下 0X00000100 等 與P0.8 等之間的關系 如何轉換的 為什麼?
這個沒有轉換!0X00000100就是p0.8口。。。物理地址出廠就這么定義的,真正要轉換的 也只能說是用SPI_CS 代表 0x00000100
⑷ arm中,建立頁表,通過虛擬地址訪問物理地址跟直接訪問物理地址有什麼區別有什麼好處麻煩大神講詳
沒法詳細,去看看計算機組成原理吧。最基礎的,如果直接訪問物理地址,那可定址范圍就太少了。比如,2^32才4G.
⑸ ARM怎麼給數組指定地址
按下面格式定義就好了 INT8U TempBuf [1024] __attribute__((at(0X20002000))) = {0}; 不過地址 0X20002000這些要看你自己的片子了 呵呵 盡量大點 避免沖突
⑹ ARM 寄存器配置
是在整個地址空間里給這個寄存器單獨分配的,這是一個固定的物理地址,就算是內存重映射了,晶元內部會處理好映射的地址轉換,操作重映射後的內存地址空間不會影響寄存器。
⑺ 關於arm通用寄存器物理地址的問題
像這樣存在CPU內部的寄存器我們是不知道他們的地址的,平常我們說的地址都是說內存地址,更有說法是這種寄存器是沒有地址的!他們的訪問不是通過地址去訪問的,直接通過匯編指令中的寄存器名訪問的!所以你datasheet肯定是找不到的!datasheet上面能找到的是memory address,比如32位地址線的會有一個4G的空間,這樣的內存是通過地址線去訪問,而在CPU內部的寄存器是不通過地址線去訪問的!
⑻ 在ARM匯編編程中如何指定某段程序的存儲地址
在要指定代碼的存儲空間不是一件特別簡單的事情,尤其是你想為某個或某幾個函數指定具體的地址。
1,編譯器只有在最終的Link階段才會為代碼和數據分配內存地址,因此指定代碼段的地址一般是通過寫一個link腳本來進行的。Link階段時,編譯器的Linker會讀取你寫的Link腳本,並且按照腳本的規定給代碼分配地址。
2,根據ARM開發工具的不同,link腳本的語法和形式也有所不同。ARM MDK,ARM ADS,Eclips+GCC,Linux GCC, ARM Realview等開發工具都支持Link腳本。
如果你英文還可以,建議你直接找到開發工具的Help手冊去研究。如果你英語實在不行,也可以把開發工具名稱和你代碼的具體情況告訴我,我幫你看看。
⑼ arm dsp 物理地址
AT91_CHIPSELECT_2或者AT91_CHIPSELECT_3。
ARM啟動時,32位地址匯流排能定址4G地址,晶元啟動時總是從0地址啟動,所以匯流排上的0地址是作為映射用的,映射啟動代碼,並不是內存中的實際0地址,匯流排上的所有地址都是作為一個映射,都是由硬體設計去分配的。物理地址是從地址匯流排上傳來的地址,經過MMU(MMU作為硬體可選擇的一部分)由虛擬地址轉化之後形成的地址。32位CPU一共可定址4GB,這4GB並不是全部分配給內存,有一部分要分配給匯流排使用(匯流排上掛著很多外設),一般是低地址給內存,高地址給匯流排,外設使用的是匯流排地址,CPU使用的是物理地址(獨立編制)。沒有MMU或者有MMU但沒有啟用的晶元,CPU出來的地址直接送到匯流排然後被內存單元接收,這就叫物理地址。
⑽ ARM如何分配寄存器地址!
教你操作寄存器! 首先你要知道這個寄存器的地址.
比如說我知道某寄存器地址是4001140cH, 然後就
*(unsigned long*)0x4001140c=~0;//賦最大值(僅供參考)
arm晶元是統一編址的,對寄存器可間接定址.
(即 可使用指針)
51單片機 不是, 它地址重疊,
正是用這兩種不同的定址方式來
區分操作的是內存還是寄存器..