main函数之kinit1 1. kinit1概述 物理内存分配器在xv6-book中由详细的描述: 这个函数是用来初始化物理内存分配器的。可以用来分配的物理内存范围是地址空间: 其中end这个标号在...
Xv6内核分析(二)
启动Xv6 1. Xv6入口代码 内核的入口代码在entry.S中,Xv6的内核是支持用grub引导的,grub引导的知识见此博客:https://blog.csdn.net/xiaolanmysel...
Xv6内核分析(一)
Bootloader引导 Bootloader部分的代码主要负责主核的启动,保护模式的设置等。代码主要在bootasm.S、bootmain.c中。 1.bootasm.S bootasm.S主要工作...
Liteos-a内核分析(三)
系统内存管理 本篇文章主要分析OsSysMemInit这个函数,主要初始化了内核虚拟空间、vmalloc虚拟空间、还有内核堆和系统物理页初始化等等。 1. TCB内存申请 在调用OsSysMemIni...
Liteos-a内核分析(二)
系统初始化 这里只粗略的分析下main函数做了哪些事情,目的是了解内核初始化的基本流程。main函数在kernel\liteos_a\platform\main.c中。 1. 设置系统主任务 在lit...
Liteos-a内核分析(一)
系统启动 1. 系统启动文件 系统启动文件为reset_vector_up.s ,在源码中的位置为kernel\liteos_a\arch\arm\arm\src\startup,在这个目录下有两个文...
SylixOS字符设备驱动开发(十四)
SylixOS设备驱动之NEW_1型驱动 在第三节教程中说过SylixOS下的驱动分为ORIG 和 NEW_1 两种类型,通过前面十几节教程的学习,我们已经知道ORIG 型驱动如何开发了,但是NEW_...
SylixOS字符设备驱动开发(十三)
SylixOS设备操作之mmap 有些外设控制器可能带有DMA功能,这类外设的驱动一般都需要使用物理连续的内存,而且只需要物理内存即可,在驱动层并不需要进行映射访问,这时可以通过下面接口申请物理内存:...
SylixOS字符设备驱动开发(十二)
SylixOS设备操作之select 通过前面的学习我们知道了SylixOS下操作设备是通过设备文件的方式来进行的,先open一个文件获取到一个文件描述符,然后通过文件描述符进行操作文件。有时候我们在...
SylixOS字符设备驱动开发(十一)
SylixOS设备操作之非阻塞read和write 上一节学习了阻塞方式对驱动进行读写,但是在某些情况下,我们需要非阻塞地读写驱动,如果数据没准备好,read或write调用需要立即返回以进行后续的业...
SylixOS字符设备驱动开发(十)
SylixOS设备操作之阻塞read和write 在实际的外设驱动中,如果需要读取设备数据,设备都需要一定的准备时间,比如读硬盘扇区数据,硬盘需要一段时间准备好数据后,通过中断来通知cpu数据准备好。...
SylixOS字符设备驱动开发(九)
SylixOS设备操作之read和write 有些设备可能会和应用层有大量的数据进行传输,比如网卡、硬盘等等,这时候用ioctl来和应用层传输数据就显得不怎么适合了,因为ioctl一般是用来进行对设备...