linux arm kernel启动简介,字符驱动基本流程

内核启动流程

取得压缩的uimage、zimage等
自解压缩
查找入口函数
内核引导阶段:
cpu进入svc超级用户模式
获取cpu id
检测系统是否支持此cpu
创建核心页表
使能mmu
跳转start_kernel
内核初始化阶段:
cpu相关初始化

架构相关初始化
设备树(dtb) compatible查找内核是否支持单板
处理bootargs放入command_line
内存初始化
开启MMU,创建内核页表
中断的初始化
系统调度器初始化
定时器、时钟初始化
控制台初始化
编译进内核的模块初始化
内核Cache初始化

rest_init
创建kernel_init进程 pid=1
启动用户进程_init 从内核态到用户态的转变
创建kthreadd进程 pid=2 负责所有内核进程的调度和管理
cpu_idle

bootcmd bootargs

bootcmd:uboot默认执行命令,启动kernel相关的命令,最终调用boot、bootz、bootm
bootargs:kernel需要,console控制台参数,root:根文件系统位置,rootfstype:根文件系统类型
内核配置的CONFIG_CMDLINE参数
由bootloader传递给内核
在设备树的chosen/bootargs下描述

字符驱动启动

module_init
driver_register
probe
获取设备树io配置
申请主设备号次设备号
cdev_init
class_create
device_create

pinctrl gpio

pinctrl:复用、上下拉、速度、驱动能力
gpio:输入输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值