。。。。发现图片上传不了,有问题大家留言吧
自己是学嵌入式的,学的也不是很好,说白了,就是一些例程玩了下,然后一般的小问题能够自己解决吧。
之前在学ESP8266的知识,发现里面有个嵌入式实时系统,又想起我身边好像有很多这玩意,例如以前51入门的时候有个51TINY、STM32接触过UCOS、后面接触过UBUNTU/LINUX之类的。
突然冒出一个想法,是不是自己也能做操作系统,一百度,果然有这方面的资料,于是很开心的自己做起来了;
下面是我自己的整理的今天的学习过程,给自己做个备忘录:(纯小白)
1.使用汇编做个简单的hello boot;
2.使用nasm编译汇编文件;
3.生成IMG镜像文件;
4.使用VirtualBox运行镜像文件;
5.安装bochs
6.在bochs上面调试boot文件;
1.使用汇编做个简单的hello boot;
我用的代码书写软件是notepad,反正是写个代码,随便了啦;
首先创建我的文件
写入代码,反正我也看不明白,管他呢
后面慢慢学,先抄一份
org 07c00h ; 告诉编译器程序加载到7c00处
mov ax, cs
mov ds, ax
mov es, ax
call DispStr ; 调用显示字符串例程
jmp $ ; 无限循环
DispStr:
mov ax, BootMessage
mov bp, ax ; ES:BP = 串地址
mov cx, 16 ; CX = 串长度
mov ax, 01301h ; AH = 13, AL = 01h
mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
mov dl, 0
int 10h ; 10h 号中断
ret
BootMessage: db "Hello, JUN!"
times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55 ; 结束标志
保存就好了;
2.使用nasm编译汇编文件;
这里有点像linux的感觉,命令行的形式
进入目录生成bin文件
3.生成IMG镜像文件;
隐约记得学树莓派的时候好像有个这玩意,不过不像。,估计是我记错了
成功了;
4.使用VirtualBox运行镜像文件;
先是把文件和虚拟机连接起来
然后打开,可以看到我代码里面写的字符串
没毛病
5.安装bochs
为什么我单独要说这个的安装?没什么特殊的,只是因为下这个软件我中毒了。。。。。。
反正写了,多说一句,本来我想着,本来我就有个虚拟机,为啥要多装这个玩意?后来晓得这个是可以做调试用的,而之前的虚拟机不行,好吧,原谅它让我中毒这件事了,
6.在bochs上面调试boot文件;
这里我找了半天,我发现大神们喜欢用LINUX,但是我电脑比较渣,跑不了,就装在WINDOWS上面,然后启动成了我的问题
不过好歹是找到了解决方案
###############################################################
# bochsrc.bxrc file for OS
###############################################################
# how much memory the emulated machine will have
megs: 32
# filename of ROM images
# BIOS已经修改,地址可以不加,可以根据文件大小进行推断,如里加地址要与文件大小相匹配
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
# what disk images will be used
# 配置镜像名
floppya: 1_44=my_first.IMG, status=inserted
# choose the boot disk.
boot: a
# where do we send log messages?
log: bochsout.txt
# disable the mouse, since Finix is text only
mouse: enabled=0
可能是版本问题吧,没网上那么多的事,就是在IMG所在目录下新建一个配置文件bochsrc.bxrc
然后代码里面把IMG的名字改一下就好了
运行看效果
没毛病,就是字符覆盖了,没啥事
准备调试
到软件的安装目录找到这个exe
我做成了快捷方式。方便一点,直接点开,这就是调试用的东西
选择
然后运行
出来的界面是
左边是控制台,右边是图形界面
根据网上的资料,来个断点
看到diamante运行了
单步调试到出现我的字符串
最后传一个命令