摘要: 2007/3/10 20:05:31mips乘法 和中断的联系: 由于 mips是precise中断机制,当有如下指令 mflo $8 mult $9, $10 如果在执行mflo的时候发生异常,由于mips是pipeline的,而且mult指令在另外一条流水线上执行,所以异常并不会终止 mult的指令,当异常执行完的时候,从新执行mflo,lo寄存器已经被mult的结果替换了,这样就破坏了precise的原则,就是指令 异常的时候,cpu的寄存器不能被破坏 解决方法是在mflo和mult之间多放几条指令,这样当mflo异常的时候,mult还没开始执行,所以重新执行mflo的时候,lo寄存器就 阅读全文
posted @ 2011-04-05 13:51 konggang 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 2006/9/17 12:42:52 项目进展比较缓慢,一方面是工作比较忙,还有一个原因是我喜欢上了遛弯:),所以有几个星期没有动键盘了,很多细节都忘了:(多线程化的难度比我想象的要大,这个工作主要有两方面,1.让各个模块的代码独立开来,2.消息传递的实现.由于以前的代码就没有考虑到用多线程来实现,所以各个模块公用了大量共享变量,而且没有使用锁,目前没有什么好的办法,先把各个模块用线程跑起来,然后用锁让他们按照严格的顺序线性执行,也就是说先把多线程的模型先搭建起来,共享变量在以后慢慢加锁或去除. zhou yajin发来邮件,说他已经基本完成l4kernel在simbcm上的移植,这是一个令人 阅读全文
posted @ 2011-04-05 13:50 konggang 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 新的网址是:simbcm.sourceforge.net 阅读全文
posted @ 2011-04-05 13:50 konggang 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 2006/8/4 22:21:14对makefile ,autoconfig等已经无比厌烦了,想看看有没有替代工具,于是发现了SCons(http://www.scons.org/),试用了一下,感觉不错,简单易用,重要的是统一的语法,我准备用它来重新构建simbcm,感谢Steven Knight,让我又一次感觉到编写代码的快乐:) 阅读全文
posted @ 2011-04-05 13:49 konggang 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 2006/8/1 23:44:37目前模拟器已经比较稳定了,我已经经常使用它来调试内核和bootloader了,使用比较顺手,但目前它的软件结构不清晰,模块化不够,很不符合我的思维习惯和 我对体系结构的理解,我决定按我自己的理解做一次大的调整, 整个模拟器的结构应该是: while(1) { cpu.run(); mem.run(); uart.run(); ...... } 把cpu,mem等芯片完全模块化,这样感觉结构会清晰很多,而且也比较符合真实机器的结构. 另外,目前cpu的模拟我觉得也需要做一些调整,感觉思路有点混乱.预计工作量不会很大,但假如修改过程中引入了bug,哪就不好估计开发 阅读全文
posted @ 2011-04-05 13:48 konggang 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 2006/7/21 23:36:05目前是直接读取elf格式的cfe,然后根据elf的内容把代码和数据写到rom里面,实际上是实现了一个elf可执行文件loader,我觉得这种方式 不太符合一般嵌入式开发人员的思维习惯,我决定在初始化rom的时候,把cfe的binary文件直接拷贝到rom里面,这样就和一般的开发板很相似了.刚开始这样做的时候遇到了一点麻烦,发现cfe启动不了了,用remote gdb跟了一下,发现在env_envvars的值是0,所以在env_findenv里面跑飞了,但是实际上env_envvars是初始化了的queue_t env_envvars = {&env_ 阅读全文
posted @ 2011-04-05 13:47 konggang 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 2006/7/13 22:32:03 在开发过程中,很容易遇到bootloader或kernel跑飞情况,有时候这样的bug很难抓,实在没有办法的时候,可以把指令执行的过程完全记录下来,这样便可以看到从什么地方开始出错,增加这个功能主要就是为了处理这样的情况. 比如我可以指定从某个地址(或函数)开始记录指令,到某个地址(或函数)结束,以下就是记录从启动地址开始的10条指令 1 0: PC 0xffffffffbfc00000: beq zero,zero,0xffffffffbfc005a0 2 0: PC 0xffffffffbfc00004: sll zero,zero,#0 30: PC 阅读全文
posted @ 2011-04-05 13:46 konggang 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 2006/7/3 13:38:44 稍微改了一下程序,simbcm支持remote gdb 的ctrl+c了,又添加了几个调试命令,现在感觉开发起来哗哗滴,接下来准备再把cfe重新移植一遍。以前属于快速原型开发,这一轮要保证模拟的正确性和完整性,但仍然不会进行性能上的优化. 阅读全文
posted @ 2011-04-05 13:46 konggang 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 006/6/27 22:54:03 这段时间工作比较忙,项目进展比较缓慢,主要是在gdb 的 remote target上增加了些命令,基本框架已经完工,剩下的工作就是逐步添加命令了,我觉得添加了这些命令以后,开发模拟器就很方便了.以前在开发模拟器的时 候,需要开两个gdb,一个cross gdb用于调试内核或bootload,另一个host gdb用于调试模拟器本身,看模拟器解释指令对不对,很麻烦,现在在cross gdb里面增加了指令以后,就可以不需要host gdb了,直接在cross gdb里面给simbcm发送消息,查看simbcm内部状态.比如,我想查看机器1的uart 控制器0的 阅读全文
posted @ 2011-04-05 13:45 konggang 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 2006/5/28 9:30:46 昨天从新装了linux系统,需要从新安装开发环境,这个过程折腾了我半天时间,出了很多意想不到的问题,连我这个发起者都感觉安装复杂,那新来者呢? 所以我需要用python做一个安装程序,让开发环境的搭建简单些.KISS, 我想应该是这个项目应该遵循的一个原则. 另外,zhou yajin 提议这个项目的名称改为SimBCM,我觉得这个名字很好,以后项目的名字就是SimBCM了.通过短时间的接触,感觉zhou yajin是一个能力很强,而且执行力也很强的同学,希望这个项目在我们的共同努力下能有所作为 阅读全文
posted @ 2011-04-05 13:45 konggang 阅读(158) 评论(1) 推荐(0) 编辑