91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM Linux中一些重要的宏及地址定義

如意 ? 來源:CSDN ? 作者:CaspianSea ? 2020-06-22 17:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1)TEXT_OFFSET 內(nèi)核在RAM中的起始位置相對于RAM起始地址偏移。值為0x00008000

。/arch/arm/Makefile

111 textofs-y := 0x00008000

112 textofs-$(CONFIG_ARCH_CLPS711X) := 0x00028000

113 # We don‘t want the htc bootloader to corrupt kernel during resume

114 textofs-$(CONFIG_PM_H1940) := 0x00108000

115 # SA1111 DMA bug: we don’t want the kernel to live in precious DMA-able memory

116 ifeq ($(CONFIG_ARCH_SA1100),y)

117 textofs-$(CONFIG_SA1111) := 0x00208000

118 endif

212 # The byte offset of the kernel image in RAM from the start of RAM.

213 TEXT_OFFSET := $(textofs-y)

2)PAGE_OFFSE 內(nèi)核鏡像起始虛擬地址。值為0xC0000000

arch/arm/Kconfig

1165 config PAGE_OFFSET ----這個就是CONFIG_PAGE_OFFSET宏,默認值為0xC0000000

1166 hex

1167 default 0x40000000 if VMSPLIT_1G

1168 default 0x80000000 if VMSPLIT_2G

1169 default 0xC0000000

。/arch/arm/include/asm/memory.h

34 #define PAGE_OFFSET UL(CONFIG_PAGE_OFFSET)

3)PHYS_OFFSET RAM啟始物理地址,對應于DDR的物理地址。需要在mach-xxxx/include/mach/memory.h文件中定義這個宏。

對于2410來說值為0x30000000,RAM接在片選6上

arch/arm/mach-s3c2410/include/mach/memory.h

#define PHYS_OFFSET UL(0x30000000)

4)KERNEL_RAM_VADDR 內(nèi)核在RAM中的虛擬地址。值為0xC0008000

5)KERNEL_RAM_PADDR 內(nèi)核在RAM中的物理地址。值為0x30008000

arch/arm/kernel/head.S

29 #define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)

30 #define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET)

6)swapper_pg_dir 初始頁表虛擬地址,值為0xC0004000,

一般分配KERNEL_RAM_VADDR地址下16K作為頁表,因此,我們必須確保正確設(shè)置KERNEL_RAM_VADDR。

arch/arm/kernel/head.S

44 .globl swapper_pg_dir

45 .equ swapper_pg_dir, KERNEL_RAM_VADDR - 0x4000

7)VMALLOC_START 0xc4800000

8)VMALLOC_END 0xe0000000

9)MODULES_VADDR 0xbf000000

10)MODULES_END 0xc0000000

arch/arm/include/asm/memory.h

47 #ifndef CONFIG_THUMB2_KERNEL

48 #define MODULES_VADDR (PAGE_OFFSET - 16*1024*1024)

49 #else

50 /* smaller range for Thumb-2 symbols relocation (2^24)*/

51 #define MODULES_VADDR (PAGE_OFFSET - 8*1024*1024)

52 #endif

53

54 #if TASK_SIZE 》 MODULES_VADDR

55 #error Top of user space clashes with start of module space

56 #endif

57

58 /*

59 * The highmem pkmap virtual space shares the end of the module area.

60 */

61 #ifdef CONFIG_HIGHMEM

62 #define MODULES_END (PAGE_OFFSET - PMD_SIZE)

63 #else

64 #define MODULES_END (PAGE_OFFSET)

65 #endif

11)PKMAP_BASE

arch/arm/include/asm/highmem.h:

6:#define PKMAP_BASE (PAGE_OFFSET - PMD_SIZE)

12)TASK_SIZE

。/arch/arm/include/asm/memory.h

34 #define PAGE_OFFSET UL(CONFIG_PAGE_OFFSET)

35 #define TASK_SIZE (UL(CONFIG_PAGE_OFFSET) - UL(0x01000000))

36 #define TASK_UNMAPPED_BASE (UL(CONFIG_PAGE_OFFSET) / 3)

13)一些不同地址之間轉(zhuǎn)換的宏

。/arch/arm/include/asm/memory.h

135 /*

136 * Physical vs virtual RAM address space conversion. These are

137 * private definitions which should NOT be used outside memory.h

138 * files. Use virt_to_phys/phys_to_virt/__pa/__va instead.

139 */

140 #ifndef __virt_to_phys

141 #define __virt_to_phys(x) ((x) - PAGE_OFFSET + PHYS_OFFSET)//物理地址和虛擬地址

142 #define __phys_to_virt(x) ((x) - PHYS_OFFSET + PAGE_OFFSET)//之間轉(zhuǎn)換的宏

143 #endif

144

145 /*

146 * Convert a physical address to a Page Frame Number and back

147 */

148 #define __phys_to_pfn(paddr) ((paddr) 》》 PAGE_SHIFT) //物理地址和頁幀號之間

149 #define __pfn_to_phys(pfn) ((pfn) 《《 PAGE_SHIFT) //轉(zhuǎn)換的宏

150

151 /*

152 * Convert a page to/from a physical address

153 */

154 #define page_to_phys(page) (__pfn_to_phys(page_to_pfn(page)))//頁地址和物理地址

155 #define phys_to_page(phys) (pfn_to_page(__phys_to_pfn(phys)))//之間的轉(zhuǎn)換宏依賴于內(nèi)存模型。

201 /*

202 * Drivers should NOT use these either.

203 */

204 #define __pa(x) __virt_to_phys((unsigned long)(x))

205 #define __va(x) ((void *)__phys_to_virt((unsigned long)(x)))

206 #define pfn_to_kaddr(pfn) __va((pfn) 《《 PAGE_SHIFT)

207

208 /*

209 * Virtual 《-》 DMA view memory address translations

210 * Again, these are *only* valid on the kernel direct mapped RAM

211 * memory. Use of these is *deprecated* (and that doesn‘t mean

212 * use the __ prefixed forms instead.) See dma-mapping.h.

213 */

214 #ifndef __virt_to_bus

215 #define __virt_to_bus __virt_to_phys

216 #define __bus_to_virt __phys_to_virt

217 #define __pfn_to_bus(x) __pfn_to_phys(x)

218 #define __bus_to_pfn(x) __phys_to_pfn(x)

219 #endif

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    135

    文章

    9552

    瀏覽量

    391842
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11758

    瀏覽量

    219009
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    linux-arm開發(fā)環(huán)境的簡單配置

    linux-arm開發(fā)環(huán)境簡單配置 關(guān)于linux-arm開發(fā)環(huán)境簡單配置是ARM學習的第步,很多初學者會在這問題上糾結(jié)很久都不能配置好開發(fā)環(huán)境。推薦大家看
    發(fā)表于 01-13 07:56

    嵌入式開發(fā)中一些少用的C語言用法分享

    使用STM32開發(fā)的朋友不知道是否有發(fā)現(xiàn)過這樣的一些定義?如下: #if defined (__CC_ARM) #pragma anon_unions #endif 看到上面
    發(fā)表于 01-05 08:19

    C語言中一些令人震驚的結(jié)構(gòu)介紹

    C語言同意一些令人震驚的結(jié)構(gòu),下面的結(jié)構(gòu)是合法的嗎,如果是它做些什么? int a = 5, b = 7, c; c = a+++b; 考察點: 這個問題將作為這個測驗的個愉快的結(jié)尾
    發(fā)表于 12-23 08:15

    瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之定義傳輸源和目標存儲器

    首先,要使用DMA傳輸,就肯定要有個源地址個目標地址,這里我們定義SRC_Buffer數(shù)組的首地址
    的頭像 發(fā)表于 12-15 11:09 ?4085次閱讀
    瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之<b class='flag-5'>定義</b>傳輸源和目標存儲器

    請問e203定義地址空間是虛擬地址還是物理地址?

    :在程序設(shè)計的驅(qū)動文件platform.h內(nèi)也有對應地址區(qū)間的定義 例如:GPIO_REG(GPIO_OUTPUT_VAL) |= (0x1 <<
    發(fā)表于 11-11 06:20

    對浮點指令擴展中一些問題的解決與分享

    出現(xiàn)無法寫的情況。 結(jié)論 以上就是我們組在擴展浮點指令中出現(xiàn)的一些問題,這些問題總體上歸結(jié)于對蜂鳥的代碼沒有整體性的把握,對內(nèi)容的掌握程度還不夠。在后續(xù)的工作中應注意理清功能的整體架構(gòu)而對所有的相關(guān)部分進行修改。
    發(fā)表于 10-24 11:47

    E203_defines的閱讀分享

    ,初始化為24位或者32位。 這些定義了 E203 模塊中一些重要的基地址和基地址所在的片區(qū)
    發(fā)表于 10-24 06:55

    RT_USING_TIMER_SOFT定義是否定要開啟?

    定義 :RT_USING_TIMER_SOFT 請問:如果沒有使能軟件定時器的定義,只在創(chuàng)建定時器時,通過RT_TIMER_FLAG_SOFT_TIMER是否可以創(chuàng)建
    發(fā)表于 09-29 07:11

    SConscript結(jié)果與rtconfig.h中定義相反,是什么原因呢?

    當我在rtconfig.h中把定義注釋時,添加了構(gòu)建 當我取消定義注釋時,反而排除了構(gòu)建 SConscript結(jié)果與rtconfig.h中
    發(fā)表于 09-23 06:01

    求助,關(guān)于TC387使能以及配置SOTA 中一些問題求解

    你好, 之前我拿到貴司給個demo,里面有一些使能以及配置SWAP的代碼, 這里有些疑問 問題1. 判斷SOTA功能是否生效,demo中使用的是 SCU_STMEM1中的bit位, 代碼如下
    發(fā)表于 08-08 07:31

    ARM入門學習方法分享

    。 以下是一些入門學習方法的分享: 、 理解基本概念:首先,了解ARM是什么以及它的基本概念是很重要的。ARM(Advanced RI
    發(fā)表于 07-23 10:21

    ARM集群服務(wù)器 定義

    ARM集群服務(wù)器的核心定義可歸納為以下要點: 、核心定義 ARM集群服務(wù)器是將?多個基于ARM
    的頭像 發(fā)表于 06-25 08:09 ?2361次閱讀
    <b class='flag-5'>ARM</b>集群服務(wù)器 <b class='flag-5'>定義</b>

    硬件設(shè)計中一些術(shù)語簡稱

    獲取完整文檔資料可下載附件哦!?。?!如果內(nèi)容有幫助可以關(guān)注、點贊、評論支持下哦~
    發(fā)表于 06-04 15:06

    CYUSB3014采用5根地址線通信,但其中一地址線懸空,對數(shù)據(jù)通信有影響嗎?

    CYUSB3014采用5根地址線通信,但其中一地址線懸空,對數(shù)據(jù)通信有影響嗎??是否還能進行正常的多個端點通信,只要跳過那個地址線對應的socket即可?
    發(fā)表于 05-21 07:59

    Debian和Ubuntu哪個好一些

    兼容性對比Debian和Ubuntu哪個好一些,并為您揭示如何通過RAKsmart服務(wù)器釋放Linux系統(tǒng)的最大潛能。
    的頭像 發(fā)表于 05-07 10:58 ?1134次閱讀