自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 linux内核笔记(二)

早期Intel主板芯片组:1.中断控制器:Intel 8259A2.DMA控制器:Intel 8237A3.定时计数器:Intel 8253/82544.键盘控制器:Intel 8042可见,Intel走的是各自为战的策略,每个部分单独有芯片来工作,通过各自的发展壮大,整体系统功能就会越来越强。缺点是功耗上去了,所以系统很难做小,比如手机这种,就适合ARM这种SOC模式,所有控制器都集成在片内,功耗小了,但同样的,性能就赶不上intel的PC机。...

2022-01-30 12:12:06 1239

原创 linux内核笔记(一)

linux操作系统诞生、发展的五大重要支柱:1.UNIX操作系统;2.MINIX操作系统;3.GNU计划;4.POSIX标准;5.Internet网络。

2022-01-28 22:00:20 750

原创 linux串口编程-输入模式

struct termios结构体中的c_iflag用于保存输入模式标志,头文件中对该模式定义了如下一些值:#define IGNBRK 0000001#define BRKINT 0000002#define IGNPAR 0000004#define PARMRK 0000010#define INPCK 0000020#define ISTRIP 0000040#define INLCR 0000100#define IGNCR 0000200#define

2022-01-25 16:01:01 849

原创 linux串口编程-termios结构

linux串口编程简单起来可以十分简单,但是复杂起来,也可以异常复杂。因为linux串口不仅仅是个串口,它跟终端联系起来。一般串口编程,绕不开的是struct termios结构体,其定义如下:#define NCCS 32struct termios { tcflag_t c_iflag; /* input mode flags */ tcflag_t c_oflag; /* output mode flags */ tcflag_t c_cfl

2022-01-25 15:36:06 1321

原创 Glibc学习笔记(二)

POSIX 安全概念主要分为:MT-Safe、AS-Safe、AC-Safe1.MT-Safe:线程安全原文:MT-Safe or Thread-Safe functions are safe to call in the presence of other threads. MT,in MT-Safe, stands for Multi Thread.就是可以在多线程中使用的函数。2.AS-Safe:异步信号安全原文:AS-Safe or Async-Signal-Safe

2022-01-20 14:05:15 262

原创 Glibc学习笔记(一)

学习的资料参考《The GNU C Library Reference Manual》for version 2.32。做了十几年的C语言开发,还真的没有系统性学习过Glibc,实在是过意不去。之后的时间里,尽量抽时间出来,把Glibc从头到尾过一遍。有句话讲得好:不学一定不会,学了不一定会,学会终身受用!翻开参考资料,首先看到的是目录,其实把这个目录大概看一遍,就能知道Glibc大概包括哪些内容。以下是根据目录的简单翻译,权当做个中文注释。Glibc主要包括如下内容:1.错误报告;2.

2022-01-18 22:22:26 671

原创 没有过时的技术,只有过时的思维

今天早上在今日头条无意中看到一个推送文章,大概说的是一个40岁的程序员去京东面试,被HR说成技术陈旧,然后就不要人家了。不清楚是不是单这一个原因不予录用,我想人家也是嫌弃40岁这个年龄的,就目前毕业找工作这么多的人来讲,也可以理解。但是作为一个程序员,可以简单聊聊技术陈旧的问题。首先必须阐明立场,我是十分反对技术陈旧这种说法的。道理很简单,技术本身是用来解决问题的,而不是用来赶时髦的,除了这个原因,其实我们可以大概去看看现在所谓的一些前沿技术,到底是个什么鬼?1.支撑web互联网技术的核心技术是

2021-11-10 10:04:44 308

原创 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 1628

原创 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 1855 1

原创 uboot构建框架6-u-boot.bin生成过程追踪

先看终极目标在配置完毕的情况下,我们在uboot根目录敲下"make"命令,就会执行一系列动作,产生一系列结果。这结果之一,便是u-boot.bin。这个u-boot.bin是一个二进制执行代码文件,理论上可以被CPU直接执行。但是对于imx6来说,不拿这个直接烧写,还是需要再处理一下才行,这个后续会提到。只要是查看主Makefile的执行流程,我们第一要做的,是找到这个Makefile的...

2019-06-03 15:30:00 3063 1

原创 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 932

原创 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 1657

原创 uboot构建框架3-make menuconfig命令的过程追踪

menuconfig是干什么的?编译过uboot或者内核的朋友一定清楚这个命令是干什么的,如果不知道,请记住了,这个命令是用来配置的。什么是配置?就是诸如选择什么CPU,选择什么soc,选择什么特性,是否编译成模块等等。uboot和内核的配置功能非常强大。menuconfig是一类通过ncurses实现的简易图形配置功能。我们可以通过cd到uboot根目录,然后键入:make men...

2019-05-31 17:49:46 1764

原创 uboot构建框架2-kbuild框架简要分析

其实网络上介绍kbuild框架的资料书籍一大把,有的介绍非常详细,大家不妨可以参考。本文试图从一些线索来简要分析kbuild框架,好让我们从一个方面了解一条线,不至于陷入kbuild框架的各种大坑里面。kbuild是个什么鬼?kbuild来源于linux内核,是linux内核用来构建输出内核镜像的make框架。因为这套框架做得比较好,uboot也借过来用了。kbuild中的k,我想应该就是...

2019-05-31 14:50:47 1560

原创 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 1589

原创 linux内核研究笔记7(minix文件系统总结)

《linux内核完全注释》第12章对minix文件系统已经作了比较详细的说明。本文做些简单的总结并且做些实践的记录。以12章360k的存储磁盘为例,如下图:该图基本上还是包含了minix文件系统的各个成分,但是有些东西说得还是不够。1.一个文件系统,在格式化构建文件系统的时候,很多信息都已经被确定下来了,比如i节点位图所占存储块数量,逻辑块位图所占存储块数量,i节点所占空间等等。...

2019-04-19 14:34:41 1350

原创 一个开发者对996的一点看法

最近996的话题似乎很火嘛。各种大佬,包括马云、刘强东、周鸿祎等等,都发表了自己的看法。大佬有大佬的考虑,我作为一线开发者,也有自己的一些看法。首先,强制996肯定是错误的事情,至少明面上是不能说的,这个事情,上不了台面。但是,上不了台面的996,为什么实际情况确实非常常见,至少在科技型公司里面,是事实上的一种制度。个人觉得,原因有以下几个方面:1.国内开发者基础教育薄弱。从事开发...

2019-04-17 15:17:17 300

转载 Linux用户与“最小权限”原则

作者:Vamei 出处:http://www.cnblogs.com/vameiLinux的用户在登录(login)之后,就带有一个用户身份(user ID,UID)和一个组身份(group ID,GID)。在Linux文件管理背景知识中,我们又看到,每个文件又有九位的权限说明,用来指明该文件允许哪些用户执行哪些操作(读、写或者执行)。(参考Linux文件管理背景知识)一般来说,L...

2019-04-12 15:01:07 475

原创 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 &gt...

2019-04-09 15:28:19 1197

原创 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 337

原创 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 377

原创 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 549

转载 [转]页面缓存-内存与文件的那些事

原文标题:Page Cache, the Affair Between Memory and Files原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]上次我们考察了内核如何为一个用户进程管理虚拟内存,但是没有涉及文件及I/O。这次我们的讨论将涵盖非常重要且常被误解的文件...

2019-03-29 11:21:42 143

转载 [转]内核是如何管理内存的

原文标题:How The Kernel Manages Your Memory原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]在仔细审视了进程的虚拟地址布局之后,让我们把目光转向内核以及其管理用户内存的机制。再次从gonzo图示开始:Linux进程在内核中是由ta...

2019-03-29 11:19:32 137

转载 [转]剖析程序的内存布局

原文标题:Anatomy of a Program in Memory原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]内存管理模块是操作系统的心脏;它对应用程序和系统管理非常重要。今后的几篇文章中,我将着眼于实际的内存问题,但也不避讳其中的技术内幕。由于不少概念是通用的,...

2019-03-29 11:15:31 123

转载 [转]Cache: 一个隐藏并保存数据的场所

原文标题:Cache: a place for concealment and safekeeping原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]本文简要的展示了现代Intel处理器的CPU cache是如何组织的。有关cache的讨论往往缺乏具体的实例,使得一些简单...

2019-03-29 11:12:00 272

转载 [转]CPU的运行环, 特权级与保护

原文标题:CPU Rings, Privilege, and Protection原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]可能你凭借直觉就知道应用程序的功能受到了Intel x86计算机的某种限制,有些特定的任务只有操作系统的代码才可以完成,但是你知道这到底是怎么...

2019-03-29 11:09:42 156

转载 [转]内存地址转换与分段

原文标题:Memory Translation and Segmentation原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]本文是Intel兼容计算机(x86)的内存与保护系列文章的第一篇,延续了启动引导系列文章的主题,进一步分析操作系统内核的工作流程。与以前一样,我...

2019-03-29 11:01:37 255

转载 [转]内核引导过程

原文标题:The Kernel Boot Process原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]上一篇文章解释了计算机的引导过程,正好讲到引导装载程序把系统内核镜像塞进内存,准备跳转到内核入口点去执行的时刻。作为引导启动系列文章的最后一篇,就让我们深入内核,去看...

2019-03-29 11:00:09 156

转载 [转]计算机的引导过程

原文标题:How Computers Boot Up原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]前一篇文章介绍了Intel计算机的主板与内存映射,从而为本文设定了一个系统引导阶段的场景。引导(Booting)是一个复杂的,充满技巧的,涉及多个阶段,又十分有趣的过程。...

2019-03-29 10:58:28 989

转载 [转]CPU如何操作内存

原文标题:Getting Physical With Memory原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]在你试图理解一个复杂的系统时,如果能揭去表面的抽象并专注于最低级别的概念,往往会有不小的收获。在这个精神的指导下,让我们看看对于内存和I/O端口操作来说...

2019-03-29 10:56:34 147

转载 [转]CPU的等待有多久?

原文标题:What Your Computer Does While You Wait原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]本文以一个现代的、实际的个人电脑为对象,分析其中CPU(Intel Core 2 Duo 3.0GHz)以及各类子系统的运行速度——延迟和...

2019-03-29 10:53:14 550

转载 [转]主板芯片组与内存映射

原文标题:Motherboard Chipsets and the Memory Map原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]我打算写一组讲述计算机内幕的文章,旨在揭示现代操作系统内核的工作原理。我希望这些文章能对电脑爱好者和程序员有所帮助,特别是对这类话题感...

2019-03-29 10:49:17 299

原创 IA32体系结构6(x86加电启动过程概述)

第一条指令物理地址加电启动过程非常精妙,道理很简单,加电时刻,所有的硬件部件基本都是没法工作的状态。至少内存里什么有用的东西也没有,CPU的寄存器还是初始状态,各种地址转换表也没有建立好。首先我们来看下,CPU从上电到正常工作,在地址线上发出的第一个有效物理地址是什么。这个在《Intel Architecture Software Developer Manual Volume 3》8.1...

2019-03-29 10:46:40 555

原创 IA32体系结构5(x86程序控制指令)

转移指令转移指令(JMP)允许程序员跳过一段程序,跳转到存储器的任何位置执行下一条指令。条件转移则允许程序员根据对数值的测试做出决定。这些数值测试的结果保存在标志位中,再由条件转移指令检测它们。1.无条件转移指令可以分为短转移、近转移、远转移。短转移-2字节指令,允许在+127和-128字节范围内转移近转移-3字节指令,允许在+32kb和-32kb范围内转移远转移-5字节指...

2019-03-28 10:53:44 405

原创 IA32体系结构4(x86常见指令概述)

IA32(x86)体系结构指令种类比较多,但是常见的一般也还行,一下总结linux0.11内核中使用到的所有指令,概述这些指令的基本用法,因指令的使用跟寻址方式都有关系,篇幅所限,不详细展开所有细节,看内核代码,了解基本情况已经足够。1.MOV(mov)数据转移指令,从源操作数转移数据到目标操作数。2.PUSH(push)9086~80286中的push总是把两个字节的数据传送到堆...

2019-03-28 09:09:22 858

原创 IA32体系结构3(x86机器码概述)

归根结底,处理器只认识机器语言,处理器会按照机器码的指示进行动作。x86体系结构使用指令长度可变的机器语言,一条机器码指令可以从1字节到13字节不等。这个跟ARM还是有很大区别,ARM32位处理器的话,是定长指令,是32位长度。8086~80286使用16位指令模式,80386以上处理器也可以工作在16位指令模式,两者是兼容的。16位模式和32位模式,其指令机器码格式有一些差别,具体格式如...

2019-03-27 11:40:37 2084

原创 IA32体系结构2(x86寻址方式)

数据寻址方式8086~80286微处理器的数据寻址方式包括:1.寄存器寻址2.立即寻址3.直接寻址4.寄存器间接寻址5.基址加变址寻址6.寄存器相对寻址7.相对基址加变址寻址80386以上处理器还包括:8.比例变址方式的存储器数据寻址一些说明这么多的寻址方式,有些比较直观,有些就很头大,什么叫基址加变址寻址?这要从x86的寄存器说起,话说x86有8个...

2019-03-26 16:28:20 992

原创 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 748

原创 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 1224 1

python学习手册第五版英文版

学习python的绝好资料,对python讲得非常详细,个人觉得是学习python的第一书籍

2018-02-27

2009电子竞赛试题

几个比较好的电子竞赛试题,有兴趣的同学可以动手做一做,说不定就是竞赛试题呢

2009-08-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除