- 浏览: 276583 次
- 性别:
- 来自: 哈尔滨
-
文章分类
- 全部博客 (146)
- 算法 DP (2)
- 杂谈 (9)
- Linux 软件 (16)
- 解题报告 (5)
- debian系统学习 (2)
- Linux--Ubuntu篇 (34)
- PHP (1)
- C++ (10)
- photoshop学习 (1)
- Crazy English (3)
- 网站开发 (10)
- 软件安装 (6)
- 编程经验 (4)
- acm (3)
- 脚本 (3)
- Linux编程 (6)
- vim (1)
- 项目经验 (2)
- Tex (2)
- 读书笔记 (6)
- Windows下软件 (4)
- 笔试面试 (2)
- Android (2)
- 设计模式 (1)
- 数据处理 (1)
- 小算法 (1)
- 那点问题 (1)
- shell (2)
- NLP (2)
- java (4)
- 小程序 (0)
最新评论
-
zi413293813:
不错,很有用!3Q
eclipse 软件的背景颜色、字体设置 -
twlkyao:
不错,身体最重要。
eclipse 软件的背景颜色、字体设置 -
cry615:
不错,赞一个!
eclipse 软件的背景颜色、字体设置 -
showzh:
suse忘记root密码修改方法
suse忘记root密码修改方法 -
dc0453:
包子,把你最近的心得都贴出来啊
网络编程API
昨天晚上有空下载到了《自己动手写操作系统》--于渊,这本书。感觉他用的语言和比喻很好,所以一口气读了两章,把hello os读完了,我手也痒痒力,自己也搭一个平台,试试吧。在大三的时候上操作系统课,就像做一做操作系统的实验,但是由于自己的懒惰和一些列的借口,总之没有能做成,现在补回来吧。
在ubuntu10.10正式发布还有5天的时候,我将我的10.04升级到了10.10,也没有什么特殊的感受。下面进入正题吧:
1.安装bochs
bochs是一款开源软件,由于其强大的可移植性,在各种机器和操作系统下都可以安装。这里对于它的历史就不多做介绍了。说命令吧。
sudo apt-get install bochs
然后apt包管理会自动解决依赖,下载该下的,安装该装的包。ok,安装完成。
我们该测试好不好使了。
2.编写hello os 汇编程序
org 07c00h ;告诉编译器程序加载到7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ;调用显示字符串例程 jmp $ ;无限循环 DispStr: mov ax, BootMessage mov bp, ax mov cx, 16 mov ax, 01301h mov bx, 000ch mov dl, 0 int 10h ;10h 中断 ret BootMessage: db "Hello OS world!" times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码恰好>为512字节 dw 0xaa55 ;结束标志
将其保存为boot.asm(汇编代码啊,第一次正式编译,虽然以前在xp下写过更笨的,有点小兴奋)
编译汇编代码:
nasm boot.asm -o boot.bin //怎么样,感觉跟gcc的用法差不多啊,:-)
没有错误的话就好了,有了的话就仔细调一下,注意汇编注释用semicolon(分号而不是冒号),我在这还错了。
3.让我们的程序泡在bochs上
首先我们要想到,bochs是一个虚拟机,它给我们虚拟出了一个机器硬件环境,下面怎么运行就看我们的指令了。对于我们实际的机器,如果让它运行,要么用软盘,要么用光盘,要么用硬盘,你总得挑一个可以让它启动的,这里我们把上面些的hello os程序做成一个img文件,就是一个软盘格式的文件,让bochs挂载上这个虚拟软盘,我们就可以让bochs运行了。
将上面生成的bin文件转换成img文件的方法:
dd命令:
dd if=boot.bin of=boot.img bs=512 count=1 conv=notrunc
其中要注意的是,注意inputfile的路径可以是相对的也可以是绝对的。这个命令在鸟哥的私房菜中有点印象,现在都忘了,网上搜的。
好了,下面就是挂载这个文件,这个虚拟软盘了。
所以我们接下来要做的就是告诉bochs:嘿,我有一个软盘,你给我从这里启动,运行我写的程序。
我们怎么告诉它呢,当然是配置文件了。
对于bochs,有一个默认的配置文件在:/etc/bochs-init/bochsrc
网上的前辈们都说最好对于每个特定的应用,自己单独创建一个bochsrc配置文件,反正又不费时。好,我们写一下适合我们的bochsrc文件。
megs: 32 romimage:file=$BXSHARE/BIOS-bochs-latest vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest floppya: 1_44=boot.img, status=inserted boot: floppy
bochsrc文件里的格式有严格的要求,所以照着原始的那个照猫画虎就可以搞定了。我相信里面的东西不用多解释了吧。
megs: 32说明了最大允许内存
romimage:bios的二进制文件,软件带的,不用管
vgaromimage:vga显示的二进制文件,软件自带的,不用管
floppya: 就是虚拟出的软驱a,后面说了软驱的型号:1_44即1.44M的那种,后面就是软驱文件的位置和名称了,状态,已经插入。
boot:告诉bochs从哪里启动。还用问吗,我们当然是从软驱启动了。
ok,一切顺利的话,我们就可以运行了:
bochs -f bochsrc
我的是看到了下面的漂亮画面:
有一点需要注意就是关于一个环境变量的问题:BXSHARE,我的好像没有自己加上去的,但是我没有让它生效,它也好使了,我没有用source命令,也没有重启,未知中,不管了,好使就行。
你是不是也看到自己的成果了呢?
好,晚上,继续努力!!!
附件中有我的hello os文件夹,包括hello os的源码和bochsrc的配置文件
发表评论
-
拥有rw权限的文件在vim中编辑时提示W10:只读文件,无法修改
2014-09-24 18:49 973解决: :set modifiable :set w ... -
linux系统更新正在运行进程的可执行文件需要注意的text file busy的原因及解决方法【转】
2014-07-23 11:04 2158转自:http://www.jb51.net/LINUXji ... -
vim 技巧
2014-04-10 16:35 644vim 里的非贪婪匹配: 使用 & ... -
linux 编程
2014-04-09 10:19 5741. sleep #include <iostrea ... -
signal
2013-11-17 16:23 5791. linux 下各信号的解释: man 7 signa ... -
linux 显示中文文件乱码
2013-11-11 20:24 689export LANG=zh_CN.UTF-8 添加到 ... -
linux下显示其他时区时间
2013-09-03 13:50 2055时区的系统常见定义: unix系统时区设置: 每个用户可 ... -
screen
2013-03-01 14:57 816screen 是一个主要应用于一个终端连接多个服务器的情形, ... -
java生成的md5和linux下用md5sum生成的md5摘要不一致问题
2012-10-23 17:05 2920参照这个: http://wolfdream.itey ... -
配置本地或者局域网的ubuntu源
2012-10-21 12:36 9276简单记录一下原理:将原来需要在网上更新的包文件下载到本地的一个 ... -
Ubuntu 10.04 Intel酷睿i5 2300显卡解决方法
2012-07-23 17:07 11001. 添加显卡驱动源: sudo add-apt-rep ... -
Cent OS 6.2 LVS+keepalived 搭建
2012-03-18 20:18 1850OS: Cent OS 6.2 (1) 下载、安装 ... -
initrd.img 解压分析
2012-03-17 15:15 3071vmlinuz 是一个为内核映像, vmlinuz里面有gz ... -
centos 6.2 安装内核源码
2012-03-16 18:58 3551centos 6.2 废话不多说,说说过程: ... -
ubuntu下看xp文件名乱码
2011-11-22 12:15 1747利用软件 convmv 可以 $sudo apt-g ... -
Xmanager 连接 ubuntu10.10
2011-11-02 16:05 2694XManager 访问 ubuntu ... -
ubuntu 下 omnet++ + inet + oversim 安装
2011-10-27 22:47 3787安装 omnet++ 从官网上下载omnet++, h ... -
Linux下软件介绍
2011-07-29 19:30 877最近用了几个linux软件记录下来,以后陆续使用到的好用的软件 ... -
linux 分区及引导笔记
2011-07-18 13:50 938开机流程: 1. BIOS 加电,运行bios自检程序,识别 ... -
libpcap 安装和测试
2011-07-17 11:06 6035libpcap 安装和测试 I 首先安装 libpc ...
相关推荐
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf
内容概要:本文详细介绍了基于瞬时无功功率理论的三电平有源电力滤波器(APF)仿真研究。主要内容涵盖并联型APF的工作原理、三相三电平NPC结构、谐波检测方法(ipiq)、双闭环控制策略(电压外环+电流内环PI控制)以及SVPWM矢量调制技术。仿真结果显示,在APF投入前后,电网电流THD从21.9%降至3.77%,显著提高了电能质量。 适用人群:从事电力系统研究、电力电子技术开发的专业人士,尤其是对有源电力滤波器及其仿真感兴趣的工程师和技术人员。 使用场景及目标:适用于需要解决电力系统中谐波污染和无功补偿问题的研究项目。目标是通过仿真验证APF的有效性和可行性,优化电力系统的电能质量。 其他说明:文中提到的仿真模型涉及多个关键模块,如三相交流电压模块、非线性负载、信号采集模块、LC滤波器模块等,这些模块的设计和协同工作对于实现良好的谐波抑制和无功补偿至关重要。
内容概要:本文探讨了在工业自动化和物联网交汇背景下,构建OPC DA转MQTT网关软件的需求及其具体实现方法。文中详细介绍了如何利用Python编程语言及相关库(如OpenOPC用于读取OPC DA数据,paho-mqtt用于MQTT消息传递),完成从OPC DA数据解析、格式转换到最终通过MQTT协议发布数据的关键步骤。此外,还讨论了针对不良网络环境下数据传输优化措施以及后续测试验证过程。 适合人群:从事工业自动化系统集成、物联网项目开发的技术人员,特别是那些希望提升跨协议数据交换能力的专业人士。 使用场景及目标:适用于需要在不同通信协议间建立高效稳定的数据通道的应用场合,比如制造业生产线监控、远程设备管理等。主要目的是克服传统有线网络限制,实现在不稳定无线网络条件下仍能保持良好性能的数据传输。 其他说明:文中提供了具体的代码片段帮助理解整个流程,并强调了实际部署过程中可能遇到的问题及解决方案。
基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档