老李的地下室

艰难地走在操作系统开发的道路上

  博客园 :: 首页 ::  ::  :: 订阅 订阅 :: 管理 ::
  47 随笔 :: 0 文章 :: 70 评论 :: 2 引用

公告

置顶随笔 #

摘要: cosmos全称C# open source manage operation system,是一个使用C#语言基于.net framwark框架编写的开源操作系统,主页www.gocosmos.org。可从cosmos.codeplex.com获取最新的源代码。阅读全文
posted @ 2011-01-31 11:48 Hundre 阅读(3286) 评论(7) 编辑

2012年3月5日 #

摘要: 直接开始吧,在KenelTest文件夹下面添加一个自己的项目,这里我的项目是PCIDeviceEnumerator,列出当前自己机子上的PCI设备的VendorID和DeviceID以及设备类型阅读全文
posted @ 2012-03-05 12:33 Hundre 阅读(1080) 评论(0) 编辑

2012年1月16日 #

摘要: 访问PCI配置空间可通过两个访问寄存器,CONFIG_ADDRESS寄存器和CONFIG_DATA寄存器。这两个寄存器在PC中分别对应着CF8h和CFCh端口,并且是32位端口,即读写要用的32为IN和OUT汇编指令。当然Cosmos已经对汇编指令进行了封装,我们就不需要直接对汇编指令进行操作了,直接调用即可。阅读全文
posted @ 2012-01-16 08:22 Hundre 阅读(1080) 评论(1) 编辑

2011年9月28日 #

摘要: 启动RTL8139 发送0x00到config1(0x52)寄存器来设置LWAKE+LWPTN(这两个应该是针脚的名字)为高电平(to active high.)这一步是启动该设备的关键操作。 软复位 接下来我们应该做一次软复位来清理RX和TX缓冲区并设置所有东西回默认值。这一操作用来清除在通电启动时候仍然留在缓冲区或者寄存器中的垃圾。 发送0x01到Command寄存器(0x37)将会使RTL8139进入软复位。只要这个字节被发送过去,可以检查RST位来确认芯片是否完成复位。如果RST位为high(1),那么复位仍在进行中。 另:在Qemu模拟器中有个小小的bug,如果在执行软复位前检查command寄存器,你可能会发现RST是high(1)。这时,尽管忽略它继续进行初始化操作。 初始化接收缓冲区 这一部分,我们将设置一段芯片地址位置为接收缓存的开始地址。一种方法是,定义个缓存变量并把这个变量地址发送到PBSTART寄存器(0x30),如: char rx_buffer[8192+16]; // declare the阅读全文
posted @ 2011-09-28 17:50 Hundre 阅读(1468) 评论(4) 编辑

2011年9月21日 #

摘要: 既然COSMOS使用C#来写的,为什么我们需要一个如此底层的调试?我们觉得很多用户可能只需要用到C#调试器。尽管如此,汇编级调试器对工作在编译器上的用户或者在直接和硬件交互的调试中的用户来说是一个很大的帮助。阅读全文
posted @ 2011-09-21 17:52 Hundre 阅读(304) 评论(0) 编辑

2011年8月11日 #

摘要: 介绍 这篇文章将展示在COSMOS中如何实现基于WINDOWS API调用和内部调用的.net代码。另外,也包含了如何使用COSMOS,汇编或者X#语言与硬件直接进行交互。 Cosmos是什么 Cosmos一个使用Visual Studio作为开发环境的操作系统开发工具(development kit)。尽管如此,任何基于.net的语言,包括VB.NET,Fortran,Delphi Prism,IronPython,F#等等都可以用来进行开发。Cosmos本省和内核运行都是使用C# 来写的,所以命名为Cosmos。而且,NOSMOS(.NET Open Source Managed Operating System)听起来太蠢了。 Cosmos不是传统意义上的操作系统,它更应该叫做操作系统工具(Operating System Kit) ,或者正如我所说的叫做“Operating System Legos”(不知如何翻译,嘿嘿)。Cosmos让您能像使用Visual Studio和C#创建应用程序一样创建操作系统。大部分用户可以在几分钟之内自己写和引导阅读全文
posted @ 2011-08-11 03:18 Hundre 阅读(898) 评论(0) 编辑

2011年4月18日 #

摘要: 在各种库中,有一部分的库是封装了对底层硬件的操作的,例如在屏幕上输入字符,使用网卡发送数据包等。因为是直接对硬件进行操作,所以这一种类型的库的代码是和硬件相关的,这就是为什么我们会有x86的标准C程序库和arm的标准C程序库,两套不同的硬件体系,需要不同的库来完成对硬件的实际操作,每一套库中,都根据不同的硬件情况,按照硬件的规格定义好数据的排列方式(这就是为什么会有int,int16,int32,int64这么多蛋疼的数据类型的原因之一,因为编译器编译后有些数据必须占有足够长的位数以符合硬件产品的规格要求),以及根据硬件的功能提供出相应的函数,然后编译器编译时就能编译出符合硬件要求的格式的数据排列方式和操作这些数据的机器码。阅读全文
posted @ 2011-04-18 17:15 Hundre 阅读(2046) 评论(3) 编辑

2011年3月28日 #

摘要: 对于IBM-PC兼容机的硬件启动流程我目前理解是这样的:通电->BIOS初始化与自检->CPU初始化->加载硬盘的0磁道0柱面1扇区的内容进内存并开始执行这一部分的内容。到此,硬件的过程—注意是硬件--就走完了,剩下的就都交给0磁道0柱面1扇区的程序来执行,这里面的东西就是我们程序员要做的东西了。 这里如果没有操作系统的话,那么从0磁道0柱面1扇区开始执行的程序就是我们自己写的程序,但这样一次只能执行一个,很浪费硬件资源,如果要换别的程序的话还得重新启动一次硬件,所以我们希望这个首先执行的程序可以一直运行,然后再向这个程序发出命令,让这个程序来执行我们想要执行的程序,这样就可以不用重启硬件就能运行多个程序了,慢慢地这个我们对其发出命令让其运行别的程序的程序就变成了我们所谓的操作系统了。阅读全文
posted @ 2011-03-28 12:06 Hundre 阅读(2446) 评论(10) 编辑

2011年2月23日 #

摘要: 由于是纯C#的开发环境,因此IL2CPU责任重大,需要实现C#语言的各种特性,包括对象的初始化、多态、事件、委托等等,当然到cosmos-12304为止,这些特性还没有全部实现(后面的应该会一步一步的都实现,不过还没有看过后面的源代码,只是猜测而已)。除此之外,IL2CPU还负责处理对.net的运行库(这个运行库并不是.net framework,这个库是COSMOS自己实现的与.net framework类似但要小很多很多的一个库,以后再讲这一部分)阅读全文
posted @ 2011-02-23 11:31 Hundre 阅读(2218) 评论(12) 编辑

2011年2月3日 #

摘要: 编译过LINUX的朋友应该都熟悉Make文件吧,在这里面可以清楚的看到使用编译器把C源代码编译成二进制源代码的流程,中间干了什么都可以看得清清楚楚。但使用VS的朋友一般都是程序写好之后直接F5就运行了,后面做了什么我们根本不知道。对于COSMOS的源代码,VS只是帮我们编译成了IL的代码,这种代码无法在没有CLR环境中运行,所以VS还需要把IL代码编译为针对CPU的本地代码。这中间的流程都由MSBuild这个东西控制。对于MSBuild的介绍可以直接查看MSDN文档。总的来说这个东西的地位就相当于Make文件的地位吧,指导VS如何生成可以引导的二进制文件。阅读全文
posted @ 2011-02-03 08:40 Hundre 阅读(2286) 评论(5) 编辑

2011年1月31日 #

摘要: cosmos全称C# open source manage operation system,是一个使用C#语言基于.net framwark框架编写的开源操作系统,主页www.gocosmos.org。可从cosmos.codeplex.com获取最新的源代码。阅读全文
posted @ 2011-01-31 11:48 Hundre 阅读(3286) 评论(7) 编辑

2010年11月23日 #

摘要: 流媒体文件格式在流媒体系统中占有重要地位,设计合理的文件格式是提高流媒体服务器工作效率最直接和最有效的办法。该文在剖析常用流媒体系统和文件格式的基础上,特别地对美国xiph.org基金会的开源流媒体工程Ogg文件格式子项目做了深入的分析,指出Ogg格式对媒体编码数据的存储读取和传输具有简洁性,Ogg格式的映射与逆映射与媒体编码数据具有相对独立性,能够有效提高流媒体服务器的工作效率。阅读全文
posted @ 2010-11-23 20:09 Hundre 阅读(3222) 评论(0) 编辑

2010年11月20日 #

摘要: 1)RTP是实时数据传输协议。它提供时间标志,序列号以及其它能够保证在实时数据传输时处理时间的方法;它是依靠RVSP保证服务质量标准的。   2)RTCP是RTP的控制部分,是用来保证服务质量和成员管理的。   3)RTSP是开始和指引流媒体数据从流媒体服务器。它又可叫做"网上录像机控制协议".它是提供远程的控制,具体的数据传输是交给RTP的。   4)RSVP是Internet上的资源预订协议,使用RSVP预留一部分网络资源(即带宽),能在一定程度上为流媒体的传输提供QoS。就像TCP的重发和滑动窗口等都是阅读全文
posted @ 2010-11-20 21:56 Hundre 阅读(5415) 评论(1) 编辑

2010年11月18日 #

摘要: robots.txt的语法   “robots.txt“文件包含一条或更多的记录,这些记录通过空行分开(以CR,CR/NL, or NL作为结束符),每一条记录的格式如下所示:       “:“。   在该文件中可以使用#进行注解,具体使用方法和UNIX中的惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow行,详细情况如下: 阅读全文
posted @ 2010-11-18 20:36 Hundre 阅读(699) 评论(0) 编辑

2010年11月16日 #

摘要: FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。阅读全文
posted @ 2010-11-16 19:59 Hundre 阅读(3325) 评论(0) 编辑

2010年11月15日 #

摘要: 1 简介 可执行链接格式(Executable and Linking Format)最初是由UNIX 系统实验室(UNIX System Laboratories,USL)开发并发布的,作为应用程序二进制接口(Application Binary Interface,ABI )的一部分。工具接口标准(Tool Interface Standards,TIS)委员会将还 在发展的ELF 标准选作为一种可移植的目标文件格式,可以在32 位Intel 体系结构上的 很多操作系统中使用[1, 2] 。 阅读全文
posted @ 2010-11-15 21:11 Hundre 阅读(789) 评论(0) 编辑

仅列出标题  下一页