历史上的今天
返回首页

历史上的今天

今天是:2025年01月19日(星期日)

正在发生

2020年01月19日 | ARM linux内核在内存中的布局

2020-01-19 来源:eefocus

Kernel Memory Layout on ARM Linux


Russell King

     November 17, 2005 (2.6.15)


This document describes the virtual memory layout which the Linux

kernel uses for ARM processors.  It indicates which regions are

free for platforms to use, and which are used by generic code.


The ARM CPU is capable of addressing a maximum of 4GB virtual memory

space, and this must be shared between user space processes, the

kernel, and hardware devices.


As the ARM architecture matures, it becomes necessary to reserve

certain regions of VM space for use for new facilities; therefore

this document may reserve more VM space over time.


Start End Use

--------------------------------------------------------------------------

ffff8000 ffffffff copy_user_page / clear_user_page use.

For SA11xx and Xscale, this is used to

setup a minicache mapping.


ffff1000 ffff7fff Reserved.

Platforms must not use this address range.


ffff0000 ffff0fff CPU vector page.

The CPU vectors are mapped here if the

CPU supports vector relocation (control

register V bit.)


ffc00000 fffeffff DMA memory mapping region.  Memory returned

by the dma_alloc_xxx functions will be

dynamically mapped here.


ff000000 ffbfffff Reserved for future expansion of DMA

mapping region.


VMALLOC_END feffffff Free for platform use, recommended.

VMALLOC_END must be aligned to a 2MB

boundary.


VMALLOC_START VMALLOC_END-1 vmalloc() / ioremap() space.

Memory returned by vmalloc/ioremap will

be dynamically placed in this region.

VMALLOC_START may be based upon the value

of the high_memory variable.


PAGE_OFFSET high_memory-1 Kernel direct-mapped RAM region.

This maps the platforms RAM, and typically

maps all platform RAM in a 1:1 relationship.


TASK_SIZE PAGE_OFFSET-1 Kernel module space

Kernel modules inserted via insmod are

placed here using dynamic mappings.


00001000 TASK_SIZE-1 User space mappings

Per-thread mappings are placed here via

the mmap() system call.


00000000 00000fff CPU vector page / null pointer trap

CPUs which do not support vector remapping

place their vector page here.  NULL pointer

dereferences by both the kernel and user

space are also caught via this mapping.


Please note that mappings which collide with the above areas may result

in a non-bootable kernel, or may cause the kernel to (eventually) panic

at run time.


Since future CPUs may impact the kernel mapping layout, user programs

must not access any memory which is not mapped inside their 0x0001000

to TASK_SIZE address range.  If they wish to access these areas, they

must set up their own mappings using open() and mmap().


推荐阅读

史海拾趣

Carlisle Interconnect Technologies公司的发展小趣事

1959年,对于Carlisle Interconnect Technologies来说是一个里程碑式的年份。这一年,公司正式成为Carlisle Companies Incorporated的一部分,这标志着公司从一个小型创业企业迈入了大型跨国公司的行列。这一转变为公司带来了更多的资源和机会,也使其能够更好地满足主要电子OEM的需求,专注于提供增值解决方案。

法思特(FAST)公司的发展小趣事
在操作过程中应遵守相关安全规定,确保人员和设备的安全。
Eby Company公司的发展小趣事

eBay的成功不仅仅局限于美国市场。从早期开始,eBay就积极寻求全球化扩张。通过与不同国家和地区的合作伙伴建立合作关系,eBay逐步进入了欧洲、亚洲和拉丁美洲等市场。这种全球化战略使eBay能够接触到更广泛的用户群体,进一步巩固了其在全球在线拍卖市场的领先地位。

Freeport Resources Enterprises Corp公司的发展小趣事

为了应对矿业市场的周期性波动和不确定性风险,Freeport Resources实施了多元化经营战略。在保持矿业勘探和开发核心业务的同时,公司还涉足了电子材料贸易、新能源开发等多个领域。通过多元化经营,Freeport Resources有效分散了经营风险,提高了整体抗风险能力。此外,多元化经营还为公司带来了新的增长点,促进了公司的持续健康发展。

Bogen Communications Inc公司的发展小趣事

Bogen Communications Inc公司起初只是一个小型的电子设备制造商,但公司高层看到了市场的巨大潜力,决心进行市场拓展。通过精准的市场定位和有效的营销策略,公司成功地将产品打入多个国家和地区。同时,公司还注重品牌建设,通过提升产品质量、优化客户服务等方式,逐渐树立了良好的品牌形象。

Alps Alpine Co Ltd公司的发展小趣事

在电子行业的激烈竞争中,Bogen Communications Inc公司凭借一项革命性的技术创新,迅速崭露头角。该公司研发出一种新型的音频处理芯片,极大地提升了通信设备的音质和性能。这一创新不仅赢得了市场的广泛认可,还为公司带来了大量的订单和合作伙伴。随着技术的不断完善和市场的扩大,Bogen Communications Inc逐渐成为了音频通信领域的领导者。

问答坊 | AI 解惑

求助,在5502中SDRAM的写入过程要用210ns,如何提升速度

在TMS320VC5502中,对SDRAM写操作,居然要210ns,简直无法干活,请教前辈,怎样解决这个问题?我对EMIF的相关寄存器进行设置,如WRITE SETUP 、WRITE STROBE 、WRITE HOLD ,对写操作消耗时间一点都没变化,很郁闷呀,在论坛上有说这是5502本身问题 ...…

查看全部问答>

WinCE6.0 系统定制及应用开发 问题

在定制WinCE操作系统的时候,我想添加对C#的支持。可是选项中有 .NET Compact Framework 2.0  跟  .NET Compact Framework 2.0-headless两个选择项目。 请问各位大侠,两个有什么不同呢? 还有就是我刚开始添加的是前者,编 ...…

查看全部问答>

软件工程应届生找不到工作

我是上海一大学软件工程专业的09届应届生,本科,不是很会说话。 在学校里学的是单片机开发之类的(偏软件 C语言),接触过ARM+Wince之类的嵌入式软件的开发。(其实学校里嵌入式软件方面的课基本就没有,都是我凭着兴趣自学的)单片机的水平达到自 ...…

查看全部问答>

射极跟随器问题

本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 我想用三极管打一个射极跟随器  应该选取什么型号三极管 …

查看全部问答>

关于port1 中断

对于不同的pin中断该如何区分呢?有没有类似P1IV这样的register ?谢谢…

查看全部问答>

看门狗定时时间到,怎么跳不出循环

#include void main(void) { WDTCTL=WDT_ADLY_1000;//设置看门狗定时时间1000ms IE1|=WDTIE;         //WDT使能 P5DIR|=0x02;        //P5.1输出 P5OUT=0X02; _EINT();//中断 ...…

查看全部问答>

TC1-1T+ 巴伦 用的是什么型号的磁芯?

TC1-1T+ 巴伦 用的是什么型号的磁芯?…

查看全部问答>

整理电脑有一些以前下载的文档

整理电脑有一些以前下载的文档…

查看全部问答>