- 博客(19)
- 收藏
- 关注
原创 硬核项目!从0手写一个RISC-V模拟器!
RISC-V以其独特的开源指令集架构(ISA),挑战着传统计算机体系结构的边界,为全球的工程师、学者、爱好者提供了一个共同探索、实验和创新的平台。随着越来越多的支持和投资,RISC-V的工具链、库和社区资源变得日益丰富,这为嵌入式开发者提供了广阔的学习和应用平台。但是这些产品在我们看来都有一个比较明显的缺点,那便是配套的资料内容侧重在介绍芯片外设的使用,而忽略了RISC-V内核本身的内容。从嵌入式开发者的角度来看,学习RISC-V不仅是跟上技术潮流的必要步骤,更是打开新的可能性和机遇的关键。
2024-07-26 14:50:39
520
原创 FATFS基本入门教程(3)- FAT文件系统简介
作者注:FATFS应该是一个比较常用的嵌入式文件系统,支持FAT12/FAT16/FAT32/EXFAT格式,很多开发人员都用过。我在这里会写一系列文章来介绍FATFS的基本使用,欢迎感兴趣的同学关注。已发布的内容:(配套资料请见下方的第一篇文章中的介绍)为了深入地理解FATFS的使用,我们必须要对它支持哪些文件系统,以及这些文件系统的工作原理有所理解。这样才能在使用某些FATFS接口时,更好理解其特性,从而更加高效地使用这些接口。
2023-12-04 08:27:38
856
原创 GODOC命令无效,原因是需要手动安装
在看《GO程序设计语言》这本书,按照其中的内容,想看下GO自带的包的文档。书中讲,可以直接输入GoDOC命令来打开一个服务器,从而可以用浏览器访问文档库。输入命令后,系统提示找不到该命令。查了资料后才发现,这个命令在新版的GO中不自动了,需要自己去下载安装。
2023-12-02 12:36:17
437
原创 FATFS基本入门教程(2)-什么是文件系统
作者注:FATFS应该是一个比较常用的嵌入式文件系统,支持FAT12/FAT16/FAT32/EXFAT格式,很多开发人员都用过。我在这里会写一系列文章来介绍FATFS的基本使用,欢迎感兴趣的同学关注。在学习FATFS之前,首先要搞清楚什么是文件系统,理解其中的基本原理、主要概念,然后再学学习如何使用。如果没有这些基础知识的理解,一上来就试图去使用FATFS;那么,在后续的使用过程中,你很有可能会遇到各种各样的问题。而实际上,这些问题往往是由于你对文件系统本身的基本概念和原理不理解导致的。。
2023-12-01 14:16:51
315
1
原创 FATFS基本入门教程(1)-简介
作者注:FATFS应该是一个比较常用的嵌入式文件系统,支持FAT12/FAT16/FAT32/EXFAT格式,很多开发人员都用过。我在这里会写一系列文章来介绍FATFS的基本使用,欢迎感兴趣的同学关注。FATFS(File Allocation Table File System)是一个轻量级的文件系统,广泛用于嵌入式系统和嵌入式设备中。在开发中应该是用得挺多的。不过,目前市面应该没有什么由浅入深地去讲解FATFS的教程。
2023-12-01 13:49:35
421
1
原创 vivado编辑器出现中文乱码的问题及解决方法
初次玩vivado,发现写好的verilog文件在vivado中打开显示乱码。要解决这个问题,需要完成两步操作:一是更改文件的编码为GBK;二是更改显示的字体。以下二者缺一不可,这样既可以在vivado中显示中文,又可以保证在其它文本编辑器中打开时同样也能显示中文。
2023-06-08 08:37:37
6489
2
原创 怎样学写一个操作系统,学写之后能拿到高薪吗?
曾经有同学私发了他的简历让我看,问我怎么样,适不适合报我的操作系统课?然后考虑到离秋招时间很近,我打消了他报我课的想法,而是建议他做自己手上备用的网络项目,优先找个好工作。如果自己已经完成了一个初步的小系统,那么可以试着去看一下更复杂的实现,比如Linux 0.11内核,甚至其它更新的内容。这个我是有亲身经历,在大学时我曾自己在宿舍折腾学习,花费了不少时间和精力,但是学得到的远比老师讲的多。还有一些书和资料也是很不错的,我在开发这个课程时也参考了这些优秀的资料,这里列举一下。还有,正如之前的回答中说所,
2023-06-06 20:32:47
532
原创 网络编程中的大小端
以4字节整型为例,它的二进制表示方式是32位的。当数据存储先存高字节,再存低字节,称为大端字节序(Big-Endian),即在内存中高位字节在前,低位字节在后;当数据存储从低地址向高地址排列时,称为小端字节序(Little-Endian),即低位字节在前,高位字节在后。例如,对于一个多字节数据,比如一个32位整数0x12345678,在内存中存储时,大端序和小端序所采用的存储方式是不同的。大端序指的是将高位字节存储在低地址处,低位字节存储在高地址处,如下图所示。
2023-05-01 11:18:59
411
转载 在操作系统开发中选bochs还是qemu
最近有同学问我:为什么你的《从0写x86 Linux操作系统课程》选择了bochs,而不是qemu?他认为bochs更加好用,很多资料上都写了用该软件。其实我也是经过不断地对比和尝试后,选择使用qemu。
2023-04-07 09:35:33
1910
原创 怎样用一行代码判断系统的大小端?
闲来无事,想着优化一下问题的解决方案。这个问题据说是很常见的面试问题:如何判断当前系统的大小端?最近在设计自己的TCP/IP协议栈,代码完成的差不多了,已经能够跑在嵌入式STM32开发板上。就是这样,一个宏就可以判断出来。没必要用结构体,也没必要用位域。
2023-02-04 15:04:43
190
1
原创 在VScode中添加快捷键执行自定义任务
在出现的json窗口中,添加以下内容。其中key是要按下的快捷键,这里选了F5旁边的F6,更好操作一些。command是要执行的命令,写下图中的固定值即可。args则是想启动的VSCode中的任务,这里是【启动Qemu】,根据实际情况来确定。在这里只能更改已有的按键绑定,这个是我不需要的。因此,点击红框图标,打开json文件进行更高级的配置。这样需要调试操作系统的代码时,只需要按F5键,再按F6键即可一键启动调试,方便课程的学习。也就是说,上面的配置项,只需要更改key和args的值即可。
2022-11-15 20:25:50
1898
1
原创 用200行代码实现x86保护模式下的操作系统(1)
最大的问题就在于我对于相关硬件知识的欠缺。其中就包括对硬件方面的理解,操作系统支持原理的理解、编程语言的熟练度等各方面的问题。而在所有的这些问题中,最基础的往往是对CPU工作模式方面、各种硬件工作原理的理解。此外,一些同学在学习我的《从0学写x86 Linux操作系统》课时,对x86的保护模式以及相关的芯片细节普遍感到不好理解。因此,我设计了这门课程,试图通过非常精练的代码展现x86保护模式下的编程方法,进而方便同学将注意集中到硬件知识本身。上面的文档配套了相关的源码和视频,视频已经发布到了优快云上。
2022-09-08 09:41:32
670
原创 如何设计一个自己的操作系统(1)
到了工作几年后,从事地也只是嵌入式开发方面的工具,写的也只是嵌入式方面的小型操作系统内核,非常简单的一个东西。但是直接看Linux 0.11内核源码分析的书还是比较麻烦的,因为搭建调试环境是一件不容易的事情,相关的工具也是比较老的了,所以一直懒得去搭。因此,接下来的一系列文章中,我会以一个极微缩版的操作系统为基础,介绍编写操作系统中重要的知识点,如CPU的x86保护模式、系统调用等关键性的知识。理解了这些知识之后,就可以操作系统的基本运行原理有基础的了解,为开发自己的操作系统打下基础。...
2022-08-07 21:39:34
2375
原创 超简单!在Keil中指定某个函数或变量存放的地址
在我们开发过程中,有时候会有这样一个需求:希望能够指定某个函数或变量存放的地址。也许你看过一些文章,里面介绍了一大堆内容,甚至于还会介绍分散加载文件的配置。但是绝大多数情况下,为了实现这么一个简单的功能,还要学太多东西,是不是一下就懵了?那么,请继续往下看吧。这篇文章会教你一种非常简单的方法,一看就会。只需要使用__attribute__((section(".ARM
2017-12-15 20:13:19
39031
6
原创 有关const的一个误区
在学习C语言时,无数本教材都告诉我们:用const 类型 标志符; 这种方式是定义一个常量,也就意味着不可以修改。但真的只是这样吗?例如:int main () { const int var = 0x1; var = 2; printf("%d\n", var); return 0;}你可能会说: var是不可修改的。从表面上看,似乎是这样,现在来编译一下,编译器提
2017-12-09 11:49:08
846
原创 uCOS/FreeRTOS任务创建的两种模式
在我们使用uCOS/FreeRTOS编写代码时,首先要面临的一个问题是怎样创建任务并启动整个系统。一般来说,我们会有两种不同的方式。这两种方式不仅适用于uCOS/FreeRTOS,同时也适用于其它RTOS。创建任务的两种方式这两种方式各有优缺点。如果用一幅图来表示的话,见下方。下面将分别说明这两种方式的具体应用方法。方式一:先创建启动任务,启动任务初始化软硬件并创建其它任务这种方式是这样的:在启动启
2017-11-18 11:37:50
1530
原创 RTOS系统延时与普通软延时的特点与区别
我们知道,在RTOS中会提供若干延时函数的API。对于没有仔细了解过RTOS的同学而言,可能会产生这样疑惑:这些API与普通自写的延时函数相比究竟有何优势呢?为什么要额外提供这些API?在这篇文章中,我们来分析下这些API接口的工作原理、特点以及其相比自写的延时函数,究竟有什么优缺点,我们该如何选择。普通延时方式在没有使用RTOS之前,我们可能通过以下方式实现延时或定时。指令软延时在比较简单、各条指
2017-11-18 11:36:09
4012
原创 自己动手从0到1写嵌入式操作系统-李述铜-专题视频课程
这不是rtos源码分析的课程,而是为初级的同学设计,从基础原理讲师,一步步不断迭代设计rtos的课程!用不到【2000行代码,汇编代码仅18行】(不含注释)实现一个精巧的可以运行在ARM Cortex-M内核芯片上的RTOS!该RTOS功能与ucos类似,具体实现不同。学习之后,再去学习ucos之类的系统将没有什么问题。...
2017-04-06 13:21:56
4452
1
原创 深入掌握ARM调试工具-原理篇-李述铜-专题视频课程
本课程深入介绍了ARM调试器工作原理相关的内容。让你能够掌握基本通用的工作原理,但又不至于陷入与具体内核调试、IDE内部相关的细节当中。之后,我们将学习一些常见调试问题的解决方法与技巧。课程的老师从事过数年调试器开发经验,解决过上百位一线ARM开发工程师的调试问题。通过去除不相干的细节,抽取出核心的知识点凝聚成些课时。...
2017-04-06 13:21:36
702
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人