ubuntu下30天自制os 的学习计划
30天自制os的学习也告一段落,由于有其他更重要的事情要集中精力去处理。书本从15天開始就是多任务了。可是不得不停下一阵子。
以下总结下学习中遇到的一些问题。
1:学习这前14天中。问题最大的是关于GDT。IDT的理解,还有段的訪问长段,属性的理解。
2:这当中遇到的一个现象就是从qemu能够正常启动,可是写到u盘后。从u盘启动时,会不停的重新启动。能够推測到是由于产生了一些异常导致电脑重新启动,可是由于水平有限一直不知道为什么, 后来放下30天这本书。去看了一下,关于GDT的訪问属性的问题,发现出现故障的原因例如以下:
- 段的分页位没有开,导致从段基址開始,能訪问的空间仅仅有1MB的范围,而博主写的代码与日本作者的有些不同。跳转到c语言写的代码指令已经超过了2MB。
- 日本作者的代码在初始化GDT,IDT的函数中,对代码段的长度进行了控制
3:在10几天的代码中。最难理解理解的还是关于图层刷新的那一块,尽管代码是參考书本上敲的。可是还是有非常多不太理解,当然仅仅知道是怎么用的,似乎是基础有点薄弱的原因。
4:之前写的512字节的代码是用Intel的汇编语言写的,第二次学习时,所实用GNU的AT&T语法进行了改写,通过对u盘启动的研究,发现了关于U盘的一些CHS的特点。当然这一点为以后学习Linux内核时。改动为从u盘启动是有帮助的。
5:学完书本上第14天的内容后,发现之前写的代码有非常多bug,当然这些bug在后面都给修复了。
不停的修复bug。也为后面的学习提供了一些方便。由于前面的学习过程中没有太注重代码的可读性,当然仅仅为了自己能看懂。写了非常多凝视。在13天中,对代码的函数进行了分模块的整理。对全局变量的存放位置也有更好的存放位置,代码的结构也更清楚了。
6:了解到github。在管理代码方面强大的功能,所以后面也把代码直接放到了github上,学习了一点github的基础知识,代码的同步,改动也方便了非常多。
7:在移植ucgui时。对于静态链接库的使用。也有更深入的理解,由于须要写makefile来编译ucgui,对于makefile文件的编写也有了更深入的了解,当然学习还是不够系统。后面应该找本makefile的书,系统的看一遍。
8:关于不同分辨率的显示问题。有些问题。难道不能在32位的模式下,用c语言来进行设置吗?不同的模式。不同的VRAM的地址也不同,所以32位的系统仅仅能用2.6GB 左右的内存,高址的内存有一部分给分配给显存了。关于高分辨率的第14天的关半部分。日本作者写的有点问题,直接给出了VRAM的地址是0xe0000000是不科学的,导致博主觉得自己的代码有问题。看了好几次。发现没有问题。于是直接往书的后面看。发现VRAM的地址是通过中断读到的,然后把读到的VRAM地址保存起来,以便后面在c语言的函数中使用。
项目github地址:https://github.com/cherishsir/ubuntu230os
QQ Group:159336168
以下就放一张从u盘启动的照片吧。实现功能到了第14天的高分辨率显示和简单的键盘输入。
至于15天和后面的学习。等到了放暑假时,在家学习吧。
ubuntu下30天自制os 的学习计划的更多相关文章
- ubuntu下30天自制操作系统还在继续学习中
操作系统还在学习中,进度不是非常确定,近期学习到了第13天的中部,由于把ucgui移植上去花了一点时间. 同一时候为了方便代码的兴许管理和分享,也为了学习github的代码管理使用思想, 所以建立了一 ...
- 30天自制OS(linux环境)-day1
30天自制OS(linux环境)--第一天 我是在CentOS的环境上面实现的,使用ubuntu的环境也是类似的 第一步:因为要对二进制文件进行编辑,所以安装二进制编辑器hexedit(当然其他的也可 ...
- 《30天自制操作系统》学习笔记--Mac下工具的使用
现在来介绍官网上下的工具怎么用首先是官网地址,书上有个注释上有:hrb.osask.jp 翻译成中文大概是这个样子滴. 上面有两个文件可以下载,一个是工具,一个是工具的源代码,很好的学习资料 下面把工 ...
- 《30天自制操作系统》学习笔记--番外篇之Mac环境下的工具介绍
这几天又有点不务正业了,书也没看,一直在搞这个破环境,尝试各种做法,网上各种垃圾信息,浪费了很多时间,说的基本都是废话,不过还是找到了一些,赶紧写下来,不然这个过几天又忘了 首先是环境,我用的是Max ...
- 《30天自制操作系统》学习笔记--Mac环境搭建
弄了三天了,终于弄好了,先说结果,就是作者在网站上放了os x的工具(hrb.osask.jp,也有linux下的工具,可以自己去下载),也就是说我白忙活了三天... 再说一下这几天都干啥了,主要是想 ...
- LAMP开发之环境搭建(2014.12.7在ubuntu下)
Ubuntu下搭建LAMP环境 前言:学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我搭建的是LAMP环境,即Linux.Apache ...
- 从你的u盘启动:30天自制操作系统第四天u盘启动学习笔记
暑假学习小日本的那本书:30天自制操作系统 qq交流群:122358078 ,更多学习中的问题.资料,群里分享 developing environment:ubuntu 关于u盘启动自己做的操 ...
- 30天自制操作系统第八天学习笔记(u盘软盘双启动版本)
暑假学习小日本的那本书:30天自制操作系统 qq交流群:122358078 ,更多学习中的问题.资料,群里分享 environment:开发环境:ubuntu 第八天的学习思考: 关于鼠标是怎么 ...
- 30天自制操作系统第九天学习笔记(u盘软盘双启动版本)
暑假学习小日本的那本书:30天自制操作系统 qq交流群:122358078 ,更多学习中的问题.资料,群里分享 environment:开发环境:ubuntu 第九天的课程已学完,确实有点不想写 ...
随机推荐
- Unity3D 5.0版本+注册工具分享
Unity3D引擎5.0正式版本发布也有一段时间了.笔者今天下载了新版本顺便分享一下资源. 主要有两个资源,一个是5.0f4的官方客户端,另外一个是vs的调试插件.有需要的盆友就拿去.都在下面的连接地 ...
- 数论 + 容斥 - HDU 1695 GCD
problem's Link mean 给定五个数a,b,c,d,k,从1~a中选一个数x,1~b中选一个数y,使得gcd(x,y)=k. 求满足条件的pair(x,y)数. analyse 由于b, ...
- 求逆元 - HNU 13412 Cookie Counter
Cookie Counter Problem's Link: http://acm.hnu.cn/online/?action=problem&type=show&id=13412&a ...
- Thymeleaf 3.0.9.RELEASE is the current stable version. It requires Java SE 6 or newer.
Thymeleaf 3.0.9.RELEASE is the current stable version. It requires Java SE 6 or newer. Release date: ...
- 在MVC设计模式中,JavaBean的作用是。(选择1项)
A.Controller B.Model C.业务数据的封装 D.View 解答:B
- (转)内核container_of(ptr,type,member) 解析
container_of(ptr,type,member) 用于在已知结构体里面成员member和该成员指针ptr(就是地址)和结构体类型type, 返回该成员所在的结构体的指针(就是地址), 例如 ...
- mysql查询各种类型的前N条记录
mysql查询各种类型的前N条记录,将3改为N(需查询条数)即可 (select * from event_info where event_type = 1 limit 3)union all( ...
- C++之函数模板
C++之函数模板与模版函数 直接上代码: C++ Code 12345678910111213141516171819202122232425262728293031323334353637383 ...
- jboss6.4 域模式自动部署
1.通过jenkins传递部署包到服务器,调用自动部署shell完成jboss6.4的域模式部署: 2.自动部署shell如下: 完成部署包重命名(从jenkins过来的包可能没有改名:). 调用jb ...
- 20 个常用的 CSS 技巧
1. 黑白图像 这段代码会让你的彩色照片显示为黑白照片,是不是很酷? img.desaturate { filter: grayscale(100%); -webkit-filter: g ...