自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 操作系统原理(5)

1.进程编译:程序的二进制格式    在 Linux 下面,二进制的程序有严格的格式,这个格式称为 ELF(可执行与可链接格式)。这个格式可以根据编译的结果不同,分为不同的格式。    1)在编译的时候,先做预处理工作,例如将头文件嵌入到正文中,将定义的宏展开,然后就是真正的编译过程,最终编译成为.o 文件,这就是 ELF 的第一种类型,可重定位文件(Relocatable File)。文件的格式如右图:    ELF 文件的头是用于描述整个文件。    .text:放编译好的二进制可执行代码。

2020-07-16 14:25:23 171 1

原创 操作系统原理(4)

系统调用:1.glibc 对系统调用的封装    在 glibc 的源代码中,有个文件 syscalls.list,里面列着所有 glibc 的函数对应的系统调用。glibc 还有一个脚本 make-syscall.sh,可以根据上面的配置文件,对于每一个封装好的系统调用,生成一个文件,这个文件里面定义了一些宏。glibc 还有一个文件 syscall-template.S,使用上面这个宏,定义了这个系统调用的调用方式。对于任何一个系统调用,会调用 DO_CALL(一个宏)。2.32 位系统调用过程

2020-07-06 22:24:54 272

原创 操作系统原理(3)

系统初始化1.初始化各种模块    内核的启动从入口函数 start_kernel() 开始,里面是各种各样初始化函数 XXXX_init。初始化进程管理模块,通过set_task_stack_end_magic(&init_task)创建第一个进程,称为0号进程。这是唯一一个没有通过 fork 或者 kernel_thread 产生的进程,是进程列表的第一个。调用trap_init(),里面设置了很多中断门(Interrupt Gate),用于处理各种中断。调用mm_init() 来初始

2020-06-28 23:38:10 156

原创 操作系统原理(2)

系统启动1.BIOS时期    在主板上,有一个东西叫 ROM(Read Only Memory,只读存储器),上面固化了一些初始化的程序,也就是 BIOS(Basic Input and Output System,基本输入输出系统)。在 x86 系统中,将 1M 空间最上面的 0xF0000 到 0xFFFFF 这 64K 映射给 ROM,也就是说,到这部分地址访问的时候,会访问 ROM。刚上电时,做一些配置工作,将 CS 设置为 0xFFFF,将 IP 设置为 0x0000,所以第一条指令就会指向

2020-06-21 22:09:39 172 1

原创 操作系统原理(1)

一、操作系统的定义:从用户角度看,操作系统是一个控制软件,负责管理应用程序、为应用程序提供服务、杀死应用程序、资源管理、管理外设/分配资源。二、在操作系统下,进程相当于CPU、文件相当于磁盘、地址空间相当于内存。三、操作系统的架构层次:硬件之上,应用软件之下(为应用软件提供服务支持)。四、Kernel包括:CPU调度器、物理内存管理、虚拟内存管理、文件系统管理、中断处理和IO设备驱动(底层硬件)。五、OS Kernel的特征:1)并发:指一段时间内有多个程序可以运行,而并行是指一个时间点上有多个程

2020-06-14 10:46:09 172

原创 嵌入式Linux之Uboot笔记(4)--启动第二阶段分析

**1.**uboot启动的第二阶段的代码是用高级语言编写的,主要是初始化剩下的还未初始化的硬件设备,如网卡等外部硬件。**2.**for循环执行init_sequence,init_sequence是一个函数指针数组,里面存储很多函数指针。这些函数都是board级别的各种硬件初始化。**3.**初始化uboot的堆管理器。**4.**环境变量重定位。**5.**IP地址、MAC地址的确定。**6.**设备初始化,放在这里面初始化的设备都是驱动设备。**7.**初始化跳转表、控制台,

2020-06-07 21:38:35 175

原创 嵌入式Linux之Uboot笔记(3)--启动第一阶段代码分析

**1.**uboot启动的第一阶段是用汇编来进行编写的,在u-boot.lds中找到start.S的入口。**2.**代码开始的地方首先包含两个头文件。#include<config.h>包含了uboot移植时的配置文件,而#include<version.h>包含了include下的另一个文件,内容是有关uboot的版本号信息。**3.**构建异常向量表,如下所示。**4.**代码跳到reset部分往下执行。设置CPU的的工作模式为SVC模式,关看门狗,设置时钟等操作。*

2020-06-07 20:55:45 153

原创 嵌入式Linux之u-boot笔记(2)--Makefile分析

一、VERSION : 主版本号PATCHLEVEL: 次版本号SUBLEVEL: 再次版本号EXTRAVERSION : 额外的版本信息U_BOOT_VERSION :这个变量记录了uboot的版本号注意:include/vrsion_autogenerated.h是便宜过程中自动生成的一个文件,里面的内容是由一个宏定义的uboot版本号。二、HOSTARCH 、HOSTOS...

2020-05-03 21:41:46 148

原创 嵌入式Linux之u-boot笔记(1) --概述

一、什么是u-boot?1、u-boot是SourceForge上的一个开源项目。起初由一个人发起,然后由整个网络上所有感兴趣的人共同维护发展而来的一个bootloader。2、u-boot经过多年发展,已经成为业内的bootloader标准。现在大部分的嵌入式设备都会默认使用u-boot来作为bootloader。3、u-boot的版本号问题:早期的u-boot版本号类似于uboot-x....

2020-04-26 09:31:21 143

空空如也

空空如也

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

TA关注的人

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