博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OK6410A 开发板 (八) A linux-5.11 OK6410A 文章整理
阅读量:4284 次
发布时间:2019-05-27

本文共 2141 字,大约阅读时间需要 7 分钟。

硬件环境

硬件资料


核心移植

驱动移植



分析

静态分析

  • 其他
Makefile Kconfig Kbuild 分析
简易开发环境搭建
汇编启动分析


start_kernel 启动分析
  • start_kernel 运行时的关注点
1.打印2.内存3.硬件初始化(设备)4.进程建立及调度	4.1 进程的创建(idle及其他)	4.2 多进程的调度	4.3 进程通信机制	4.4 线程同步机制	5.异常向量表角度	5.1 中断	5.2 其他异常A.其他	1. 网络	2. 文件系统
以打印角度分析 启动


以功能角度分析 启动
以进程角度分析 启动
一开始 是 裸机程序然后将裸机程序 封装成 idle 进程然后idle 就开始 fork 出 kernel_init 和 kthreadd然后调度 开始,混乱的多进程调度开始了接着 kthreadd fork出了 所有的内核进程接着 用户进程init及其子进程 fork出了 所有的用户进程计算机三大抽象之一	进程对CPU虚拟化 // 进程是对处理器 主存 和IO设备的抽象表示考虑进程执行的时候(除去考虑竞态)一般不考虑调度	因为对于该进程来说,它执行的时候占用了整个cpu

  • [调度的需求及历史及整体分析]
为什么需要调度	因为多进程的需求为什么需要多进程	因为 只有一个进程,造成资源浪费虽然有调度,可指令还是 one by one 执行的	宏观并行,微观串行调度的实质	选中一个进程 (调度的核心,如何发展的?)	保存当前的进程/恢复选中的进程(架构强相关,因为涉及到寄存器的保存和恢复)进程创建/调度的性能参数	???系统有多少进程?进程是怎么被看见的?如何遍历进程

以内存角度分析 启动
内存管理的历史内存管理的性能
  • 及及

  • 及 . . .及

  • 及. . . . .及

  • 及. .及





以文件系统FS角度分析 启动
以 无init_xxx技术 的启动流程为研究对象start_kernel	vfs_caches_init_early	vfs_caches_init		mnt_init			init_rootfs  	//注册 rootfs 文件系统			init_mount_treekernel_init	prepare_namespace		mount_root		  	//挂载真正的文件系统(在这里以root=/dev/mmcblk0p2中的rootfstype=ext3为例,该文件系统根目录有/linuxrc)	init_post		run_init_process(execute_command)	//内核参数为init=/linuxrc
  • [第二阶段 kernel_init 阶段文件系统的初始化到挂载真正的文件系统]


ARM异常分析
单核心的soc 的话,其实运行流程很单纯包含	1. A进程代码	2. B进程代码	3. AB 系统调用(异常3)	4. AB 系统调用后进入内核的代码	5. 调度	6. 其他异常(异常1 2 4 5 6 7 8)其他的就没了 // (由于会有异常及调度,所有会有竞态,所以需要同步)多核心的soc,其实和这个一样	但是 多核心 相比 单核心,多了		1. 核间通信(应该归入异常范畴)		2. 核间同步		3. 多核boot	另外,会在 增加 调度方面的功能: cpu绑定,cpu间调度之类



  • [异常4 0c Prefetch Abort]
  • [异常6 14 null

linux对ARM异常的处理总体分析
  • [每种处理方式中相同的部分]
  • [中断异常的处理方式-底半部]
  • [要不要结束,怎么结束]
linux 异常分析
除0							: SIGFPE未对齐的数据访问				: 空指针的读写、写rodata section : SIGSEGVprefetch abort
竞态与(内核)同步
  • [各种同步机制的关系及异同及使用场景]
  • [RCU的实现]
  • [大内核锁BLK的实现(被遗弃了)

事件的同步

  • [sleep]
  • [等待队列]
  • [completion]
进程通信分析
linux内核调试&性能调试
1. printk2. syslog3. console 4. syslogd 5. klogd 6. kmesg7. 动态打印8. dump_stack---9. 内核参数& CONFIG---10. procfs11. sysctl12. sysfs 13. debugfs14. top/htop free---15. gdb-with-jtag16. kdb17. kgdb10.kgtp---10.BUG&BUG_ON11.oops&panic 10.kdump(based on kexec)&crash & kcore10.SysRq magic key---11.kprobe & systemtap12.ftrace(trace-cmd)13.perf & eBPF14.LTTng15.分析工具:火焰图 https://github.com/brendangregg/FlameGraph
LKM 的实现
  • [LKM是什么]
总线设备驱动模型及设备驱动及设备管理

转载地址:http://kdigi.baihongyu.com/

你可能感兴趣的文章
博客测试:博客系统i94web beta1.0 请求测试
查看>>
XAMPP:访问phpmyadmin出错的解决方案
查看>>
怎么用PHP在HTML中生成PDF文件
查看>>
PHP中我经常容易混淆的三组函数
查看>>
DOM笔记(一):HTMLDocument接口
查看>>
DOM笔记(二):Node接口
查看>>
DOM笔记(三):Element接口和HTMLElement接口
查看>>
DOM笔记(四):HTML 5 DOM复杂数据类型
查看>>
DOM笔记(五):JavaScript的常见事件和Ajax小结
查看>>
DOM笔记(六):怎么进行JQuery扩展?
查看>>
搜索和网页排名的数学原理
查看>>
DOM笔记(八):JavaScript执行环境和垃圾收集
查看>>
响应式下的下拉菜单
查看>>
DOM笔记(九):引用类型、基本包装类型和单体内置对象
查看>>
也谈学习
查看>>
DOM笔记(十):JavaScript正则表达式
查看>>
如何高效编写可维护代码?
查看>>
DOM笔记(十一):JavaScript对象的基本认识和创建
查看>>
DOM笔记(十二):又谈原型对象
查看>>
DOM笔记(十三):JavaScript的继承方式
查看>>