- 博客(18)
- 收藏
- 关注
原创 uCOS-II在STM32F103ZET6上的移植(二)
上一篇对uCOS-II库进行解析。移植之后,应该怎么使用这些库函数呢?这一篇解析如何使用库函数,实现操作系统基本功能。
2024-04-14 00:56:06
508
1
原创 ARM Cortex-M3内核
Cortex-M3 是一个 32 位处理器内核,可寻址空间为2的32次方个字节,即4,294,967,296个字节,即4GB。
2024-03-27 15:31:11
1449
原创 30天自制操作系统(第15天)
同一时刻,与原则上系统只能运行一行代码。实际的操作系统中,多任务极其常见,这些任务之间是可以跳转的。如果相互跳转的频率很快,人眼看起来就像是在同时运行一样。
2024-03-22 15:48:24
468
1
原创 30天自制操作系统(第12、13天)
定时器每隔一段时间发送一个中断信号给CPU,便于CPU计量时间。C语言链表是一种数据结构,用于存储和组织数据。链表由一系列节点组成,每个节点包含一个数据项和一个指向下一个节点的指针。与数组不同,链表的节点在内存中可以不连续存储,通过指针连接起来。
2024-03-21 15:49:49
332
1
原创 30天自制操作系统(第十一天)
所谓高速计数器,其实就是定义一个变量counter,在系统的大循环中无条件快速累加,再把这个counter的值打印到我们创建的窗口中。for (;;count++;这样直接一直打印和累加的写法不高明,作者做了两次优化。
2024-03-20 15:12:53
294
1
原创 30天自制操作系统(第十天)
buf:这是一个指针,指向图层上要显示内容bxsize:图层的x大小bysize:图层的y大小(bxsize*bysize就是图层的整体大小)vx0:图层在背景画面的相对位置xvy0:图层在背景画面的相对位置y(图层在背景画面上的位置,从此位置开始显示)col_inv:透明色色号height:图层高度flags:存放图层有关的各种设定信息。
2024-03-19 16:11:18
764
原创 30天自制操作系统(第九天)
①、选定一块地址范围②、在地址范围内,依次给地址写入值③、写入值之后,将写入的值反转④、把反转后的值读出,检查反转值是否正确,⑤、把反转后的值再次反转⑥、检查是否恢复原值,以判断地址空间是否可用。
2024-03-09 16:28:37
280
1
原创 30天自制操作系统(第七天)
软件FIFO的实现通常依赖于编程语言提供的数据结构和算法。用C语言实现的代码如下如上代码,FIFO是一个缓冲区,它可以管理数据的读取和写入,并返回FIFO当前状态。可以说,在实时操作系统中,这种结构是极为重要的,试想一下,对于一直有数据的读取和写入的系统,为了防止数据的丢失,一昧的把缓存区做的更大是无济于事的,因为数据一直在被写入和读取,随着时间的推移仍然会发生溢出,并且数据的管理变得复杂。使用FIFO之后,完美的解决了这些问题,FIFO广泛的应用在各种通信过程。如上代码,PUSH将数据压入栈顶
2024-03-04 17:18:26
268
原创 30天自制操作系统(第六天)
硬件FIFO的工作原理如下:输入数据通过寄存器逐个存储到FIFO的入队列中,计数器记录存储在FIFO中的数据数量。当输出模块准备好接收数据时,控制逻辑电路将数据从FIFO的出队列中取出,并传递给输出模块。软件FIFO常用于多线程编程、数据缓冲、任务调度、事件处理等场景,提高系统的数据处理效率和实时性。最常用的是FIFO数据缓冲器(先进先出),FIFO是一种数据存储结构,数据按照先进先出的顺序进入和离开缓冲器。与硬件FIFO不同,软件FIFO是通过编程实现的,不依赖于特殊的硬件电路。
2024-01-21 15:03:28
459
1
原创 30天自制操作系统(第五天)
所以,用GDTR寄存器储存了GDT表的起始地址、最大元素上限,使用时,可以以此查询想获取的段信息。在VRAM上创建一个16*16(像素)的区域,如果数组元素为o打印为白色,数组元素为*打印为黑色,这样就描画出了箭头。在VRAM上创建一个8*16(像素)的区域,如果数据位为1,用黑色打印,数据位为0,白色打印。GDT表是一段总大小64kb,每个元素为8字节的内存数据段。GDTR储存的是GDT表的起始地址,以及GTD表的最大元素上限。如上图所示,首先需要明确的是GDTR和GDT表的区别和联系。
2024-01-20 20:19:21
345
原创 30天自制操作系统(第四天)
上述代码是定义了16种颜色(16种颜色足够了)。二维数组table_rgb[16 * 3]中,16代表的是16种颜色,3是每种颜色的三个元素值(三个元素值分别对应RGB数值)上述代码是c调用汇编语言实现了对调色板的访问。把定义的16种颜色写入调色板。VRAM值从0~15分别对应第一章节里设置的16种颜色。VRAM地址和画面的对应关系如下图。我们这里使用的是0x13。
2024-01-14 16:02:27
380
1
原创 30天自制操作系统(第三天)
1、C语言是32位模式,不能用C调用BIOS(16位),所以想在汇编中调用BIOS设置画面模式,并保存画面模式信息到内存,以便在C中读内存获取这些信息。以前就看过汇编代码函数名前面带_,作者告诉我们,这是为了跟c语言之间链接,还要注意汇编代码函数要用GLOBAL全局声明。其实也就是传统的,预处理-->编译-->汇编-->链接,作者这套流程更详细!到这里汇编代码基本结束了,真的是松了一口气,后面C代码就很轻松很多。2、实现从汇编跳转到C语言的Main函数的功能。
2023-10-28 22:17:50
96
1
原创 30天自制操作系统(第二天)
有了下面的.bat,就可以实现使用!cons_nt.bat命令窗口调用makefile中定义的命令。如果make run提示copy失败,可以把copy改为cp,亲测有效。这句话是在给AX赋值0,完成AX寄存器的初始化,下面是寄存器列表。这句话的意思就是告诉编译器,程序从地址0x7c00开始运行。这句话的意思就是告诉编译器,程序跳转到entry所在的地址。仅有上述mafile文件还不够,需要借助.bat来调用。直接输入make run,可以直接编译运行。
2023-10-28 14:37:42
119
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人