自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32F100xx 系统架构

哈弗体系结构:程序和数据分离,从各自的总线获取。

2024-09-06 14:08:34 246

原创 STM32 外部中断(EXTI)

实验:配置一个引脚的下降沿作为外部中断。江协科技。

2024-09-03 12:25:09 588

原创 WINDOWS 共享内存

【代码】WINDOWS 共享内存。

2024-08-27 11:27:18 245

原创 STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(2)

实验 2:在单片机搭建好 tcp 服务器后,编写传送文件的上位机。

2024-08-22 18:15:11 324

原创 STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3)

实验 3:在搭建好 tcp 服务器,并拟定好协议的前提下,接收每一个 bin 文件的块,配置到 fpga。

2024-08-21 19:25:26 521

原创 HAL 库 STM32F4 裸机 LAN8720 实验

本次实验的 LAN8720 复位引脚直连了 MCU 的复位引脚,所以我没有手动添加引脚来复位,如果单独配置复位引脚,那么清参考别的教程配置。把 slipif.c 内容全部删除。

2024-08-15 11:21:37 566

原创 实验28.文件删除 sys_unlink

实验 28. 文件删除 sys_unlink1 删除目录项,2 释放 inode 的数据块和 inode 结构体。

2024-08-12 18:31:35 266

原创 实验27.fwrite,fread,fseek

实验 27. fwrite,fread,fseek1.确保 inode 的数据块有那么多空间,如果没有就扩容。2.把数据写入文件的数据块。读出 inode 的所有数据块偏移,然后在数据块中读出数据。修改 file 结构体的 fd_pos 即可。

2024-08-12 16:39:54 445

原创 实验26.文件的打开和关闭

【代码】实验26.文件的打开和关闭。

2024-08-09 15:24:51 304

原创 实验25.创建文件

实验 25. 创建文件i_no 就是 inode 号i_sectors 是块地址数组,表示这个文件的内容是那些块构成的.如果是文件,那么块的内容是文件的内容如果是目录,那么这些块的内容是一个个目录项。

2024-08-09 00:08:38 509

原创 实验24.创建并挂载文件系统

实验 24. 创建并挂载文件系统创建件系统: 初始化每一个分区的结构,把扇区划分为超级块,扇区位图,inode 位图,inode 表,根目录,空闲扇区挂载分区: 创建一个分区结构体,在内存中存放要挂在的分区的超级块、扇区位图、inode 位图。

2024-08-06 21:17:24 431

原创 实验23.硬盘分区,并编写硬盘驱动程序

已完成实验已完成实验链接简介实验 22. 硬盘分区,并编写硬盘驱动程序总结创建硬盘并分区加载硬盘分区实现 printk使能硬盘中断 interrupt.cidel 线程,主线程阻塞后此线程保底 thread.csleep 函数 timer.c加载分区信息 ide.c创建硬盘fdisk /home/c/os/bochs/hd80M.img# 1.设置柱面和磁头mxmc162h16r# 创建主分区np1204833

2024-08-06 18:05:12 813

原创 实验22.堆内存管理

实验 22. 堆内存管理用户的内存块描述数组在 pcb 中定义了内存块描述数组,描述符的链表里放着申请了但是没有使用的内存块申请 size 大小的内存时,本质申请到的是 sizeof(arena) + size(假设叫 buffer) 的长度若 size>1024, 那么 arena 把 buffer 当成一个内存块,直接返回 buffer 的首地址若 size<1024,那么 arena 把 buffer 分成 n 份内存块,把每一个内存块记录在描述符的链表中。

2024-08-02 17:17:46 826

原创 实验21.实现 printf

实验 21. 实现 printf简化系统调用和中断,用 eax 代表调用号参数,ebx,ecx,edx 来代表参数(syscall.c kernel.s)添加 write 的系统调用接口(syscall.c, syscall-init.c, print.s)注意:要更改 print.s 中清屏的地址添加 printf 函数接口。

2024-08-01 18:13:26 554

原创 实验20.实现系统调用

实验 20. 实现系统调用进程结构体新增 pid 成员变量pid 采用静态全局变量,锁控制+1,确保唯一进程初始化是就分配好 pid添加 getpid,本质调用 syscall,参数入栈,再执行 int 0x80添加 0x80 中断,根据参数 0 调用系统调用函数表的函数初始化系统调用函数表,表项 0 就是获取 pid。

2024-08-01 11:42:06 434

原创 实验 19. 用户进程

实验 19. 用户进程main函数创造了1个主线程,两个内核线程,两个用户进程。共5个PCB,进程PCB->pgdir为进程自己的页表首虚拟地址,线程为null。因此本次实验是五个进/线程在来回切换。他们切换的方式无疑都是利用自己PCB->kstack保存切换前esp,然后不断pop完成cs:eip的跳转。

2024-07-31 22:26:09 378

原创 实验18.环形缓冲区

实验 18. 环形缓冲区1.生产者消费者问题。

2024-07-30 14:16:11 223

原创 实验17.实现键盘输入

实验 16. 实现键盘输入1.注册键盘中断,2.中断函数读取键盘端口,做按键判断,打印。

2024-07-30 11:42:28 413

原创 实验16.用锁实现终端输出

实验 15.用锁实现终端输出注意:gcc一定不能用11.4,换成书上环境,我是用的4.4.7能过正确。使用gcc11一直错误,怀疑人生了都。

2024-07-29 21:29:46 499

原创 饿汉、饱汉、内部静态变量三种单例模式

尽可能用内部静态变量单例。

2024-07-26 14:57:21 211

原创 实验15.多线程调度

实验.多线程调度。

2024-07-25 18:27:51 819

原创 实验14.实现内核线程

实验.实现内核线程。

2024-07-24 11:01:36 279

原创 实验13.内存管理系统

实验:内存管理系统。

2024-07-23 22:13:40 444

原创 实验12.实现断言

实验.assert 断言函数。

2024-07-23 11:34:33 146

原创 实验11.实现中断处理 2

实验.实现中断处理, 在kernel.s中的中断服务程序中调用在interrupt.c定义的中断函数,并调快时钟。

2024-07-23 00:35:44 349

原创 实验10.实现中断处理

实验.实现中断处理。

2024-07-22 14:59:27 313

原创 实验9.实现打印字符串和数值

实验:混合编程实现打印字符函数

2024-07-20 23:51:46 280

原创 实验8.混合编程实现打印字符函数

实验:混合编程实现打印字符函数

2024-07-20 12:38:14 271

原创 实验7.加载内核

实验:加载内核,分析 kernel.bin 的 elf 文件头,找到各个段,然后将各个段复制到内存指定位置。

2024-07-18 00:27:33 162

原创 实验6.分页

实验:构造页目录及页表,完成从虚拟地址3GB~3GB+1MB到实地址0 ~1MB的映射以及虚拟地址0 ~ 1MB向物理地址0 ~ 1MB的映射注意:此时loader.bin大小超过1024字节 所以mbr要读取3个扇区,dd要复制3个扇区。

2024-07-17 11:29:33 317

原创 vscode 打开远程bug vscode Failed to parse remote port from server output

原因如图:

2024-07-16 23:58:08 404

原创 实验5.内存容量检测

实验:利用BIOS中断获取物理内存容量注意:mbr不再跳转到loader的起始位置,而是loader的loader_start位置。

2024-07-16 17:45:40 348

原创 《操作系统真相还原》全实验记录

操作系统真相还原实验记录

2024-07-16 15:35:15 269

原创 实验4.保护模式

实验:编写boot.inc和loader.s,完成在内存里写好3个段描述符(代码段、数据段、显存段)、赋值好GDTR寄存器、创建好表示3个选择子的字段后,进入保护模式

2024-07-16 14:59:13 1035

原创 实验3.mbr读取硬盘

实验:编写 mbr,读取0盘0道2扇区的内容写入内存,然后跳转执行写好的loader.s。

2024-07-16 14:30:44 366

原创 实验2.mbr读写显存

实验 1:编写 mbr,直接写入显存显示字符。

2024-07-16 11:32:35 255

原创 实验1.第一次编写mbr

实验 1:编写 mbr,在屏幕上显示字符。

2024-07-16 11:19:15 337

原创 实验0.环境搭建

【代码】实验0.环境搭建。

2024-07-16 10:59:01 334

原创 linux service小例

【代码】linux service小例。

2024-07-16 09:47:27 229

原创 imx6ull_alpha_highpreci_delay

我的理解。

2024-04-15 22:19:12 265

shared-memory-test-demo

shared_memory_test_demo

2024-09-06

空空如也

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

TA关注的人

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