30天自制操作系统第一天学习笔记

暑假学习小日本的那本书:30天自制操作系统

qq交流群:159336168

A:开发环境:我是完全在ubuntu下面进行的学习,实验。

开源的好处不用多说了。各种软件直接sudo apt-get install就行了,不用到处找。

总结完成第一课需要的工具和过程:
首先我们是在ubuntu系统下进行的所有实验,因为ubuntu下面的软件的安装很方便,而且都是开源的软件。

1:要对二进制文件进行编辑,需要hexedit 这个软件,安装命令如下:
sudo apt-get install hexedit

2: 要对生成的软盘镜像进行仿真运行,需要虚拟机,我们用qemu,因为比较小,安装命令
sudo apt-get install qemu-system-x86

3:需要制作一个软盘镜像文件,用到的命令是dd,linux默认自带的工具。需要把我们写的512字节的机器码,写到软盘镜像文件中,用到的工具就cat命令,linux默认自带的工具。

所以我们选择在ubuntu下学习操作系统是因为linux的开源特点,系统是开源,用到的软件工具当然也是开源的。安装也是相对方便,而在windows下,就比较麻烦了。

上面1,2,3就是要用到软件工具,下面是具体的操作过程:
1:touch hello.img
2:hexedit hello.img   然后输入512字节的内容
3:dd 出来一个正常的空的软盘镜像文件os.img,将hello.img cat 进os.img文件中
4:用qemu启动os.img ,就看可以看到hello,world了。

下面是几个主要的命令,最好写一个makefile,
产生一个空的软盘:
dd if=/dev/zero of=os.img bs=512 count=2880

把我们手工编写的512字节的机器码文件,cat 到os.img中支
cat hello.img >os.img

用qemu启动os.img
qemu -drive file=os.img,if=floppy

这样就可以看到hello,world了 enjoy!
注意:因为是机器码编写,所以512字节的内容要参数作者的第一课hello0.img这个文件,用hexedit打开这个文件,照着把前512字节的内容输入到我们的hello.img文件中就可以了。


群共享的百度云中有更多的学习笔记和学习代码,欢迎加入qq群讨论!qq交流群:122358078


学习笔记:

这一部分的代码就是加工润色部分的,课本24到25面的代码。
其实这一部分和assemble文件夹中的内部没有什么区别。
只是更有组织了。

但是这个程序的组织更是体现了了数据是有结构的这一特点,
而且最重要的是,这个结构告诉了我们,512字的内容里面,都是数字,
但是一部分是指令,一部分是数据,指令是用来运行的,数据是信息,是给指令
以某种方式解释的。怎么解释看指令是如何操作数据。

代码:
第一部分是告诉程序,这个软盘用了什文件系统格式,是fat12的文件系统格式,就遵守这个文件系统格式的规定,知道了这个软盘是怎么放文件的,我们就可以利用这个规定,的到软盘上面放了什么文件。找到软盘上文件的过程,就是文件系统实现的过程。当然这是后面的事情,现在还不太了解到文件系统。只是当做给自己的复习。

第二部分才是真正的指令部分,虽然也是用bd 0xb8..这种定义字节的汇编格式,但是这里的数字已经表示的是指令了。指令是用来执行的。
cpu取这部分的指令,译码,执行。

第三部分的内容是就是信息了,是要显示的数据了第二部分的指令就是用来把这一部分的信息送到screen上,显示出来的。

第四部分,没有什么用,目前来说,丢了也不会影响结果




在更高的抽象层次理解 这一部分程序:
第一部分,只是一个表示fat12的文件系统的结构
strutct fat12
{
jmp to code
char name[]="helloipl";
short sector=512;
int   cluster=1;
short fat_start=1;
char  fat_number=2
short root_size=224;
short disk_size=2880;
char  disk_type=0xf0;
short fat_length=9;
short onetrack=18;
short heads=2;
int  partition_num=0;
int  disk_size=2880;
char a=0,b=0,c=0x29 ; fixed
int  fixed=0xffffffff;

char diskname[]="hello-os   ";
char diskformat[]="fat12   "
char resb[18]={0};
}

第二部分的代码,下在则伪代码:
disp(p);//显示指针P的内容到screen.
第三部分更简单:伪代码如下:
char *p="\n\nhello, world\n\0";

上面的这个数据结构,就是代表了fat12的文件格式。

几个新的汇编指令
db :1byte
dw :2bytes
dd :4bytes

db "hellow,world" 说明db可以用来定义字符串。

resb 0x1fe-$  保留到0x1fe,但是0x1fe这个空间没有被用。


boot sector 软盘的第一个扇区,对软盘的读写操作都是惟cluster为单位,
但是1cluster=1sector,软盘总共有2880个sectors

ipl:initial program loader   8个字节。
      :so helloipl

boot:bootstrap,自力更生,完成任务。


从汇编中,抽象出数据结构,函数,字符串指针的 特点。只有在这个角度学习,才会把书本关了,仍然知道这个汇编的结构,可以容易的写出伪代码,
以top-down的思路,细化下去,当然只有对汇编有了更深入的了解才能把
第二部分的条码写出来。


注意:开始没有出现hello world,检查了一下hello.img是不是512字节,结果是的,知道没有掉下一个字节,检查code部分,发现db的时候错了一个字节。改过了就ok了。



内容概要:本文详细探讨了双馈风力发电机(DFIG)在Simulink环境下的建模方法及其在不同风速条件下的电流与电压波形特征。首先介绍了DFIG的基本原理,即定子直接接入电网,转子通过双向变流器连接电网的特点。接着阐述了Simulink模型的具体搭建步骤,包括风力机模型、传动系统模型、DFIG本体模型和变流器模型的建立。文中强调了变流器控制算法的重要性,特别是在应对风速变化时,通过实时调整转子侧的电压和电流,确保电流和电压波形的良好特性。此外,文章还讨论了模型中的关键技术和挑战,如转子电流环控制策略、低电压穿越性能、直流母线电压脉动等问题,并提供了具体的解决方案和技术细节。最终,通过对故障工况的仿真测试,验证了所建模型的有效性和优越性。 适用人群:从事风力发电研究的技术人员、高校相关专业师生、对电力电子控制系统感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解DFIG工作原理、掌握Simulink建模技能的研究人员;旨在帮助读者理解DFIG在不同风速条件下的动态响应机制,为优化风力发电系统的控制策略提供理论依据和技术支持。 其他说明:文章不仅提供了详细的理论解释,还附有大量Matlab/Simulink代码片段,便于读者进行实践操作。同时,针对一些常见问题给出了实用的调试技巧,有助于提高仿真的准确性和可靠性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值