- 博客(12)
- 资源 (12)
- 收藏
- 关注
原创 块设备驱动----------代码(2)
#include <linux/module.h>#include <linux/moduleparam.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/types.h> /* size_...
2020-01-09 21:25:26 350
原创 块设备驱动-------基本知识(1)
当我们的应用层读写(read()/write())字符设备驱动时,是按字节/字符来读写数据的,期间没有任何缓存区,因为数据量小,不能随机读取数据,例如:按键、LED、鼠标、键盘等块设备是i/o设备中的一类, 当我们的应用层对该设备读写时,是按扇区大小来读写数据的,若读写的数据小于扇区的大小,就会需要缓存区, 可以随机读写设备的任意位置处的数据,例如 普通文件(*.txt,*.c等),硬盘,U盘...
2020-01-09 20:38:08 177
原创 VFS:各种底层文件系统和用户态接口之间不可或缺的转换层
VFS(virtual File System)的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统,即为各类文件系统提供了一个统一的操作界面和应用编程接口。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。这是Linux文件系统对外的接口。任何要使用文件系统的程序都必须经由这层接口来使用它。在...
2020-01-09 20:15:14 320
原创 字符驱动------实战代码分析之mknod命令(4)
命令mknod,可以生成块设备文件或者字符设备文件,格式为:mknod [OPTION] NAME TYPE [MAJOR MINOR]OPTION是选项,比较有用的是-m,表示生成的设备文件的权限;NAME是生成的设备的名称TYPE是设备类型,b表示块设备,c表示字符设备,p表示管道MAJOR是主设备号,MINOR是次设备号,主设备号是由文件/usr/include/linu...
2020-01-09 19:39:12 761
原创 字符驱动------实战代码分析(3)
基本知识:(为什么要用主设备号和次设备号)主设备号被系统用来确定驱动程序(设备类型:如USB设备,硬盘设备),次设备号被驱动程序用来确定具体的设备。#include<linux/module.h>#include<linux/kernel.h>#include<linux/cdev.h>#include<linux/fs.h>#in...
2020-01-08 21:45:15 124
原创 字符驱动cdev下的--------虚拟内存机制、用户空间与内核地址空间(基本知识2)
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。虚拟内存机制:Windows中应用程序实际用到的内存,主要由两种介质构成:1、物理内存2、硬盘上的页面交换文件(swap){MMU把虚拟内存映射到实际内存和SWAP},这两...
2020-01-08 20:42:17 138
原创 字符驱动剖析----cdev(基本知识1)
cdev是linux用来管理字符设备的结构体,其在内核中采用数组结构设计,这样系统中有多少个主设备号就约定了数组大小,此设备号采用链表管理,同一主设备号下可以有多个子设备。设备即文件,上层应用要访问设备,必须通过文件,cdev中包含file_operations结构体,该结构体就是驱动的文件操作集合。cdev.h位于 /usr/src/linux-headers-4.15.0-5...
2020-01-08 13:05:05 617
原创 BIOS
BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。...
2020-01-07 21:11:56 107
原创 Bootloader:引导加载程序是系统加电后运行的第一段软件代码,称之为Bootloader
与PC机中的BIOS作用相似;后者意味着将嵌入式操作系统映像加载到内存中,并跳转过去运行。如PC机中MBR上的BootLoader(PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS BootLoader(比如,LILO和GRUB等)一起组成。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统的RAM中,然后将控制权交给OS BootL...
2020-01-07 15:02:54 1033
转载 uboot
uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核.所以,由上面描述的,就知道,UBOOT需要具有读写flash的能力。uboot是怎样引导启动内核的?uboot刚开始被放到flash中,板子上电后,会自动把其中的一部分代码拷到内存中执行,这部分代码负责把剩余的uboot代码拷到内存中,然后uboot代码再把...
2020-01-07 10:59:56 103
原创 linux从启动到最后根文件系统被挂载的整个过程刨析
根文件系统:处于文件系统最上层其实ramdisk只是在ram上实现的块设备,类似与硬盘操作,但有更快的读写速度最后运行init进程(最终目的)程序中可以通过U-Boot给Kernel指定参数或者编译选项来指定,如目前的开发板中就通过如下的编译选项来制定根目录文件系统:CONFIG_CMDLINE="console=ttyS0,115200 mem=108M rdinit=/li...
2020-01-06 20:53:59 1264
web practice.zip
2020-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人