摘要:
前面已经介绍进入C语言世界,就会实现更多的功能,支持更多的应用。现在就来仔细地分析源程序,并且理解各部份功能实现。首先来看看下面的函数:/** Returns the external clock frequency, usually the bus clock*/inttgt_cpufreq(){ if(md_cpufreq == 0) { _probe_frequencies(); } return(md_cpufreq);}这个函数实现检测CPU运行的频率和总线的频率。这里又调用函数_probe_frequencies()来探测CPU和总线的频率,再跟踪到那个函数的实现。如下:stati 阅读全文
摘要:
经历了漫长的汇编之路,最终走到光明的C世界了,进入高级语言环境,会让开发更方便,写更少的语句就可以实现更多的功能。从这里开始,就初始化PCI局部线所有设备,初始化南桥所有的功能,初始化IDE硬盘,初始化网络,初始化显示卡,并进入响应命令阶段。下面就来分析C函数部份功能,当然它还有时需要调用汇编子函数才能实现特殊的功能。从上次分析移动代码里,就知道代码已经移到0x8000 0000开始运行了。voidinitmips(unsigned int memsz){ /* *Set up memory address decoders to map entire memory. *But first m 阅读全文
摘要:
前面已经初始化内存和龙芯的缓存,那么现在已经差不多把新房子已经建立好了,要进入新房居住了。在SDRAM里的存取速度比ROM里快很多,并且可以随时修改数据,而在ROM是不能修改的,就算可以修改,也是非常慢的。从上面初始化缓存回来后,就运行到下面的程序:#####xuhua########open cp1 #if 1 mfc0 t0,COP_0_STATUS_REG and t0,0xdbffffff or t0,t0,0x24000000 mtc0 t0,COP_0_STATUS_REG#endif#################上面的程序打开了CP1处理器,也就是浮点处理器。先从状态寄存器. 阅读全文