12 2006 档案

摘要:串口输出东西太重要了,因此,再来仔细地看看串口调用的其它函数,这样做到一目了然,没有别的疑问在里面,就可以做到庖丁解牛游刃有余。像下面的函数:PRINTSTR(" CONFIG=")上面这句,就是输出一串字符到串里显示出来。其实它是一个宏定义,那么它是怎么样实现输出字符串到串口上的呢?立即去找到它的宏定义,然后把它展开,最后看看它是怎么样的。宏定义如下:#define PRINTSTR(x) / .rdata;98: .asciz x; .text; la a0, 98b; bal stringserial; nop把它写得好看一些,如下:.rdata98: .asciz 阅读全文
posted @ 2006-12-31 14:52 ajuanabc 阅读(438) 评论(0) 推荐(0) 编辑
摘要:前面已经介绍到要初始化南桥,现在就来看看南桥是怎么样初始化,并且更重要的工作,就是怎么样初始化串口输出东西。先来看superio_init实现代码:#define PCICONF_WRITEB(dev,func,reg,data) / li a0,CFGADDR(dev,func,reg); / li a1,PHYS_TO_UNCACHED(PCI_CFG_SPACE); / and a2,a0,0xffff; / or a1,a2; / srl a0,16; / li a2,BONITO_BASE+BONITO_PCIMAP_CFG; / sw a0,BONITO_PCIMAP_CFG(bo 阅读全文
posted @ 2006-12-30 16:09 ajuanabc 阅读(320) 评论(0) 推荐(0) 编辑
摘要:上一次说到怎么样运行起来,现在接着上次再进行分析下去。在locate的程序,如下:locate: la s0,start subu s0,ra,s0 ands0,0xffff0000 li t0,SR_BOOT_EXC_VEC mtc0 t0,COP_0_STATUS_REG mtc0 zero,COP_0_CAUSE_REG .set noreorder li bonito,PHYS_TO_UNCACHED(BONITO_REG_BASE)…bal 1f nop /* bonito endianess */ BONITO_BIC(BONITO_BONPONCFG,BONITO_BONPONC 阅读全文
posted @ 2006-12-29 12:57 ajuanabc 阅读(310) 评论(0) 推荐(0) 编辑
摘要:天生万物,万物始于天。同样,龙芯2E要运行起来,那么就少不了程序。那么龙芯2E的盘古开天是从那里开始呢?追源寻根,才能了解事物的来龙去脉,才能把握住未来的方向。现在就去寻找龙芯电脑运行的第一行程序,去看看龙芯的初始化阶段都做了些什么事情,有没有做坏事情呢?哈哈,这个很难说的。如果有BUG的出现,就会干出各种各样的坏事情。龙芯2E的内存布局已经说明它要从那里加载第一行程序了,很明确的地址就是0xBFC0 0000,相应的物理地址是0x1FC0 0000。因此,只把PMON程序放到那个ROM Flash里,就会运行第一行程序。打开PMON目录下的文件start.S,就会看到下面的汇编程序:.set 阅读全文
posted @ 2006-12-28 16:42 ajuanabc 阅读(286) 评论(0) 推荐(0) 编辑
摘要:每个CPU都有自己独特的指令,比如X86结构的CPU有INTEL的指令系统,MIPS的CPU也有自己的指令系统,当然龙芯CPU也不例外,有自己的指令系统。指令是控制CPU怎么样工作的接口,每条指令都会让CPU做出响应的。如果发送一条不是CPU的指令,就会导致CPU非法执行,并且会引起CPU异常。龙芯里,每条指令都是固定长度:32位,4个字节。因此,任何指令段的代码长度,一定要是4字节的倍数,绝对不要出现不是4的倍数,否则就让CPU不能运行了。从龙芯的使用手册中可以看到,每条CPU指令都是一条32位的指令字,这些指令都是字对齐的。指令集包含三种指令格式,如图 2-1所示,立即数指令(I-型),跳 阅读全文
posted @ 2006-12-27 13:35 ajuanabc 阅读(615) 评论(0) 推荐(0) 编辑
摘要:在以前的MIPS机器里,都需要进行如下处理:1.加载或保存到内存. 2.lw $9, 0($8); 从内存里加载一个值到$93.nop ; $9在这里还没有准备好,所以要跑多一条空指令来解决。4.addiu $10, $9 ; $9在这里已经从内存取值回来,可以使用了。5.分支和跳转. 6. jal myfunc ; 调用函数7. move a0, s0 ; 这条指令在跳转前执行8. addiu s0,s0,v0 ; 这条指令在跳转后执行。不知道龙芯是否也需要这样编程吗?现在的龙芯2E是不需要再在加载和保存指令后面加NOP指令了。跳转连接指令后面,除了跳转指令外其它指令都可以加入去。 阅读全文
posted @ 2006-12-26 15:46 ajuanabc 阅读(225) 评论(0) 推荐(0) 编辑
摘要:对于软件开发人员来说,一个CPU最重要的部分就是寄存器、内存布局和指令。龙芯2E逻辑上是有32个定点通用寄存器(其中0号固定为0),32个浮点寄存器,一个hi,一个lo,以及若干cp0控制寄存器,两个cp1控制寄存器。物理上是64个定点,64个浮点,和若干控制寄存器。龙芯2E具有下面的逻辑寄存器:l 32个通用的64位寄存器l 1个PC寄存器l 2个保存乘除操作结果寄存器l 32个浮点64位寄存器l 32个CP0控制寄存器l 2个cp1控制寄存器一、32个通用的64位寄存器这32个通用寄存器,可以用作任何使用。但实际上由于编译器已经约定特定的使用,所以还是要服从特定的约定,这样可以减少麻烦,减 阅读全文
posted @ 2006-12-25 13:48 ajuanabc 阅读(439) 评论(0) 推荐(0) 编辑
摘要:编译PMON指南蔡军生为了学习怎么样开发龙芯的BIOS,也就是PMON。经历好几天深夜的探索,遇到各种各样的问题,后来又上论坛问到kkmao,总算解决了,在这里谢谢kkmao的帮忙。现在就把我的编译过程介绍一下。一、下载SVN工具由于要下载PMON代码,就要使用SVN工具。目前,所有的代码都是按版本控制形式保存在服务器上的,并且没有打包的代码,这样就需要使用SVN的工具来下载代码。如果在WINDOWS下,就要下载WINDOWS的SVN工具。如果在LINUX下,就需要下载LINUX的GETIT工具。二、注册帐号先到网站dev.lemote.com上面注册一个帐号,然后才能登录进入开发网站,否则不 阅读全文
posted @ 2006-12-24 10:27 ajuanabc 阅读(1003) 评论(0) 推荐(0) 编辑
摘要:在开发软件中,对于CPU的了解就是最重要的了。无论什么指令都需要CPU来执行。现在就来看看龙芯2E的具有什么特征了。龙芯2号增强型处理器(简称“龙芯2E”)是中国科学院计算技术研究所研制的、具有自主知识产权的64位高性能通用处理器,龙芯2E的最高主频率达到1GHz,最高双精度浮点运算速度每秒39.93亿次,SPEC CPU2000性能测试达到500分,是目前全球除美日之外性能最高的通用处理器。 龙芯2E采用四发射的动态超标量超流水线结构,实现了先进的转移猜测、寄存器重命名、动态调度、以及非阻塞的高速缓存访问等乱序执行技术。龙芯2E片内含64KB一级指令高速缓存、64KB一级数据高速缓存、以及5 阅读全文
posted @ 2006-12-23 13:10 ajuanabc 阅读(246) 评论(0) 推荐(0) 编辑
摘要:北桥是基于Intel处理器的个人电脑主板芯片组两枚芯片中中的一枚。北桥设计用来处理高速信号,通常处理CPU,RAM,AGP端口或PCI Express,还有南桥之间的通信。 北桥芯片(North Bridge)是主板芯片组中起主导作用的最重要的组成部分,也称为主桥(Host Bridge)。一般来说,芯片组的名称就是以北桥芯片的名称来命名的,例如英特尔 845E芯片组的北桥芯片是82845E,875P芯片组的北桥芯片是82875P等等。北桥芯片负责与CPU的联系并控制内存、AGP、PCI数据在北桥内部传输,提供对CPU的类型和主频、系统的前端总线频率、内存的类型(SDRAM,DDR SDRAM 阅读全文
posted @ 2006-12-23 12:39 ajuanabc 阅读(417) 评论(0) 推荐(0) 编辑
摘要:要对龙芯电脑开发,也需要了解硬件的组成,这样才可以对它进行编写相应的驱动程序和使用。现在就来了解一下龙芯电脑的主要芯片组成,下面先从网上的龙梦电脑的组成来入手。它的配置如下:福珑迷你电脑CPU龙芯2E CPU,主频600MHz-900MHz,支持DDR333内存总线,功耗2-4瓦北桥芯片ICT NB2E (ALTERA EP2C20F484)芯片,功耗0.1-0.3瓦南桥芯片VIA VT82C686B,33MHz 32-bit PCI接口显示芯片ATI RADEON 7000-M,33MHz 32-bit PCI接口,内部集成16MB DDR内存,外接VGA显示输出和S-Video输出内存内存 阅读全文
posted @ 2006-12-22 13:09 ajuanabc 阅读(401) 评论(0) 推荐(0) 编辑
摘要:对于一个新CPU,那就有很基本的问题要搞清楚的。现在把想到的问题列表如下:1.CPU指令是什么?答:MIPS指令。2.什么是MIPS?答:MIPS的名字为“Microcomputer without interlocked pipeline stages”的缩写。另外一个通常的非正式的说法是“Millions of instructions per second”。3.编译工具是什么?答:mips-elf-gcc。4.龙芯电脑的BIOS是什么?答:PMON。5.龙芯电脑的操作系统是什么?答:LINUX。6.龙芯电脑的是32位还是64位呢?答:龙芯1是32位的,而龙芯2E是64位的。但MIPS的 阅读全文
posted @ 2006-12-21 20:08 ajuanabc 阅读(193) 评论(0) 推荐(0) 编辑
摘要:要开发龙芯,那么要先学习一下它的汇编。而它的汇编跟MIPS的相似,这样的话,就只能拿MIPS32的先来学习了。下面就是一些资料的连接。MIPS Assembly Language Programminghttp://www.eecs.harvard.edu/~ellard/Courses/cs50-asm.pdfMIPS Assembly Language Programmer’s Guidehttp://www.cs.unibo.it/~solmi/te ... LanguageProgDoc.pdfMIPS Assembly Languagehttp://www.inf.uni-konst 阅读全文
posted @ 2006-12-21 13:13 ajuanabc 阅读(237) 评论(0) 推荐(0) 编辑
摘要:要想开发龙芯,首先要找点资料,学习好以后再去实践。目前就在找资料和看资料的过程,当拿到龙芯电脑时,就可以自己开发了。 龙芯2E用户手册.pdf http://www.china-cpu.org.cn/bbs/attachment.php?aid=236 龙芯本地编译工具链 http://www.lemote.com/upfiles/toolchain-local.tar.gz 本软件用于本地编译各种龙芯软件 ... 阅读全文
posted @ 2006-12-20 15:09 ajuanabc 阅读(299) 评论(0) 推荐(0) 编辑
摘要:从新闻上看到龙芯CPU发布,到现在看到龙芯电脑的发布,真是太让人兴奋!这是自己的CPU啦,一定要支持一把。本来打算买一块ARM9开发板的,看到龙芯的电脑更好用。决定买一台龙芯的电脑,立即就上网查看龙梦公司的地址,然后就去发EMAIL过去,让他们确认一下。最后通过了他们的确认,就这样就可以订购到龙芯电脑了。希望早一点拿龙芯电脑,然后再上面玩玩,以后第一时间向大家报告的。还想在上面玩玩REACTOS。 阅读全文
posted @ 2006-12-19 18:01 ajuanabc 阅读(126) 评论(0) 推荐(0) 编辑
摘要:functionJsMenu(name)...{this.Direction=0;//主菜单排列方向:0代表横向,1代表竖向this.MainWidth=200;//主菜单各项宽度this.MainHeight=20;//主菜单各项高度this.ItemWidth=null;this.ItemHeight=null;this.MainIcon=null;this.MainAlign=null;this.ItemIcon=null;this.ItemAlign=null;this.MainAnchor=null;this.ItemAnchor=null;this.Spacing=0;this.P 阅读全文
posted @ 2006-12-10 01:14 ajuanabc 阅读(149) 评论(0) 推荐(0) 编辑