- 博客(20)
- 收藏
- 关注
原创 关于de2-70的一些知识
注意的是Avalon Master和Avalon Tristate Slave不能直接连接,需要经过Tristate Bridge。
2011-03-15 23:15:00 1245
原创 xv6对硬盘的操作
<br />硬盘IDE(integrate device electronics)的读取方式一chs (柱面,磁头,扇区)二:LBA(logicblockaddress)它是为了适应硬盘容量的快速生成出现的;<br />下面介绍在LBA的模式下的PIO(program IO)来实现对磁盘的读取操作;<br />主板有两个iDE通道,每个通道可挂载两个硬盘:访问第一个通道的第一个硬盘的扇区使用IO地址寄存器(0x1f0,0x1f1,0x1f2,0x1f3,0x1f4,0x1f5,0x1f6,0x1f7);访问
2011-03-12 18:30:00 1350
转载 gcc的命令大全
<br /> ·ChinaUnix首页 ·论坛 ·博客 Linux首页 | Linux新闻 | Linux论坛 | Linux文档 | Linux下载 | Linux博客 | Linux搜索 | 开源项目孵化平台 | 《开源时代》新手入门 | 安装启动 | 管理员指南 | 开发手册 | 桌面应用 | 程序开发 | 数据库 | 网络技术| CentOS | Fedora | MySQL |Apache | Ubuntu | Gentoo| OSCON08 Linux时代 >> 技术文档 >> 程序
2011-03-02 01:09:00 1024
原创 gcc的命令之-E
<br />运行 $gcc -E test.c,gcc对test.c进行编译预处理,并立马显示结果. (不执行编译) 2, 运行 $gcc -c<br />-save-temps test.c,不光产生test.o,还产生test.i, test.s,前者是编译预处理结果, 后者是汇编结果.<br />利用Emacs查看编译预处理结果 <br />针对含有编译预处理命令的代码,可以利用emacs方便地查看预处理结果,而不需执行编译,更为方便的是,可以只选取一段代码,而非整个文件<br /><br />
2011-03-02 01:06:00 641
原创 pic可编程中断器
<br />static ushort irqmask =0xFFFF&~(1<<IRQ_SLAVE);<br />static void <br />pic_setmask(ushort mask)<br />{<br />irqmask=mask;<br />outb(IO_PIC1+1);<br />outb(IO_PIC2+1,mask >>8);<br />}<br /> <br />void <br />pic_enable(int irq)<br />{<br />pic_setmask(i
2011-03-02 01:01:00 533
原创 xv6的中断分析
<br />在xv6中cpu根据中断号乘以8作为IDT(Interrupt Descriptor Table中断描述符表)的索引,IDT可以是内存中的任意位置,cpu通过寄存器(IDTR中断描述符表寄存器,共6字节高4字节是IDT的起始地址,低2字节是IDT的长度)的内容寻址IDT的起始地址,指令LIDT 和SIDT来<br />操作IDTR ,LIDT (load IDT Register)包含线性地址基址和界限的内存操作数来加载IDT ,操作系统创建IDT需要执行
2011-01-29 00:48:00 2385
原创 xv6的interrupt实验 trapasm.S源代码分析
<br />.text<br />.set SEG_KDATA_SEL ,0x10 #selector for SEG_KDATA<br />#vector.S send all trap here<br />.globl alltraps<br />alltraps: // <!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } --><br />alltraps的主要任务是设置
2011-01-28 21:50:00 1211
原创 xv6的lab1中的proj1的bootmain.c
<br />//boot loader <br />//Part of the boot sector ,along with bootasm.S which calls bootmain(),<br />//bootasm.S has put the processor into protected 32 -bits mode.<br />//bootmain() loads an ELF kernel image from the disk starting at <br />//sector 1 an
2011-01-25 15:20:00 1204
原创 并口编程
在计算机中,端口编程主要应用在两个方面:器件的控制和通信。我们能对计算机的并口编写程序为这两方面;并行端口主要还是为链接打印机的 计算机;此外, 我们能编程对端口在许多其他的应用方面; 并口编程比串口容易,但劣势是需要更多的传输线,因此并口不用在长距离的通信;让我们知道并口与串口的工作方式的不同点:1.在串口有两根数据线,传输线和接收线,它一位接着一位的传输数据像开始位,结束位,和效验位来检查错误。但在并口所有的一字节8位数据一次传输给端口。并口包含一些数据线,握手线,控制线在并口,下面的图示
2011-01-25 10:59:00 1285
原创 xv6的bootloader之bootmain.c
xv6 系统中的bootloader 程序的组成之一是bootmain.c部分的功能:加载硬盘的kernel部分到内存中;#include"type.h"#incude"xv6.h"#include"elf.h"#define SECTSIZE 512void readseg(uint ,uint,uint); void bootmain(void){struct elfhdr *elf, proghdr *ph,*eph;int elf ,i;void (*entry)(void);//Back in b
2011-01-24 14:52:00 3121
原创 C bootstrap的英文阅读
<br />The C part of the boot sector ,bootmain.c,load a kernel from an IDE disk into memory and then starts executing it;<br />2:The kernel is an ELF format binary,define elf.h;an ELF binary is an ELf file header ,struct elfhdr,followed by a sequence of p
2011-01-23 14:15:00 537
原创 automake的使用方法
<br />使用automake生成 makefile 文件的:<br />1:使用autoscanf 工具生成configure.scan<br />2: 把configure.scan的内容复制到configure.in中,(注意添加AM_INIT_AUTOMAKE)<br />3:使用aclocal命令生成configure.h.in文件<br />4:使用autoconf命令生成configure文件<br />5:创建makefile.am文件<br />6:内容里写入<br />AUTOMAK
2011-01-23 13:54:00 413
原创 xv6的main.c源代码
<br />#include "types.h"<br />#include "defs.h"<br />#include "param.h"<br />#include "x86.h"<br />#include "mmu.h"<br />#include "proc.h"<br />#include "pmap.h"<br /><br />static void mpmain(void) __attribute__ ((noreturn));<br /><br />str
2011-01-14 16:40:00 1416
原创 xv6中的pmap.c源代码
<br />#include"param.h"<br />#include"pmap.h"<br />#include"phymem_manager.h"<br />#include"spinlock.h"<br />#include"assert.h"<br />uint npages; //number of avaiable pages//内存以页(4k大小)的形式的数量,这里的得到的是总的页数<br />char *start; //
2011-01-14 15:54:00 2421
原创 xv6的buddy系统的源代码
<br />#include"buddy.h"<br />#include"defs.h"<br />free_area_t free_area[MAX_ORDER];//定义free_area_t类型的free_area数组<br />struct Page*mem_map;<br />const int FreeAreaSize[MAX_ORDER]={1,2,4,8,16,32,64,128,256,512,1024};//定义数组FreeAreaSize<br />void test_buddy(
2011-01-14 02:41:00 988
原创 xv6的buddy(伙伴)系统源代码之buddy.h
<br />#ifndef _BUDDY_H_<br />#define _BUDDY_H_<br />#include"pmap.h"<br />#include"phymem_manager.h"<br />extern const struct phymem_manager_class pmmc_buddy;<br />#define MAX_ORDER 11<br />//定义一个内存空闲结构体<br />typedef struct free_area{<br />page_list_head_
2011-01-13 23:05:00 1224
原创 makefile分析
<br />xv6.img 的生成过程如下:<br />1:# build the own boot sector disk image<br /> obj/xv6.img: obj/bootblock<br /> dd if=/dev/zero of=obj/xv6.img count=10000 // 使用空白字符填充 xv6.img,即初始化 xv6.img<br /><br /> dd if=obj/bootblock of=obj/xv6.img conv=notr
2011-01-12 21:19:00 1071
原创 xv6的main.c
//Bootloader////Part of the boot sector ,along with bootasm.s which calls bootmain()//bootasm.S has put the processor into processor into protected 32-bit mode//bootmain() loads an ELF kernel image from the disk starting at //sector 1 and then jumps to
2011-01-11 16:29:00 2132
原创 xv6的bootloader之一bootasm.s
bootasm.S是bootloader(bootasm.S和bootmain.c)其中之一:start:.code16set PRO 0x001set PRO 0x002set cli //interruptted 禁止中断cldmovb//A20is booted; this is compablited x86//wait for not busyseta20.1inb $0x64,%altestb $0x2,%al jnz seta20.1//0xd1==>port
2011-01-11 11:29:00 2099
原创 12_23学习linux命令的总结
1:.代表当前目录;..代表上一级目录;2:启动应用程序时:./xx;3:删除文件的命令:rm -tf xx ;4:创建目录的命令:mkdir xx;5 : 创建别名的命令:ln -s &{dest}/bin gcc gcc346 : 更新源的命令: sudo apt-get update7:手工编译安装程序的步骤:(1)解压:tar -vxzf xx.tar.gz(2)配置:./configure --prefix="";(3)make (4)make install8:关于gcc-3.4版本的一个编译
2010-12-24 01:23:00 387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人