
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
上一篇<<linux内核make执行过程>>分析到setup.bin和vmlinux.bin分支,本篇继续往下分析。setup.binOBJCOPYFLAGS_setup.bin:= -O binary$(obj)/setup.bin: $(obj)/setup.elf FORCE$(call if_changed,objcopy) setup.bin依赖于se
上一篇<<linux内核启动过程4:内核运行时>>分析到了内核进入运行时状态(不退出),本篇分析用户空间(用户层)的加载过程。启动应用空间 进入kernel_init函数,在这里做了用户空间的初始化及启动(pid)1进程工作:static int __ref kernel_init(void *unused){int ret;kernel_init_freeab
上一篇<<linux内核启动过程2:保护模式执行流程>>分析了保护模式启动过程以及bzImage的解压入口函数,本篇继续分析内核启动过程,从保护模式到C代码初始化。startup_64 进入arch/x86/kernel/head_64.S,分析startup_64函数:.text__HEAD.code64SYM_CODE_START_NOALIGN(start
上一篇<<linux内核压缩制作bzImage>>分析了bzImage制作流程,本篇继续分析内核启动过程,从实模式跳转到保护模式及后续执行流程。protected_mode_jump 进入arch/x86/boot/pmjump.S:/** void protected_mode_jump(u32 entrypoint, u32 bootparams);*/SY
本篇基于上一篇<<linux内核make menuconfig执行过程>>基础上,追溯make执行过程。make1. 与make menuconfig相同的部分 这部分内容与make menuconfig执行条件相同,并且变量值相同,可以忽略。 打开Makefile文件:# SPDX-License-Identifier: GPL-2.0VERSIO
接着上一篇<<linux内核启动过程>>继续分析setup.bin和vmlinux.bin执行过程。setup.binOBJCOPYFLAGS_setup.bin:= -O binary$(obj)/setup.bin: $(obj)/setup.elf FORCE$(call if_changed,objcopy) call if_changed,objcop
在编写input相关驱动时(比如键盘驱动、触摸屏驱动),需要考虑到及时获取按键或屏幕触摸对相关Gpio的修改值情况。常见的两种获取方式:一. 通过触发中断号读取相关Gpio值信息;二. 通过工作队列轮询遍历所有的Gpio值信息,并筛选出点击的按键值。第一种方式对于单个按键或无共享Gpio时适用,对于防抖动处理有些不足;第二种方式主要用于解决防抖动处理,并减少多余的开支。一般键盘由一个或...
自上次写了map之后对Vector比较感兴趣,由于对Vector理解不是很深刻,利用业余时间从Linux系统中拷贝出完整的Vector代码进行学习参考,并对一部分做了修改可以在Windows系统运行。下面简单介绍下Vector的实现方式:1.Vector的内存分配方式采用了标准STL的一贯做法——每增加一个节点动态分配一个节点需要的内存;。2.Vector分配的内存是
近两年一直有着写linux内核相关的想法,比如从Makefile执行 make menuconfig、make,到x86架构的引导启动过程。由于网上有较多相关的文章,便有些羞涩于自己动手写。现在想着无论自己水平如何,用自己的思路去追溯代码并记录代码,应该强于融入别人的思想。 本次采用5.9版本内核,通过代码分析、strace跟踪等形式按照自己的理解来写,写的不对的地方请跳
刚开始接触Map的时候,了解到Map采用映射的方式储存数据,为了满足自己的好奇心,自己参考相关书籍,并且调试Linux系统的Map源码,成功完成了Map完整代码的封装。总体来说Windows系统Map与Linux系统Map采用了相同的实现思路,只是实现细节有点较小的差异。同样采用相同的数据结构红黑树做为Map内核链表绑定数据的存储路线(代码内部有Window、Linux系统红黑树相关的实现







