Linux 链接脚本分析
来源:互联网 发布:互联网金融数据分析师 编辑:程序博客网 时间:2024/05/18 03:26
转自:http://blog.csdn.net/lizuobin2/
在前面学习的过程中,看代码时遇到 arch_initcall(xxx) 等函数总是处于愣神的状态,对于最基础的 module_init(xxx) 也只是拿来用用,不知道幕后的东西,了解 MACHINE_START 创建了一个 machine_desc ,却不知道 machine_desc->map_io 等函数时何时调用的。
这篇文章,就来搞定他们,再遇到它们时,拒绝懵比!
首先,来看下链接脚本的缩略版:
1、*(.proc.info.init) 段
内核中,定义了若干个 proc_info_list 结构,它的结构原形在 include/asm-arm/procinfo.h 中,表示它所支持的CPU。
2、 *(.arch.info.init) 段
*(.arch.info.init) 段,存放的是内核所支持的单板信息如机器ID、其实IO物理地址等,它由 MACHINE_START、MACHINE_END 定义。
顺便看一下 map_io 等函数的调用时机:
先后顺序:
start_kernel -》setup_arch -》 map_io -》 init_irq -》 timer -》 init_machinemap_io 函数中 会对内核进行分区还有时钟、串口的初始化,移植内核时需注意!(传入的机器ID不同,调用的初始化函数自然不同咯)
3、*(.taglist.init)
*(.taglist.init) 段存放的是 uboot 传递到内核的 tag 的处理函数。在 uboot 中,定义了一个 tag 结构体,里面存放要传递给内核的信息,Uboot 将 tag 依次排放在和内核约定的地点,如s3c2440是 0x30000100 处,排放顺序是有要求的,必须以 ATAG_CORE 标记的 tag 开头,以 ATAG_NONE 为标记的 tag 结尾。
arch\arm\kernel\setup.c
- Linux 链接脚本分析
- Linux 链接脚本分析
- Linux 链接脚本分析
- Linux的链接脚本分析
- uboot链接脚本分析
- ARM链接脚本分析
- 内核链接脚本分析
- 链接脚本分析
- Linux kernel 分析之七:内核启动-链接脚本
- Linux链接脚本详解
- Linux 链接脚本详解
- Linux链接脚本资料
- linux 链接脚本
- linux 内存链接脚本
- Linux 链接脚本详解
- Linux 链接脚本详解
- Linux 链接脚本详解
- Linux链接脚本.lds
- 线性表(中)之链式存储
- Reachability
- DialogFragment 创建对话框
- 4.2.1 结构
- Android基础之Json解析(中)
- Linux 链接脚本分析
- 在Mac上安装 jdk node npm ionic Cordova
- 重磅 | 消灭所有马赛克,谷歌宣布机器学习图像锐化工具RAISR
- 线性表(下)之链式存储之双向,单向循环列表
- Eddy的难题 Time Limit: 1000MS Memory Limit:
- iOS命名规范(转载)
- 多线程学习笔记2
- 《精彩绝伦的CSS》——提示(一)属性值排序
- 栈(上)之顺序栈