00 – tinyOS 开发环境搭建

00 – tinyOS 开发环境搭建由于我使用的是Ubuntu20.04.4LTS系统,所以,本系列开发环境及代码均在Ubuntu20.04.4LTS上进行,其他系统请自行查询解决,但核心原理应该都一样的。安装Bochs&NasmBochs是一个通用的硬件模拟器,系统内核的调试运行均在这个模拟器上进

大家好,欢迎来到IT知识分享网。

由于我使用的是 Ubuntu 20.04.4 LTS 系统,所以,本系列开发环境及代码均在 Ubuntu 20.04.4 LTS 上进行,其他系统请自行查询解决,但核心原理应该都一样的。

安装 Bochs & Nasm

Bochs 是一个通用的硬件模拟器,系统内核的调试运行均在这个模拟器上进行

sudo apt-get install build-essential xorg-dev bison g++ bochs-x -y

sudo apt-get install nasm

要是以上安装过程中有问题,可以直接去官网下载源码包编译安装。在安装过程中可能会遇到一些第三方依赖的库不全的问题,在这里不细说了,网上也有一些教程可以参考。

制作虚拟磁盘

Bochs 自带了一个命令行工具 bximage,可用来制作磁盘文件。

bximage -mode=create -hd=10M -q tinyOS.img

也可通过图形界面方式进行创建

运行 Bochs

bochs需要配置文件描述硬件信息,配置文件的命名是任意的,bochs默认的配置文件名为bochsrc.txt,如下:

# 虚拟机内存大小,单位为 MB
megs: 32

# # 对应真实机器的BIOS和VGA BIOS
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

boot: disk 
log: bochsout.log

mouse: enabled=0
#keyboard: keymap=/usr/local/share/bochs/keymaps/sdl-pc-us.map

ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="tinyOS.img", mode=flat

clock: sync=realtime
cpu: ips=1000000

#gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0

运行bochs:

bochs -f bochsrc.txt

编写Makefile

对于 Makefile的编写,就请参考左耳朵耗子写的 《跟我一起写Makefile》

对于上述零散的操作,集中到如下Makefile中:

SRC_DIR=src
BIN_DIR=bin
USER_DIR=user

all: image

prepare: ${SRC_DIR}/*
	mkdir -p $(BIN_DIR)

image: prepare mbr
	rm -rf tinyOS.img && bximage -mode=create -hd=10M -q tinyOS.img
	dd if=$(BIN_DIR)/mbr of=tinyOS.img bs=512 count=1 conv=notrunc

mbr: $(SRC_DIR)/boot/mbr.asm
	nasm -o $(BIN_DIR)/mbr $<

clean:
	rm -rf ${BIN_DIR} tinyOS.img bochsout.log 


可通过以下 shell 脚本方便运行:

make && bochs -f bochsrc.txt

编写MBR

;----BIOS把启动区加载到内存的该位置,所以需设置地址偏移量
section mbr vstart=0x7c00

;----卷屏中断,目的是清屏
mov ax,0x0600
mov bx,0x0700
mov cx,0
mov dx,0x184f
int 0x10	; 此处调用了 BIOS 的中断把 bochs模拟器 输出信息清空

;----直接往显存中写数据,后续可以调用中断抽离出方法来专门输出
mov ax,0xb800
mov gs,ax
mov byte [gs:0x00],'M'
mov byte [gs:0x02],'B'
mov byte [gs:0x04],'R'

;----512字节的最后两字节是启动区标识
times 510-($-$$) db 0
db 0x55,0xaa

在 Makefile所在目录下,执行:

make && bochs -f bochsrc.txt

运行如下:
00 - tinyOS 开发环境搭建

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/34493.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信