![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux内核及驱动
sunxiaohusunke
这个作者很懒,什么都没留下…
展开
-
linux platform驱动注册过程
以下取自linux内核版本2.6.28. platform总线定义在drivers/base/platform.c文件中,如下: struct bus_type platform_bus_type = {.name = "platform",.dev_attrs = platform_dev_attrs,.match = platform_match,.原创 2014-03-26 11:24:31 · 556 阅读 · 0 评论 -
linux内核研究笔记5(系统调用中断堆栈视图)
linux 0.11 system_call.s中系统调用中断入口函数,代码如下:_system_call: cmpl $nr_system_calls-1,%eax ja bad_sys_call push %ds push %es push %fs pushl %edx pushl %ecx # push %ebx,%ecx,%edx as parameters pus...原创 2019-04-03 10:41:47 · 352 阅读 · 0 评论 -
linux内核研究笔记6(do_wp_page概述)
do_wp_page函数由页保护异常过程调用,用来处理页保护异常。该函数里面直接调用un_wp_page函数。void un_wp_page(unsigned long * table_entry){ unsigned long old_page,new_page; old_page = 0xfffff000 & *table_entry; if (old_page >...原创 2019-04-09 15:28:19 · 1277 阅读 · 0 评论 -
uboot构建框架1-总览
uboot版本:2016.03开发板:米尔科技imx6ull单板机编译器:arm-poky-linux-gnueabi-gcc,version5.3.0。由yocto SDK编译生成。编译器的安装和生效,请参考米尔开发板的手册。安装完编译器之后,我们source一下环境即可:source environment-setup-cortexa7hf-neon-poky-linux-g...原创 2019-05-31 10:22:50 · 1622 阅读 · 0 评论 -
uboot构建框架2-kbuild框架简要分析
其实网络上介绍kbuild框架的资料书籍一大把,有的介绍非常详细,大家不妨可以参考。本文试图从一些线索来简要分析kbuild框架,好让我们从一个方面了解一条线,不至于陷入kbuild框架的各种大坑里面。kbuild是个什么鬼?kbuild来源于linux内核,是linux内核用来构建输出内核镜像的make框架。因为这套框架做得比较好,uboot也借过来用了。kbuild中的k,我想应该就是...原创 2019-05-31 14:50:47 · 1618 阅读 · 0 评论 -
uboot构建框架7-u-boot.imx生成过程追踪
还是先找到入口上文《u-boot.bin生成过程追踪》,我们探讨了u-boot.bin的生成过程。在文章开头的地方,我们讲到终极目标,并且找到了主Makefile的终极目标所在。本文探讨u-boot.imx文件的生成,因很多内容跟上文都一样,所以在阅读本文之前,还需要阅读下上文的内容。还是跟u-boot.bin一样,我们在ALL-y里面寻找u-boot.imx的定义。不过可惜,我们好像没找...原创 2019-06-05 15:12:20 · 1920 阅读 · 1 评论 -
uboot构建框架3-make menuconfig命令的过程追踪
menuconfig是干什么的?编译过uboot或者内核的朋友一定清楚这个命令是干什么的,如果不知道,请记住了,这个命令是用来配置的。什么是配置?就是诸如选择什么CPU,选择什么soc,选择什么特性,是否编译成模块等等。uboot和内核的配置功能非常强大。menuconfig是一类通过ncurses实现的简易图形配置功能。我们可以通过cd到uboot根目录,然后键入:make men...原创 2019-05-31 17:49:46 · 1790 阅读 · 0 评论 -
uboot构建框架4-make *defconfig命令的过程追踪
引入还记得我们在文章《uboot构建框架1-总览》里面提到的米尔开发板uboot编译三个命令中的的第二个吗?就是:sunke@droresrv:~/work/MYiR-iMX-Uboot$ make mys_imx6ull_14x14_nand_defconfig道理还是一样的在文章《make menuconfig命令的过程追踪》里面,我们追踪了menuconfig的执行流程。上...原创 2019-06-01 12:27:15 · 1675 阅读 · 0 评论 -
uboot构建框架5-配置文件和make过程是如何联系起来的
什么是配置?还是从编译uboot的第二个命令开始我们的旅程,如下命令:sunke@droresrv:~/work/MYiR-iMX-Uboot$ make mys_imx6ull_14x14_nand_defconfig这个命令会打印一些信息,我们看到最后有个打印信息:## configuration written to .config#这个英语简单不,一目了然,就是...原创 2019-06-02 16:25:37 · 961 阅读 · 0 评论 -
uboot构建框架6-u-boot.bin生成过程追踪
先看终极目标在配置完毕的情况下,我们在uboot根目录敲下"make"命令,就会执行一系列动作,产生一系列结果。这结果之一,便是u-boot.bin。这个u-boot.bin是一个二进制执行代码文件,理论上可以被CPU直接执行。但是对于imx6来说,不拿这个直接烧写,还是需要再处理一下才行,这个后续会提到。只要是查看主Makefile的执行流程,我们第一要做的,是找到这个Makefile的...原创 2019-06-03 15:30:00 · 3159 阅读 · 1 评论 -
linux内核研究笔记2(关于asm.s中call函数的说明)
asm.s程序第39行中(以下片段第21行处),有个call函数调用代码,如下:_divide_error: pushl $_do_divide_errorno_error_code: xchgl %eax,(%esp) pushl %ebx pushl %ecx pushl %edx pushl %edi pushl %esi pushl %ebp push %ds ...原创 2019-04-02 16:03:27 · 399 阅读 · 0 评论 -
linux内核研究笔记1(linux0.11 boot部分总结)
最近花了点时间仔细阅读了linux0.11内核代码的boot部分。要看懂该部分的代码,需要事先准备如下知识点:1.80x86体系结构基础包括寄存器、基本指令等2.80x86实模式3.80x86保护模式及编程主要理解分段机制,分页机制。需要理解几个表和结构:GDT、IDT、LDT、TSS、页目录表、页表及各自表项结构。4.早期IBM PC机的启动过程5.BIOS基本中断服...原创 2019-04-01 15:27:27 · 560 阅读 · 0 评论 -
软件开发专家学习路线(开源纯软件)
要想成为软件开发专家,需要具备过人的知识广度和深度,对老技术基础必须相当扎实,以下是整理的一些老技术要点路线图,仅供参考。 大类 小类 备注 软件基本理论 编译/链接原理 国内的弱点,也是关键点 操作系统基本原理 GNU汇编基础(AT...原创 2019-02-21 16:47:53 · 939 阅读 · 0 评论 -
C内联汇编基本概念
基本语法格式使用特殊的语法格式,允许C代码里面直接嵌入自己设计的汇编指令。格式如下:asm("assembly code" : output locations : input operands : changed registers);其中,asm可以使用关键字"__asm__"。1.assembly code:内联汇编代码2.output locations:包含汇编代码运...原创 2019-03-11 11:24:29 · 631 阅读 · 0 评论 -
linux内核研究笔记3(move_to_user_mode)
内核版本:linux 0.11函数调用:main.c第137行函数定义:system.h第1到14行#define move_to_user_mode() \__asm__ ("movl %%esp,%%eax\n\t" \ "pushl $0x17\n\t" \ "pushl %%eax\n\t" \ "pushfl\n\t" \ "pushl $0x0f\n\t" \...原创 2019-03-20 10:48:42 · 445 阅读 · 0 评论 -
linux内核研究笔记4(do_wp_page参数)
内核版本:linux 0.11函数定义:memory.c第247行void do_wp_page(unsigned long error_code,unsigned long address){#if 0/* we cannot do this yet: the estdio library writes to code space *//* stupid, stupid. I ...原创 2019-03-21 15:56:33 · 1265 阅读 · 1 评论 -
IA32体系结构1(x86寄存器)
Intel Architecture 32位处理器,主要以80386为参考。包括以下几类寄存器:1.通用寄存器2.段寄存器3.状态和控制寄存器4.指令指针寄存器EIP5.内存管理寄存器6.控制寄存器通用寄存器通用寄存器有8个,分别是EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。intel通用寄存器很少,比起ARM动不动30多个,要少很多,inte...原创 2019-03-25 14:01:25 · 780 阅读 · 0 评论 -
uboot构建框架8-built-in.o的编译过程追踪
找入口追踪的第一件事情,还是找入口,就跟看C代码我们需要先找到main函数一样。我在《u-boot.bin生成过程追踪》一文中提到了"u-boot-dirs"变量,这个变量展开之后,是一系列的目录。然后这些目录作为目标,有如下的生成规则:PHONY += $(u-boot-dirs)$(u-boot-dirs): prepare scripts $(Q)$(MAKE...原创 2019-06-11 21:28:29 · 1707 阅读 · 0 评论