- 博客(19)
- 收藏
- 关注
原创 笔记本电源指示灯维修及散热硅脂替换
手头有台华硕的笔记本,还是在2011年购买的,去年发现电源旁边的指示灯不亮了,同时风扇散热不及时,今天正好有时间维修下。准备的工具如下:电烙铁,万用表,散热硅脂,替换的led灯,及相应的拆卸工具。先拆卸笔记本,拆卸比较麻烦,老本子所有的螺钉都要拆卸,拆卸后主要的零件如下(屏幕,底盘在另外);损坏的LED灯在这个电源板上(LED5606),电源开关旁边的就是,已经不亮了。用万用表测试电阻,内阻已经高...
2018-06-10 12:42:12
1220
1
原创 D_D系统构建-loader保护模式修改
前面在loader进入保护模式时,使用了指令修改的方法,主要原因是虚拟地址从0开始,而跳转的地址是相对段内而言的,通过修改指令的方式来加上基地址。这种方法过于粗暴,这里重新修改了进入保护模式的方法,避免使用修改指令的方法(本文地址: http://pan.baidu.com/s/1i53Tm5Z)。loader.asm%include "base_phy.inc" secti
2017-10-08 22:38:17
393
原创 D_D系统构建-篇外话
好长时间没有更新了,最近二个月天天加班搞项目,头疼。。。决定 调整下计划了,后面会把整个都写完再一次性传上来。包括中断,进程 调度,程序动态加载运行功能。希望能坚持 下去。
2017-09-20 22:55:34
289
原创 L79系列三端稳压管管脚连线说明
最近对电子感兴趣,从某宝上买了一大包电子元件,其中有一个三端稳压管L7905,手头正好 有一个12v的直流电源,就用这个来试下降压效果。首先L79XX,后面的XX表示能达到的降压值,比如7905表示降压后是5V, 7909表示降压后是9V,其次检查下它的datasheet,发现他有最大输入电压可以达到-40V(为什么是负的,后面会说明,我在这上面栽了个跟头,面包板被烧化了个洞,连手都被烫了
2017-08-10 23:54:25
13705
2
原创 D_D系统构建-Loader的保护模式尝试
前面我们完成了boot(mbr)读取Loader的任务,但我们一直都 在实模式下验证的。本章我们将尝试保护模式下运行下loader.首先我们要改造下我们的Loader,最简单的肯定要包含保护模式需要的内容。实模式下,地址访问实际是按照段寄存器:偏移进行的, 实际的物理地址=段寄存器*16+偏移,比如段寄存器为0x2000, 偏移为0x1000, 实际对就的物理地址:0x2000*16+
2017-08-06 23:12:35
370
原创 D_D系统构建-MBR(8)filesystem.inc代码整改适配32位(附提供当前整个开发目录文件)
上几篇我们已经可以通过mbr加载loader文件,并能成功执行loader指令。下面计划是要扩展我们的loader文件,来进入保护模式的,在保护模式中加载kernel文件,自然想复用我们已经有的filesystem.inc文件。但检查过这个文件后,发现里面的函数寄存器基本使用的是16位的。且存在修改ds/es的操作。这在实模式下没有关系。但 在进入保护模式就会有问题了。保护模式下,我们
2017-07-28 22:50:39
513
原创 D_D系统构建-MBR(7)加载loader文件代码filesystem.inc解析
上一章节解析了boot.asm文件,这个文件包含了两个Inc文件,base_phy.inc及filesystem.inc,均在我们的include文件夹下。同时这两个 文件在前面 已经提供了代码,大家可以到http://blog.youkuaiyun.com/b06030927/article/details/75269497处取代码( DD系统构建-MBR(5)加载loader文件)。
2017-07-21 23:23:37
385
原创 D_D系统构建-MBR(6)加载loader文件代码MBR解析
上一章节,我们把当前完成的代码都列出来,包括主体代码boot.asm, loader.asm , 还有两个 include文件: base_phy.inc, filesystem.inc; base_phy.inc之前已经介绍过,且都是定义了一些地址宏,不再重复介绍;loader.asm只是简单的显示 一句话,也比较简单。相比之下 , boot.asm, filesystem.inc文件比较复杂,
2017-07-19 23:13:21
429
原创 DD系统构建-MBR(5)加载loader文件
在上一章节,我们验证了在mbr超过512字节时,如何能正确将超出512字节内容加载到内存处,并能正确运行;理解了这点,对于我们下面的加载loader大有帮助。本章节我们来尝试mbr加载loader.bin文件,并能跳转到loader.bin处执行。首先,我们得先有个能生成loader.bin的文件才行,我们可以写一个简单的Loader.asm,代码如下:loader.asm
2017-07-17 23:34:58
767
原创 D_D系统构建-MBR(4)代码剖析
上一章节我们将代码都罗列出来 ,实际上这还是一个测试代码,不会真正的加载 loader; 在后面Loader实现后,会对此代码再进行充实完善,当前我们只用来验证下分段mbr是否能正常运行。boot.asm如下:这一行表示引用头文件的意思,与C中的include一样,编译时会在此展开。section表示 这是一个段,align表示 编译时按照16bit对齐, vstart
2017-07-11 23:22:02
375
原创 D_D系统构建-MBR(3)代码
MBR代码boot.asm%include "base_phy.inc"section mbr align=16 vstart=MACRO_BOOT_ADDR jmp start;数据区bootmsg: db "MBR running..", 0ah,0dh;bootmsglen: equ $-bootmsgmbr_left_len dw mbr_end-
2017-07-09 23:31:21
441
原创 D_D系统构建-MBR(1)
MBR,英文含义:Main Boot Record),主引导纪录,是位于磁盘最前边的一段引导(Loader)代码,一般写于磁盘第一个扇区处。它是我们的系统上电后第一个运行的磁盘程序(在它前面实际还有很多固件程序,bios等,主要完成硬件自检工作,这阶段发生任何异常,比如内存异常,显卡异常,磁盘异常等均会中止,当然这一块我们不关注,也无法干预),最简单的理解就看成是由我们的pc把它加载到内存地址0:
2017-06-24 22:57:13
533
原创 D_D系统构建-开发文件目录结构
app:用户程序目录,类似于我们自己安装 的应用程序boot: MBR程序目录,系统上电后第一个自动加载的程序include:头文件目录,常用的头文件放在此目录中kernel:core目录, 我们的最终文件管理,用户程序调度,中断处理都在这里面loader:loader目录,用来加载kernel,自身由mbr加载 release:最终生成程序目录,包括mbr loader co
2017-06-24 07:50:52
430
原创 D_D系统构建-文件写入方法
按照上一篇的文件系统描述方法,当需要写入一个新文件到虚拟磁盘中时,遵循下面的要求:1. 读取文件文件系统块(扇区1),取出可用扇区数目,可用inode数目;读取扇区使用位图(扇区2), inode信息使用位图(扇区3) 。2.如果可用inode数目为0,失败,退出;否则根据inode使用位图,取一个可用的inode,暂时叫inode_x; 3.计算文件所需要的扇区数目((文件大小+51
2017-06-11 17:31:39
594
原创 D_D系统构建-文件系统
文件的存储读取及扇区的使用分配离不开文件系统,我们不需要太复杂的文件系统,主旨就是要纪录文件保存的位置,及可用扇区数目等,这里借鉴下inode概念。一切本着简单的原则。这里面假定我们只有512个inode, 4096个扇区扇区0 MBR扇区1 文件系统块(见表1)扇区2
2017-06-11 17:29:19
484
原创 D_D系统构建-文件分布及说明
整体上文件系统 分为MBR, LOADER, KERNEL, USER_APP.MBR:系统上电后第一个加载 的程序, 存放在磁盘0.一般前446字节保存代码,后64字节为分区表信息,最后两个字节标明MBR(0xaa55),它的主要任务是加载 Loader到内存,并将运行权利交由loader.LOADER:由于MBR的限制,它会第一个把loader加载到内存中,然后运行权交由Loader运
2017-06-11 15:42:57
371
原创 D_D系统构建-简述及环境准备
当前自己学习了一些操作系统原理方面的书籍,想通过自己构建一个简单的系统来巩固一下环境:系统:ubuntu 16.04 64位 虚拟机工具:bochs 编译工具:nasm
2017-06-11 15:31:27
505
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人