上一页 1 ··· 175 176 177 178 179 180 181 182 183 ··· 191 下一页
摘要: 如果你的记性好,也许看到前面有一些键盘初始化了,但那里的初始化是设置南桥接收键盘数据输入和输出而已,只是一个接口,或者是一个代理。在这里才是开始真正初始化键盘,让键盘工作在合适的方式。在电脑里,显示卡输出信息给人看,而键盘扮演着另一个角色,就是让人们可以输入东西,控制电脑做各种各样的事情。虽然电脑的历史也有60年了,并且技术也在飞速地发展,但是键盘还是作为重要的输入方式。希望我们大家能发明一种更好的输入方式,语音输入?还是脑电波输入?也许很快就到来。下面来仔细地分析键盘初始化的实现,代码如下:int kbd_initialize(void){ int status; int count; /. 阅读全文
posted @ 2007-01-25 23:42 ajuanabc 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 在上一次里,已经说到初始化网络,在那里提到调用一个函数tgt_devconfig来初始化其它重要的设备。这其中就有一个重要的设备要初始化的,它就是显示卡。下面就来仔细地阅读这个函数的代码,如下:voidtgt_devconfig(){#if NMOD_VGACON > 0 int rc;#if NMOD_FRAMEBUFFER > 0 unsigned long fbaddress,ioaddress; extern struct pci_device *vga_dev;#endif#endif _pci_devinit(1);/* PCI device initializatio 阅读全文
posted @ 2007-01-24 21:47 ajuanabc 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 现在的世界,都是网络的世界了。没有网络是不可想像的,失去太多激动人心的时刻。没有网络,就不可能方便地交流数据,BLOG也不可发达到目前这种程度。就是在PMON的调试里,使用网络也是非常方便的。比如想开发PMON运行的程序,就可以使用网络加载,比如TFTP加载程序。这样就不用每次去写硬盘,或者写到其它地方去,只要把网络连接好,就可以在其它机器里编译,然后通过网络把程序放到目标机器里运行了,这样做会大大地加快调试程序的进度。现在就来分析PMON里的网络功能部分。在函数dbginit里调用下面的函数进行初始化的动作:#ifdef INET SBD_DISPLAY ("NETI", 阅读全文
posted @ 2007-01-23 22:15 ajuanabc 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 继续来分析PCI设备的搜索过程,下面就是通过调用搜索程序来实现的。for(i = 0, pb = _pci_head; i < pci_roots; i++, pb = pb->next) { _pci_scan_dev(pb, i, 0, init); }接着去看看函数_pci_scan_dev的实现:static void_pci_scan_dev(struct pci_device *dev, int bus, int device, int initialise){ for(; device < 32; device++) { _pci_query_dev (dev, 阅读全文
posted @ 2007-01-19 23:18 ajuanabc 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 上面继续初始化南桥之后,再接着下来,就要初始化PCI总线上其它的设备了。看下面的代码:CPU_ConfigCache();上面重新配置龙芯2E的缓存。 _pci_businit(1);/* PCI bus initialization */上面继续初始化PCI总线上的设备,这个函数里要初始化完成所有其它连接到PCI总线上的设备。接着看这个函数的代码如下:void_pci_businit (int init){ char *v; tgt_putchar('P'); v = getenv("pciverbose"); if (v) { _pciverbose = 阅读全文
posted @ 2007-01-16 00:37 ajuanabc 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 在汇编的代码里,已经进行了串口初始化,在这里更进一步初始化串口,它是通过调用下面的代码实现的:#define SUPERIO_CFG_REG 0x85上面定义南桥里串口寄存器地址。static void initSerial(void){ pcitag_t tag; char confval,val; /*使能串口 * 这个需要在汇编代码serialinit中设置 * */#define E2_EPP 2#define E2_S1 (1<<2)#define E2_S2 (1<<3)#define E2_FLOPPY (1<<4) /*配置super io* 阅读全文
posted @ 2007-01-14 23:44 ajuanabc 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 在深圳,今年的冬天来得特别迟,比往年都显得异常暖和,但前几天一股寒冷的北风吹来,猛烈地狂扫华南,好像在提醒人们冬天来了,深圳电视台也特别地播放气象台发布的寒冷警告。忙忙忙碌碌的深圳,快节奏的生活,人们好像不在意这些变化。 这么寒冷的天气里,我还在热情地盼望着我的龙芯电脑到来。“来了,来了。”听到快递员急促的脚步声。时间已经到了晚上6点钟,还好有这么敬业的快递员,都已经下班时间了,还能快速地把我的龙芯电脑拿过来给我。等待了一个多月的龙芯电脑来了,心里实在太高兴了,还是第一次使用国产高性能的CPU--龙芯。赶紧把盒子拿来,身边的小女儿跑得飞快,早就把盒子给我拿过来了。为了留住美好的回忆,就把未曾拆 阅读全文
posted @ 2007-01-11 14:16 ajuanabc 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 目前在个人电脑里,主板上使用局部总线技术把不同的设备连接在一起,这样就可以随时添加设备到总线上。比如主板上一般都有很多PCI插槽,可以插入显示卡、声卡、网卡以及符合PCI总线标准的其它设备。当然,还有很多低速的外围设备不能直接跟PCI局部总线相连接的,比如IDE硬盘、软盘、USB、键盘、鼠标等等,这样就需要一样东西把这些设备转换才能连接到PCI局部总线上,这个东西就是南桥的芯片。在龙芯电脑里采用的南桥是VT82C686,在汇编已经初始化它的串口输出,在这里会更进一步初始化其它功能。现在就来看代码,分析它怎么样实现的。如下:voidtgt_devinit(){ SBD_DISPLAY(" 阅读全文
posted @ 2007-01-11 00:05 ajuanabc 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 由于不同的主板,芯片配置的不一样,因此参数也不一样,那么就要保存一些参数在Flash里面,以便配置硬件。现在就看关于这方面的代码,如下:voidenvinit (){ int i; SBD_DISPLAY ("MAPV", CHKPNT_MAPV); /* extract nvram variables into local copy */ bzero (envvar, sizeof(envvar)); tgt_mapenv (_setenv); envinited = 1; SBD_DISPLAY ("STDV", CHKPNT_STDV); /* s 阅读全文
posted @ 2007-01-08 21:55 ajuanabc 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 继续分析原来的代码,现在已经进入一个比较重要的函数dbginit(),因此这个函数相当复杂的功能调用。/* *Init PMON and debug */ cpuinfotab[0] = &DBGREG; dbginit(NULL);第一行代码cpuinfotab[0]保存DBG寄存器值,主要包括32个通用寄存器和CP0的32寄存器,以及两个乘法除法这寄存器。现在就来仔细地查看dbginit(NULL)的实现,代码如下:/**PMON2000 entrypoint. Called after initial setup.*/voiddbginit (char *adr){ int me 阅读全文
posted @ 2007-01-07 19:44 ajuanabc 阅读(343) 评论(0) 推荐(0) 编辑
上一页 1 ··· 175 176 177 178 179 180 181 182 183 ··· 191 下一页