嵌入式开发
文章平均质量分 89
Linux设备驱动开发,嵌入式系统,单片机原理与应用
妖怪喜欢风
在此地留下属于我的足迹
展开
-
QNX OS微内核系统
微内核(GNU。原创 2024-06-23 17:57:22 · 120 阅读 · 0 评论 -
剖析硬盘分区方案和NTFS文件系统结构
一个NTFS分区的数据结构如下VBR,存储跟引导相关的数据,大小为16个扇区File Area:一切皆为文件,包括元数据文件、常规文件、目录,一切的一切都是文件BBS,分区的第一个扇区是分区引导记录,是能否引导系统的关键,所以用分区的最后一个扇区备份第一个扇区,用于修复损坏的第一个扇区卷中第一个扇区存放和的数据偏移长度含义00-02H3跳转指令EB 52 9003-0AH8NTFS0B-0CH2每个扇区的字节总数,一般是5120DH1簇大小0E-0FH2保留扇区10-12H3。原创 2024-03-28 23:25:54 · 1136 阅读 · 0 评论 -
RAM/ROM/Flash区别
直接交换数据的内部存储器,也叫内存。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介, 当电源关闭时。协会所订立的、主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,固态硬盘的存储介质分为两种,一种是采用闪存()的性能,还不会断电丢失数据同时可以快速读取数据(为内部存储器,非内存和外存的关系,从本质上来说,闪存,它属于内存器件的一种,是一种不挥发性(用来存储和保存数据。分为很多种,常见的主要有。原创 2023-11-10 18:09:39 · 257 阅读 · 0 评论 -
OpenSBI知识结构整理
OpenSBI原创 2023-04-06 00:49:48 · 805 阅读 · 1 评论 -
扒一扒bin文件和elf文件的联系
Bin文件是最纯粹的二进制机器代码, 或者说是"顺序格式"。按照assembly code顺序翻译成binary machine code,内部没有地址标记。Bin是直接的内存映象表示,二进制文件大小即为文件所包含的数据的实际大小。BIN文件就是直接的二进制文件,一般用编程器烧写时从00开始,而如果下载运行,则下载到编译时的地址即可。可以直接在裸机上运行。文件中还是有一些有用的信息,不过不知道为何关于动态链接的。感觉以下句子还是有些模糊不清,特别是。那么来扒一扒具体文件内容。中,稍等再研究一下吧。原创 2023-04-01 02:13:38 · 426 阅读 · 0 评论 -
ARM体系结构与编程(更)
ARM汇编语言源程序中,语句由指令、伪操作和宏指令组成,主要分为:符号定义、数据定义、汇编控制、数据帧描述、信息报告和其他伪操作符号定义符号定义伪操作用于定义ARM汇编程序中的变量,对变量进行赋值以及寄存器名称GBLA、GBLL及GBLS:声明全局变量LCLA、LCLL及LCLS:声明局部变量SETA、SETL及SETS:给变量赋值RLIST:为通用寄存器列表定义名称CN:为协处理器的寄存器定义名称CP:为协处理器定义名称DN 及SN:为VFP的寄存器定义名称FN。原创 2022-11-23 21:35:59 · 570 阅读 · 0 评论 -
Intel® 64 and IA-32 Architectures Software Developer’s Manual 读后感
4834页,虽然有点多,但是还是希望大家能看完。前些时候训练了一段的的芯片构造,主要实现的是mips和risc-v指令集,后来自己有时间看了看arm,受益匪浅,不得不说,要想一个更好的os,底层离不开高效的硬件支持,所谓“软件不行,硬件出手”正是此道理。主要分为四层,第一册是基本架构,第二册是指令集参考,第三册上系统编程手册,第四册上MSR寄存器查阅手册。第一册讲述的偏重硬件架构,第三册偏重软件特性,2和4我在此不列出了,纯纯使用字典。原创 2022-11-03 19:23:02 · 812 阅读 · 0 评论 -
虚拟文件系统(无持久存储的文件系统),以proc和sysfs为例
对于现代操作系统,虚拟文件系统是一个几乎无处不见的功能,因此,要探究现代操作系统的运行机制,对其进行讨论是必然的。本文使用的是`Linux 2.6.x.x`,这是一个变革性的版本,无论是内存管理,进程管理,文件管理还是设备管理都出现了开天辟地的变化,因此,以这个版本进行探究是很有必要的。原创 2022-10-16 17:12:20 · 1738 阅读 · 0 评论 -
现代操作系统的内存管理原理:以Linux2.6.x.x为例
不谈老掉牙的内存管理方式了。本文使用的内核是版本。内存管理?内存管理!不管是在老版本的操作系统各个子系统中,亦或是现代版本操作系统中,都是极其复杂和庞大的。当然,万变不离其宗,但是,看源码可以让你找不到方向。本文在上一篇的基础上来解释,当然要把源码完完全全的列出来不太现实,大家对照自己的前置理解即可,如果有时间和精力去完完全全看懂源码才是最好!。动态链接算是把Glibc、vir addr和用到了极致!对照之前的Linux 0.11和0.99版本,2.6.x.x。原创 2022-10-16 02:01:32 · 581 阅读 · 0 评论 -
什么是虚拟地址空间?从架构视角来解释
引言:小白,虚无,飘渺,渐实,真实,进阶,深化,投入,高阶,系统,架构……操作系统学习之路道阻且长。为何要从源码的角度来探究?抽象层实在太过抽象!操作系统五大功能,可能学完一学期的课程也难以把它们联系起来,因此从源码角度来解剖,很有必要。本文操作系统以Linux为例此篇也主要是解惑文章的,毕竟之前觉得操作系统很多东西实在存在的莫名其妙,时至今日,仍有许多疑点。但是对于现代操作系统,特别是Linux,越来越佩服了。原创 2022-10-12 22:32:48 · 1321 阅读 · 0 评论 -
记录QEMU上模拟ARM运行环境(内核 2.6.30)
我们使用ramfs的方式来为内核提供根文件系统,内核默认的配置没有支持ramfs设备,我们需要添加对应的支持(CONFIG_BLK_DEV_RAM=y)此处有两种方法可以生成最小根文件系统,一种是使用虚拟内存文件系统,一种是直接新建物理节点(可见参考链接部分),下面 主要介绍使用虚拟内存文件系统。制作根文件系统镜像 根文件系统镜像就相当于一个硬盘,就是把上面rootfs根目录中的所有文件复制到这个硬盘中。把busybox-1.20.2中的文件复制到rootfs根目录下,主要是一些基本的命令。原创 2022-09-14 06:20:37 · 1137 阅读 · 2 评论 -
Linux 2.6.4.30 Arm Architecture源码深度剖析---基于《ARM Linux内核源码剖析》
以下均是如此,内存管理和文件目录架构均没有太大的变化,而市面上唯一找到的便属这本《ARM Linux内核源码剖析》了,在它的基础上,我在本篇对该版本的。内存类型:根据内存使用目的的不同,内存类型对是否使用缓存、是否使用写缓冲、是否共享、域等信息的定义了不同设置,通过。由于嵌入式系统具有的资源十分有限,为了提高这种环境下内核内存的负载率和执行效率,使用压缩后的内核二进制文件。是 编译内核指定的,且都是虚拟地址,因此,只有将这些虚拟地址变更为物理地址,才能访问具有处理器信息的。架构代码进行词词解析,对!原创 2022-09-08 00:05:26 · 1254 阅读 · 0 评论 -
嵌入式知识总结:交叉编译、ARM汇编、驱动开发
引言:嵌入式系统开始上课了,我要寄了!所以写下这篇文章作为我嵌入式系统开发和单片机开发的先导知识点原创 2022-09-07 04:42:02 · 698 阅读 · 0 评论 -
Linux 0.11源码的内存管理和进程创建&&Linux0.99改进方法简述
`Linux`内核源码剖析,在前面的一篇文章中有对其整体框架大致说清楚了,所以我也没有太在意其内在细节,在看完xv6源码之后,我对0.11版本还是有一些执念,感觉有一些不兼容。果然,让我发现了一些端倪,后来在网上查资料,才知道现在`Linux`操作系统的内存管理基本都是在0.99版本之后进行改进的,原始的0.11版本背负了太多历史包袱,导致其繁杂冗余,但是也没办法,当初能写出该系统也是在资源有限的前提下的。......原创 2022-08-18 04:29:53 · 485 阅读 · 0 评论