Linux驱动的地址空间和硬件地址空间说明
作者:李强,华清远见嵌入式学院讲师. 有这么几个问题,在上驱动课程的时候,我感觉一直困扰着同学们: ● 用户程序编译连接形成的地址空间在什么范围内? 于是就有了这篇文章,从大概上把内存相关知识点介绍一下,减少同学们在驱动课时对内存的困惑 先回答第一个问题.Linux最常见的可执行文件格式为elf(Executable and Linkable Format).在elf格式的可执行代码中,ld总是从0x8000000开始安排程序的“代码段”,对每个程序都是这样.至于程序执行时在物理内存中的实际地址,则由内核为其建立内存映射时临时分配,具体地址取决于当时所分配的物理内存页面. 我们可以用Linux的实用程序obj对你的程序进行反汇编,从而知晓其地址范围. 例如:假定我们有一个简单的C程序Hello.c # include <stdio.h> 之把这样简单的程序写成两个函数,是为了说明指令的转移过程.我们用gcc和ld对其进行编译和连接,得到可执行代码hello.然后,用Linux的实用程序obj对其进行反汇编: 得到的主要片段为: 08048568 <greeting>: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |