- 博客(99)
- 资源 (6)
- 收藏
- 关注

原创 嵌入式驱动学习目录索引(更新中)
这是一篇索引博客,用来,可以用来给自己以及需要的读者作为一个目录索引,每次更新完博客都会添加进该目录中。嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现在关注就是老粉啦!
2024-03-12 02:19:14
914
1

原创 嵌入式驱动学习第一周——git的使用
本文主要介绍git的使用,包括介绍git,gitee,以及使用gitee创建仓库并托管代码git是开源的分布式版本控制软件,能有效并高效的处理项目。git能进行版本控制,即记录文件内容的变化,方便将来查阅特定版本修订情况。gitee中文名为码云,是开源中国推出的基于git的代码托管服务。国内访问gitee比github要快一些。
2024-02-26 17:51:22
1045
1

原创 带你从零开始徒手撸光线追踪代码(3)—— Ray Tracing in One Weekend
这是本系列文章的最后部分,对应的是《Ray Tracing in One Weekend》的第10-13章的内容,这部分内容比较少,所以博客内容也会相对短一些。之后会继续在CG专栏更新一些其他内容,欢迎各位推荐!
2022-12-14 01:06:59
1151
2

原创 手把手教你games101环境搭建(图文并茂)——Visual Studio安装,Eigen库,Opencv配置
使用图文的方式手把手教读者配置VS,Eigen和opencv,主要服务于games101本机环境的搭建
2022-11-16 16:37:52
13746
20
原创 linux0.11内核源码修仙传第十三章——进程调度大战前夕
这一章讲了很多东西,来做个回顾:首先我们自己设计了一下进程调度的规则,直到怎么保存上下文,设置进程运行优先级,规定了进程的几种状态。接下来从定时器的角度看进程调度,看了定时器中断函数,与进程调度函数。
2025-04-03 11:04:53
501
原创 如何从freesurfer中提取脑室及其他脑区的模板
在进行freesurfer分割之后,我们有时候希望提取对应脑区的模板,本文就是将如何提取我们所需要脑区的mask的。希望各位给个三连,拜托啦,这对我真的很重要!!!
2025-04-01 10:27:51
603
原创 linux0.11内核源码修仙传第十二章——内核态到用户态
本文重要的一些点:1. 首先是关于特权级,其实本质就是比较CPL,RPL与DPL之间的关系。2. 特权级的转换是通过中断返回实现的,这个中断返回不需要中断调用,只需要模拟中断发生,往栈里面压5个值即可。3. 进入用户态后就会一直在用户态,只有中断才可以进入内核态,而后又会回到用户态。
2025-03-31 22:09:50
822
原创 linux0.11内核源码修仙传第十一章——硬盘初始化
整个操作系统就是一个靠中断驱动的死循环而已,如果不发生任何中断,操作系统会一直在一个死循环里等待。换句话说,让操作系统工作的唯一方式,就是触发中断。
2025-03-28 16:08:30
916
原创 linux0.11内核源码修仙传第十章——进程调度始化
本文就干了三件事:第一,我们往全局描述符表写了两个结构,TSS 和 LDT,作为未来进程 0 的任务状态段和局部描述符表信息。第二,我们初始化了一个结构为 task_struct 的数组,未来这里会存放所有进程的信息,并且我们给数组的第一个位置附上了 init_task.init 这个具体值,也是作为未来进程 0 的信息。第三,设置了时钟中断 0x20 和系统调用 0x80,一个作为进程调度的起点,一个作为用户程序调用操作系统功能的桥梁。
2025-03-27 17:35:35
775
原创 linux0.11内核源码修仙传第九章——时间初始化
本文是一个很简单的模块——时间初始化。其核心就是CPU访问外设是通过端口的,先向端口写入一个指令表示我要干什么,然后再去另一个端口读取反馈数据。
2025-03-25 14:16:49
479
原创 我的创作纪念日暨六年编程路的回顾
时光荏苒,转眼间距离我写下第一篇技术博客已过去2048个日夜。那是在2019年的盛夏,我作为一名大一学生,在师兄的创客公司实习时萌生了建立优快云技术博客的想法。师兄的VR创业公司虽仅有六人规模,却处处洋溢着对技术的热忱。记得师兄曾特意抽时间与我促膝长谈,详细讲解VR领域所需的知识体系。如今五年光阴飞逝,那个充满梦想与激情的夏天依然历历在目,恍如昨日。值此之际,我愿以这篇总结,回顾这六年来在技术道路上的求索与成长。
2025-03-24 22:47:06
1107
原创 linux0.11内核源码修仙传第八章——控制台初始化
本文主要介绍了开启键盘中断,使得我们可以与控制台进行交互,同时如何将字符显示到屏幕上。其中字符显示到屏幕上的本质就是映射一部分内存为显存,然后往该内存里面写东西就可以显示到屏幕上。对于其中输入位置以及滚动,清屏,换行等操作则是通过代表屏幕坐标的x,y以及对应位置的内存坐标指针pos进行算法编写实现的。
2025-03-21 16:55:13
920
原创 linux0.11内核源码修仙传第七章——块设备请求项初始化
块设备(Block Device)承载了文件系统的运行,管理磁盘存储的核心逻辑。其是Linux中用于存储数据的硬件抽象,允许以固定大小的块(512字节或4KB)为单位进行数据读写。区别于字符设备,块设备支持随机访问,适合磁盘存储设备,如硬盘,固态硬盘,U盘,虚拟块设备等,可以通过lsblk指令查看。本文讲的较少,主要就是讲了块设备的初始化,实际上就是初始化request数组,这个结构里面指定了操作是读还是写,从哪里读写,内存里面的位置在哪。
2025-03-11 11:37:49
772
原创 linux0.11内核源码修仙传第六章——中断初始化
中断的基本概念很简单,就是在做某件事情的时候突来来了另一件事情要立刻去做或者稍后去做。其实整个操作系统就是一个中断驱动的死循环,依据第四章的内容(linux0.11内核源码修仙传第四章——操作系统的框架代码...for(;;) pause();其他所有事情都是由操作系统提前注册的中断机制及其对应的中断处理函数完成的,比如点鼠标,敲键盘,执行一个应用等,当没有事件时,操作系统就在循环里面待着。
2025-03-10 22:51:03
841
原创 linux0.11内核源码修仙传第五章——内存初始化(主存与缓存)
本文主要讲解了在操作系统初始化阶段,主存与缓存的初始化,明确了二者的分界线以及内核代码区与缓存的分界线。
2025-03-07 18:25:25
1044
原创 linux0.11内核源码修仙传第四章——操作系统的框架代码
本节内容较少,主要就是梳理了一下操作系统的代码框架,整个操作系统都做了哪些事情,具体的东西会在后面博客有所讲解。
2025-03-06 21:55:38
710
原创 linux0.11内核源码修仙传第三章——head.s
至于压入的L6,其是作为main函数返回的跳转地址,但是main函数是死循环,因此没有用,三个0是main函数的参数,但实际也没有用到。至此已经完成任务,操作系统准备完成,现在进入main函数了!
2025-03-06 02:58:25
980
原创 linux0.11内核源码修仙传第二章——setup.s
整个setup部分就做了三件事,第一件事是做代码搬运和临时变量存放,第二件事是突破寻址瓶颈,第三件事是进入保护模式。在代码搬运阶段,整个操作系统的代码被放到了内存中0 ~ 0x8000的位置。突破寻址瓶颈可以将寻址空间突破1MB。进入保护模式要注意描述符表以及保护模式下的寻址方式的改变。
2024-12-18 23:33:04
1069
原创 双非逆袭字节系统开发,年薪40+,我是如何做的
实习真的很重要!!!对比我身边没有实习的同学,差距真的很大,是简历都不过关的程度。此外学历也很重要,一些好的公司,比如芯片原厂,momenta这些智驾公司都很卡本科学历,学历不好极有可能连简历都过不去。因此不管是什么学历,都建议去实习,我个人排序简历几个重要性程度那就是:学历 >> 实习 >> 项目 > 竞赛。
2024-12-18 17:09:32
642
1
原创 linux0.11内核源码修仙传第一章——bootset.s
本文以linux0.11为参考版本,参考了《linux源码趣读》和其他一些资料对源码进行解读,本篇文章只涉及boot文件,希望能和大家一起学习linux的思想
2024-12-17 12:02:14
847
原创 嵌入式驱动学习第六周——内核函数调用(堆栈打印)
在内核中,函数调用堆栈非常重要,因为它可以帮助开发人员理解代码是如何执行的,从而进行调试、性能优化或问题排查。堆栈可以显示当前执行的函数以及导致该函数调用的先前函数,从而形成一个函数调用链。本篇博客就介绍堆栈打印内核函数的调用。!
2024-04-06 18:29:47
1623
原创 modprobe加载驱动模块时报错:modprobe: module xxx.ko not found in modules.dep
使用modprobe时,报错modprobe: module xxx.ko not found in modules.dep
2024-04-04 20:44:56
1067
原创 中断代码实验——工作队列、线程化处理、tasklet
这篇博客是linux内核中断处理案例实现,根据下半部的不同处理方式分为工作队列、线程化处理、tasklet三种方式
2024-04-04 17:26:52
862
原创 windows下通过vscode访问ubuntu(绝大部分Linux下开发所采用的方案)
本篇博客是介绍VSCode远程连接Ubuntu进行开发的解决方案,前提是安装好了VMWare,Ubuntu,windows下的VSCode。
2024-04-02 23:04:37
1421
原创 嵌入式驱动学习第五周——驱动模块
Linux 驱动有两种运行方式,第一种就是将驱动编译进 Linux 内核中,这样当 Linux 内核启动的时候就会自动运行驱动程序。第二种就是将驱动编译成模块(Linux 下模块扩展名为.ko),在Linux 内核启动以后使用“insmod”命令加载驱动模块。在调试驱动的时候一般都选择将其编译为模块,这样我们修改驱动以后只需要编译一下驱动代码即可,不需要编译整个 Linux 代码。而且在调试的时候只需要加载或者卸载驱动模块即可,不需要重启整个系统。
2024-04-01 16:48:06
836
原创 嵌入式驱动学习第四周——设备树
驱动开发一个很重要的东西就是设备树,这篇博客来讲一下设备树,以及dtb,dts,dtc等,设备树语法。最后讲一下如何在驱动中找到设备树对应节点进行匹配,并查找属性
2024-03-22 02:01:20
1029
脑科学中使用 freesurfer 提取所需脑区的label文件,里面是分割后每个脑区的label,名称以及对应颜色的rgba值
2025-04-01
html、CSS、JavaScript
2020-09-13
Java复习笔记.rar
2020-09-13
C++面向对象的ATM机设计,含MFC和控制台版本
2020-05-06
C语言贪吃蛇源代码未使用结构体
2020-05-06
hal库stm32f103c8t6做的音乐盒和按键钢琴
2020-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人