smile_sa
码龄6年
关注
提问 私信
  • 博客:59,477
    59,477
    总访问量
  • 54
    原创
  • 1,744,215
    排名
  • 12
    粉丝
  • 0
    铁粉

个人简介:菜鸡OS轮子爱好者

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2019-01-03
博客简介:

weixin_44391390的博客

查看详细资料
个人成就
  • 获得29次点赞
  • 内容获得10次评论
  • 获得72次收藏
  • 代码片获得189次分享
创作历程
  • 2篇
    2022年
  • 5篇
    2021年
  • 32篇
    2020年
  • 15篇
    2019年
成就勋章
TA的专栏
  • 一个64位操作系统的设计与实现
    6篇
  • 秋招总结
    11篇
  • 嵌入式os
    10篇
  • 读书笔记
    10篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

357人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

c++11无法在Ubuntu上构建protobuf 2.4.1

protobuf编译
原创
发布博客 2022.10.23 ·
555 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

评估方法及性能

34评估方法留出法交叉验证法自助法性能度量错误率及精度查准率(precision)、查全率(recall)与F1ROC
原创
发布博客 2022.03.13 ·
440 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

zookeeper使用过程中出现的问题

Ubuntu 缺少相应的包 libzookeeper-mt-dev,安装完成即可。sudo apt-get install libzookeeper-mt-dev
原创
发布博客 2021.03.06 ·
1174 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

muduo安装和使用中遇到的问题及解决

2、“muduo/net/TcpServer.h: 没有那个文件或目录”而这个目录的位置在 path/to/build/release-install-cpp11/include/mudo 下 ; 所以将muduo目录链接到 /usr/include 下;另外还需要将静态库文件 path/to/build/release-install-cpp11/lib/.a* 链接到 /usr/lib/ 。参考链接...
原创
发布博客 2021.03.06 ·
908 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

VMware的磁盘格式化

在OS的文件系统中,需要预先将磁盘格式化为FAT32,从而进行相应的底层操作。然而对于VMware玩家而言,无法像操作物理硬盘一样直接进行格式化分区,因此需要间接进行相关的方法。一、准备工作一个虚拟机中的操作系统,本文选用了ubuntu。虚拟机中磁盘格式化工具,本文选用了gparted。实现OS和磁盘操作OS的磁盘共享操作,参考链接。由于实现OS的硬盘操作命令是基于IDE接口,因此磁盘类型和VMware配置文件也要相应的改成IDE,注意两个虚拟机的节点要设置为一致,配置文件修改的部分也需要一致。
原创
发布博客 2021.02.09 ·
7399 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

Legacy改UFEI的内核修改

一、内核头程序head.S田宇老师的《一个UEFI引导程序的实现》一文提出:“由于数据段描述符在GDT表中的位置无法确定,从而就无法直接通过段选择子对段寄存器进行赋值。不过,好在栈段寄存器SS指向的段是可读写的,那么将此段作为数据段是可行的。”基于此关键修改部分如下:#include "linkage.h".section .textENTRY(_start) mov %ss, %ax mov %ax, %ds mov %ax, %
原创
发布博客 2021.02.02 ·
367 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

U盘UEFI引导OS内核的小白教程

本文参考田宇老师的《一个UEFI引导程序的实现》一文,使用U盘进行UEFI的内核引导,在VMware虚拟机上运行内核。一、工具DiskGenius磁盘格式化工具。TianoCore EDK2开发环境(编译UEFI程序),本文直接使用了编译后的BootLoader.efi文件。资料链接,主要使用了引导文件Bootloader.efi和kernel文件夹编译后的内核文件kernel.bin。二、准备工作首先使用磁盘管理软件DiskGenius清空U盘扇区里的所有数据,然后选择磁盘->转换
原创
发布博客 2021.01.31 ·
3526 阅读 ·
0 点赞 ·
3 评论 ·
12 收藏

STM32F7 can只能发送不能接收

昨天将师弟的电机底层can驱动代码移植到项目中,发现原本已经调好的can底层代码出现了bug:can只能发不能收了orz。。。此处省略一万字。。。通过二分查找法,最终定位到出现bug的神秘代码如下:#define ENABLE 0x11 #define DISABLE 0x12 直接find in files,好家伙,直接与f7的hal库函数一枚举变量重名typedef enum { DISABLE = 0, ENABLE = !DISABLE} Function
原创
发布博客 2020.12.26 ·
1774 阅读 ·
1 点赞 ·
2 评论 ·
1 收藏

OS 13号#GP异常

运行任务切换的时候,发现如下错误,发现出现了#GP13号异常,段选择子是0,对应了将NULL(0)段选择子载入CS/SS导致#GP异常的原因:根据RIP的值以及反汇编文件发现出现异常的调用函数为__switch_to的最后一句。(省去一些中间程序。。)查看gdt表(物理地址0x10a240处),发现第39位置1,这一位应该是段基地址(16-39位为段基地址),此处发生了异常:默认的gdt表初始化如下:可以看到kernel code和data两者的第39位是都有区别的。..
原创
发布博客 2020.12.15 ·
1373 阅读 ·
1 点赞 ·
1 评论 ·
1 收藏

SYSFUNC_DEF

占个坑
原创
发布博客 2020.12.12 ·
256 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

编译内核时出现对undefined reference to‘XXXX’

在Makefile出错文件的gcc那一行加上-fno-stack-protector选项,如:gcc -mcmodel=large -fno-builtin -fno-stack-protector -m64 -c printk.c
原创
发布博客 2020.12.11 ·
1170 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

IA-32e的地址转换过程

和保护模式相比最大的区别是段基地址强行置零,段地址成为了平坦地址空间。
原创
发布博客 2020.12.11 ·
214 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

保护模式的地址转换过程

原创
发布博客 2020.12.11 ·
175 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

计算机的几种地址

一、物理地址真实存在硬件上的,通过处理器的引脚直接或间接的和外部设备相连。分为IO地址和内存地址二、虚拟地址相对于物理地址的抽象地址。1、逻辑地址段和偏移的组合。格式为Segment:Offset。偏移为称为有效地址,程序中的变量地址即为有效地址。2、线性地址由逻辑地址组合而成:Segment<<4+Offset。...
原创
发布博客 2020.12.10 ·
3621 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

底层知识点

汇编语言格式分为intel和AT&T两种,格式略有不同。objump -b可以将目标程序反汇编成汇编语言。指令后加l表示32位,加q表示64位。c使用关键字asm声明代码是内嵌汇编语句。
原创
发布博客 2020.12.09 ·
116 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

socket api阻塞情况分析

connect:激发三次握手,仅在连接成功或出错时才返回。有四种结果。没收到响应会触发超时错误;收到RST触发硬错误;路由不可达错误;成功。listen:把一个未连接的套接字转换成一个被动套接字,指示内核应接受指向该套接字的连接请求。不存在阻塞。accept:由tcp服务器调用,用于从已完成连接队列头返回下一个已完成队列。如果已完成队列为空,进程被投入睡眠。(默认阻塞,可以强行设置为阻塞)close:把改套接字标记成已关闭,然后立即返回到调用进程,立即返回表明是非阻塞的。这里只是把相应描述符的引用计.
原创
发布博客 2020.09.08 ·
261 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Linux 0.11

switch_to
原创
发布博客 2020.08.31 ·
138 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

一些代码模板

快排很简单,partion把小于数组第一个元素放在左边,大于的放在右边。再通过递归对左右两边的元素做调整,即nlog(n).#include <iostream>#include <map>#include <vector>using namespace std;int Partition(vector<int> &nums, int begin, int end) { if (begin >= end ||
原创
发布博客 2020.08.03 ·
259 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

OJ中不给定输入数量的处理方式

1、计算一系列数的和输入数据有多组, 每行表示一组输入数据。每行不定有n个整数,空格隔开。(1 <= n <= 100)。示例:1 2 34 50 0 0 0 0代码:int main(){ string line; while (getline(cin, line)) { stringstream ss(line); int sum = 0, num = 0; while (ss >> num)
原创
发布博客 2020.08.02 ·
909 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

背包九讲代码

1、01背包。2、完全背包3、多重背包
原创
发布博客 2020.08.02 ·
166 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多