Fork me on GitHub
摘要: 1.从 System.map 文件中直接得到地址 内核镜像的 System.map 文件存储了内核符号表的信息, 可以通过此文件获取到具体的信息 查看内核函数的地址 grep perf_trace_do_sys_open /boot/System.map-4.4.0-72-generic 查看地址对 阅读全文
posted @ 2021-10-24 22:16 BabyMelvin 阅读(944) 评论(0) 推荐(0) 编辑
摘要: 1. printk输出函数 多年工程经验看,printk()最简单有效的调试方法。 printk默认的配置实在配置文件中CONFIG_MESSAGE_LOGLEVEL_DEFAULT 4 通常高于这个值才会输出到控制台或者串口。可以通过如下几种方式修改: 可以手动修改内核为: <arch/arm64 阅读全文
posted @ 2021-10-24 21:39 BabyMelvin 阅读(884) 评论(0) 推荐(0) 编辑
摘要: 介绍 kernel有很多的同步和异步机制,做简单整理,力求能够熟练使用。 1.同步机制 并发:多个执行单元同时被执行 竞态:并发的执行单元对共享资源(硬件资源和软件上的全局变量等)的访问导致竞争状态。 并发与竞态。 假设有2个进程试图同时向一个设备的相同位置写入数据,就会造成数据混乱。处理并发常用的 阅读全文
posted @ 2021-10-24 21:26 BabyMelvin 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 1.内核线程 Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求)。内核需要多个执行流并行,为了防止可能的阻塞,多线程化是必要的。 内核线程就是内核的分身,一个分身可以处理一件特定事情。Linux内核使用内核线程来将内核分成几个功能模块,像kswapd、kfl 阅读全文
posted @ 2021-10-24 21:23 BabyMelvin 阅读(667) 评论(0) 推荐(1) 编辑
摘要: Linux各种栈 进程栈、 线程栈、 内核栈、 中断栈 1.栈是什么?栈有什么作用? 首先,栈 (stack) 是一种串列形式的 数据结构。这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 top) 进行 推入 (push) 和 阅读全文
posted @ 2021-10-24 20:24 BabyMelvin 阅读(190) 评论(0) 推荐(1) 编辑
摘要: ARM linux启动流程 对于不同体系结构的处理器来说Linux的启动过程也有所不同。以S3C2410 ARM处理器为例,详细分析了系统上电后 bootloader的执行流程及 ARM Linux的启动过程。 1.引言 一个嵌入式 Linux 系统从软件角度看可以分为四个部分: 引导加载程序(bo 阅读全文
posted @ 2021-10-24 10:35 BabyMelvin 阅读(998) 评论(0) 推荐(0) 编辑