win7下编写调试自己的OS

win7下编写调试自己的OS

一、工具准备

1.到官网下载——bochs for windows(我下载的bochs-2.6.2.exe)
2.到官网下载——nasm(我下载的nasm-2.11.03-installer.exe)
3.到官网下载——WinImage(我在csdn上下载的ha_WinImage-v8.1.rar)
4.到官网下载——Cygwin(忘了哪一版本了)

二、安装
把以上工具都在自己电脑上安装好

三、运行
1.用编辑器编写一个汇编引导文件boot.asm,用nasm -o boot.bin boot.asm 获得boot.bin文件
2.用WinImage产生一个虚拟软盘,如wb.img
3.用Cygwin,输入命令:dd if=boot.bin of=wb.img bs=512 count=1 conv=notrunc 把引导程序boot.bin复制到虚拟软盘wb.img里

(记着:不要在WinImage里直接把boot.bin文件拖进wb.img里!这样的话无法在bochs里识别出引导程序)------------------

---------------发现,这样制作含有引导扇区的软盘是不对的,cygwin功能不足应该在linux-ubuntu环境下制作。先用../bochs-2.6.2/bximage.exe制作出一个.img,然后.img和boot.bin发到Ubuntu里,在终端输入(在有wb.img的目录下):
/sbin/losetup /dev/loop0 wb.img
/sbin/mkfs.vfat /dev/loop0
这里使用回馈设备loop0使设备和fdt.img关联
然后用mkfs.vfat格式化wb.img(vfat代表fat32格式)
再挂载wb.img
mount /dev/loop0 /mnt/temp
这里,我们就可以向/mnt/temp写入文件了,它的效果就相当于向wb.img写入文件,但这个时候的wb.img是不能被boot.bin(自己写的引导程序)引导的
然后通过write程序,把引导程序写入wb.img第一扇区
write.c
#include  /* unistd.h 需要这个文件 */
#include     /* 包含有read和write函数 */
#include
int main()
{
  char boot_buf[512];
   int floppy_desc, file_desc;
  file_desc = open("./boot.bin", O_RDONLY);          ;boot.bin是我自己写的一个引导程序
  read(file_desc, boot_buf, 510);
  close(file_desc);
  boot_buf[510] = 0x55;
  boot_buf[511] = 0xaa;
  floppy_desc = open("/dev/loop0", O_RDWR);      ;注意,这里是设备/dev/loop0,因为我们用loop0与fdt.img相关联
  lseek(floppy_desc, 0, SEEK_CUR);
  write(floppy_desc, boot_buf, 512);
  close(floppy_desc);
}
编译write.c
gcc write.c -o write
运行write
./write
好了,现在wb.img是一个可引导软盘映像文件了,若要加入文件,则把文件复制到/mnt/temp就可以了

4.分析发现bochs的运行是通过.\Bochs-2.6.2\dlxlinux\run.bat的,而run.bat里就两句话:
cd "E:\Bochs-2.6.2\dlxlinux"
..\bochs -q -f bochsrc.bxrc

可以发现,bochs的配置文件都在同文件夹下的bochsrc.bxrc里,打开bochsrc.bxrc发现果然是配置文件,其内容如下示:
###############################################################
# bochsrc.txt file for DLX Linux disk image.
###############################################################

# how much memory the emulated machine will have
megs: 32

# filename of ROM images
romimage: file=../BIOS-bochs-latest
vgaromimage: file=../VGABIOS-lgpl-latest

# what disk images will be used
floppya: 1_44=floppya.img, status=inserted
floppyb: 1_44=floppyb.img, status=inserted

# hard disk
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17

# choose the boot disk.
boot: c

# default config interface is textconfig.
#config_interface: textconfig
#config_interface: wx

#display_library: x
# other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga

# where do we send log messages?
log: bochsout.txt

# disable the mouse, since DLX is text only
mouse: enabled=0

# enable key mapping, using US layout as default.
#
# NOTE: In Bochs 1.4, keyboard mapping is only 100% implemented on X windows.
# However, the key mapping tables are used in the paste function, so
# in the DLX Linux example I'm enabling keyboard mapping so that paste
# will work.  Cut&Paste is currently implemented on win32 and X windows only.

#keyboard: keymap=$BXSHARE/keymaps/x11-pc-us.map
#keyboard: keymap=$BXSHARE/keymaps/x11-pc-fr.map
#keyboard: keymap=$BXSHARE/keymaps/x11-pc-de.map
#keyboard: keymap=$BXSHARE/keymaps/x11-pc-es.map

其中“#”开头的行都是注释行,内容看起来虽然不少,但是除去以“#”开头的注释以外,实际起作用的内容并不多,而且凭借字面意思,还是比较容易理解的。

因此,为了运行我们自己的wb.img里的引导程序boot.bin,我们可以在.\Bochs-2.6.2\下新建一个目录为mylinux\,然后把.\Bochs-2.6.2\dlxlinux\下面的文件
全部复制过来,再把我们之前已经做好的wb.img复制到这里。
然后,在修改配置文件bochsrc.bxrc,相应行改成
floppya: 1_44=wb.img, status=inserted
boot: a

然后,在简单滴修改一下run.bat,改为
cd "E:\Bochs-2.6.2\mylinux"
..\bochs -q -f bochsrc.bxrc
即可。

在./mylinux/文件夹下双击run.bat即可看到自己OS的运行了!

从此,我们就可以在win7下快乐地利用上面的工具来编写试验我们自己的OS了,哈哈哈
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
代码静态分析工具PC-LINT安装配置 PC-Lint是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。 C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写的隐患。PCLint识别并报告C语言中的编程陷阱和格式缺陷的发生。它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码,等等。软件除错是软件项目开发成本和延误的主要因素。PClint能够帮你在程序动态测试之前发现编码错误。这样消除错误的成本更低。 使用PC-Lint在代码走读和单元测试之前进行检查,可以提前发现程序隐藏错误,提高代码质量,节省测试时间。并提供编码规则检查,规范软件人员的编码行为。 由于PC-LINT对于一般程序员来说可能比较陌生,有好多人安装了也不知道怎样配置和使用。 下面我就根据自己的安装和配置心得对PC-Lint的安装、配置及使用进行下详细说明.本人主要介绍了将PC-Lint集成到VC++6.0和SourceInsight的方法和步骤。 (一)Windows下C/C++开发工具中,VC6使用较为普遍,因此这里先讲下VC6.0环境中集成pclint的步骤. 首先, 当然要下载软件,正版软件要200多$呢,买不起!所以只好网上找免费的拉。从http://www.61ic.com/down/othe/pclint.rar处可以下载到一个8.0版本的pclint. 1.将pclint.rar解压至c:\, 这样lint文件就位与c:\pclint(安装目录)下了。 2.将c:\pclint\lnt 下的3个文件lib-w32.lnt,env-vc6.lnt,co-msc60.lnt拷贝至c:\pclint下, 再在安装目录下创建std.lnt和options.lnt两个文件,其中std.lnt的内容如下 // contents of std.lnt c:\pclint\co-msc60.lnt c:\pclint\lib-w32.lnt c:\pclint\options.lnt -si4 -sp4 -i"D:\Program Files;D:\Program Files\Microsoft Visual Studio\VC98\Include" //end 其中-i后面的路径名为VC的安装路径和VC Include 文件路径,根据自己的修改便可。 options.lnt 内容可为空,为定制内容,以后需要时再添加。 准备工作做完了,下一步就是要将pclint集成到VC6中去,先配置lint使之能对单个C或C++文件进行检查。 1.打开VC6,tools--->customize-->tools 新建一个名为pclint的项,在下面填入 command: C:\pclint\lint-nt.exe arguments: -u c:\pclint\std.lnt c:\pclint\env-vc6.lnt "$(FilePath)" Use Output Window 打上勾 close 完成。 这个在你VC窗口tools菜单下应该多了一个pclint选项,可以用它来运行lint程序,对你的c/c++代码进行静态检查了。 现在就可以用个小程序测试一下pclint了 //test1.cpp #include class X { int *p; public: X() { p = new int[20]; } void init() { memset( p, 20, 'a' ); } ~X() { delete p; } }; 编译这个文件,看下你的编译器给你多少警告,再运行下lint, 可以自己对比一下。 我的机器上,VC产生0 errors 0 warnings, 而lint程序产生了如下8条警告信息,有些还是很有用处的提示,这里就不一一分析了. test.cpp(12): error 783: (Info -- Line does not end with new-line) test.cpp(7): error 1732: (Info -- new in constructor for class 'X' which has no assignment operator) test.cpp(7): error 1733: (Info -- new in constructor for class 'X' which has no copy constru
Python 基础教程 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议. 现在开始学习 Python! 谁适合阅读本教程? 本教程适合想从零开始学习Python编程语言的开发人员。当然本教程也会对一些模块进 行深入,让你更好的了解Python的应用。 学习本教程前你需要了解 在继续本教程之前,你应该了解一些基本的计算机编程术语.如果你学习过PHP,ASP等编程 语言,将有助于你更快的了解Python编程。 执行Python程序 对于大多数程序语言,第一个入门编程代码便是"Hello World!",以下代码为使用Python输出"Hello World!": 实例(Python 2.0+) #!/usr/bin/python print "Hello, World!"; 运行实例 » Python 3.0+版本已经把print作为一个内置函数,正确输出"Hello World!"代码如下: 实例(Python 3.0+) #!/usr/bin/python print("Hello, World!"); Python 简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号 ,它具有比其他语言更有特色语法结构。 Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。 Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。 Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处 理到 WWW 浏览器再到游戏. Python 发展历史 Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的. Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol- 68、SmallTalk、Unix shell 和其他的脚本语言等等。 像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。 现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展. Python 特点 1。易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起 来更加简单。 2.易于阅读:Python代码定义的更清晰。 3.易于维护:Python的成功在于它的源代码是相当容易维护的。 4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windo ws和Macintosh兼容很好。 5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测 试和调试代码片断。 6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平 台。 7。可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法 ,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。 8.数据库:Python提供所有主要的商业数据库的接口。 9。GUI编程:Python支持GUI可以创建和移植到许多系统调用. 10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。 Python 环境搭建 本章节我们将向大家介绍如何在本地搭建Python开发环境。 Python可应用于多平台包括 Linux 和 Mac OS X. 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。) Win 9x/NT/2000 Macintosh (Intel, PPC, 68K) OS/2 DOS (多个DOS版本) PalmOS Nokia 移动手机 Windows CE Acorn/RISC OS BeOS Amiga VMS/OpenVMS

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值