• 正文
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之内核启动流程

01/06 09:50
834
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

关于内核启动流程涉及内容较多而且复杂,过度的分析意义不大,因此,这里不做详细讲解,只做一个大概的介绍。初学者只做了解,有一定基础的可以深入理解。

内核镜像被uboot加载到内存空间之后,获得控制权,内核启动流程开始。在前面章节讲解zImage生成过程的时候说过内核镜像image是被压缩进zImage之中的。所以,内核获得控制权之后,第一件事,是解压缩内核镜像。解压缩工作由arch/arm/boot/compressed/head.S完成,head.S在解压完zImage之后将生成的image镜像重定位到内核入口地址0X80008000,并跳转到此处执行image。

打开arch/arm/kernel/vmlinux.lds可以找到内核入口ENTRY(stext):

而stext存在于arch/arm/kernel/head.S中:

在stext下有一个__mmap_switched函数:

该函数存在于arch/arm/kernel/head-common.S,其中有一句跳转指令:b start_kernel

从start_kernel函数开始,内核进入C语言部分,完成内核的大部分初始化工作。start_kernel函数存在于init/Main.c中:

函数在最后调用rest_init函数:

此函数中调用了kernel_init函数,kernel_init函数完成了设备驱动程序的初始化,并启动了用户进程:

飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐