- 0
- 0
- 约3.22千字
- 约 6页
- 2026-01-22 发布于北京
- 举报
一、vmlinux.lds简介
从arch/arm/kernel/vmlinux.lds分析Linux内核第一行启动代码。
找到ENTRY(stext)
函数是stext,image和zImage是经过压缩的,Linux内核会先进行解压缩,解
压缩完成以后就要运行Linux内核。要求:
1、MMU关闭2、D
缓存关闭3、I缓存无
所谓4、r0=0。5、
r1=machinenr6、
r2=atags或设备树
二、Linuxstext
_
vetatags函数验证atags或dtb是否有效,如果使用设备树的话就是
___
dtb。createpagetab创建页表。ldrr13,=mmapswitched也就
___
是r13保存mmapswitched。enablemmu使能MMU‑turn
___
mmuon‑_mmapswitched‑startkernel启动内核。Linux内核第一阶
段。
_
三、mmapswitched函数
_
四、startkernel函数
Linux内核第二阶段
一、vmlinux.lds简介
从arch/arm/kernel/vmlinux.lds分析Linux内核第一行启动代码。找到
ENTRY(stext)
函数是stext,image和zImage是经过压缩的,Linux内核会先进行解压缩,解压
缩完成以后就要运行Linux内核。要求:
1、MMU关闭
2、Dcache关闭
3、Icache无所谓
4、r0=0。
5、r1=machinenr
6、r2=atags或设备树
二、Linuxstext
vet_atags函数验证atags或dtb是否有效,如果使用设备树的话就是dtb。
create_page_tab创建页表。
ldrr13,=mmap_switched也就是r13保存mmap_switched。
enable_mmu使能MMU
-turn_mmu_on
-_mmap_switched
-start_kernel启动内核。
Linux内核第一阶段。
三、mmap_switched函数
四、start_kernel函数
Linux内核第二阶段
_____
start内核‑剩余部分初始化‑内核线程(内核初始化,NULL,CLONEFS);创建内
___
核初始化进程。也就是init进程,PID=1‑内核线程(kthreadd,NULL,CLONEFS|
___
CLONEFI);创建kthreadd进程,进程PID为2。‑CPU启动进入空闲进程,
也就是主进程为空闲进程,idle。
启动开发板,输入:ps-A,列出当前系统所有进程。
start_kernel
-rest_init
-kernel_thread(kernel_init,NULL
您可能关注的文档
最近下载
- 七年级地理上册期末试题+答案.pdf VIP
- 合作协议范本及条款解读.docx VIP
- 一种宽温域水合共晶电解液及其在水系锌离子电池中的应用.pdf VIP
- He/H2/HD体系在5A分子筛上的吸附分离行为.pdf VIP
- 01SS105常用小型仪表及特种阀门选用安装图集.pdf
- 物业市场拓展策略方案.docx VIP
- 大学化学教学中计算化学方法应用与科研能力培养课题报告教学研究课题报告.docx
- PLC应用技术(S7-200 SMART) 项目2 S7-200 SMART PLC控制指示灯.pptx VIP
- 苏州市2021-2022学年高一上期末统考地理试卷&答案.pdf VIP
- JingChaDaXue《特殊火灾扑救》期末试卷(A)参考答案.docx VIP
原创力文档

文档评论(0)