摘要: 1.object-c 怎么实现多态答:多态是在runtime里面实现的,在编译的时候,compiler把所有class的定义都存放在class 实例对象里面,class实例对象包含了class的父class 实例对象的地址,class方法的select id和地址, class变量的偏移等。所有new出来的object都是从NSObject继承过来的,所以所有对象都自动包含了一个isa的指针,这个指针在调用alloc为object分配地址的时候被指向class对象的地址,在运行的时候,我们调用class 方法是通过给object发送消息[myobj method]这样的形式,但编译器会把这句话 阅读全文
posted @ 2011-04-05 16:03 konggang 阅读(1906) 评论(0) 推荐(1) 编辑
摘要: 1.为什么perl的库有的是.pl的有的是.pm的?答:.pl是一种比较老的形式的库的形式,.pm是一种新的形式。在导入这些库的时候,.pl只能用require导入,而.pm可以用require和use两种方式导入。2.require 和use又什么区别?答:require和use的共同目的都是用来装载库的,他们有点像c语言的动态装载和静态链接之间的关系,require动态装载库,也就是在perl程序运行时才装载perl库文件,use可以理解为静态连接,也就是perl脚本在编译的时候就装载了perl库。require可以装载.pm和.pl两种库,但use只能装载.pm库。use装载.pm 的时 阅读全文
posted @ 2011-04-05 15:07 konggang 阅读(530) 评论(0) 推荐(0) 编辑
摘要: 1 阅读全文
posted @ 2011-04-05 14:39 konggang 阅读(305) 评论(0) 推荐(0) 编辑
摘要: binary格式的文件其实就是把elf格式的文件头去掉,然后把各个segment按文件头的长度要求用0补齐写到binary文件里面。 所以在加载binary文件的时候,还是要加载到elf entry 指定的地址,由于加载地址没有改变,所以binary里面的代码引用的地址也不需要改变 阅读全文
posted @ 2011-04-05 13:54 konggang 阅读(540) 评论(2) 推荐(1) 编辑
摘要: 2007/3/10 20:36:371.建立一个initramfs的 file list,2.然后linux-$(VERSION)/usr目录下的gen_init_cpio 会生成一个cpio文件,这个文件就包含了所有initramfs文件和目录层次结构.当系统启动的 时候内核执行populate_rootfs,调用unpack_to_rootfs把cpio的文件一个一个拷贝到rootfs中,3.要注意安装klibc的时候,dash/mkbuiltins开头调用mktemp有误,应改为一下代码 tempfile=tempfile if ! type tempfile > /dev/nul 阅读全文
posted @ 2011-04-05 13:54 konggang 阅读(430) 评论(0) 推荐(0) 编辑
摘要: 2007/3/10 20:33:01如果cache只有4k,和物理页一样大,那么其实进行index还是相当于用物理地址进行的.所以只有cache大于系统物理页的大小的时候才会出现cache alias,如果cache式8k,那么cache alias只可能出现在两个地方.所以,如果我们要避免cache alias,只需要保证多个virtual addr 产生的index一样就可以了. 比如,系统物理页是4k,cache是8k,那么我们只要保证虚拟地址的0到13bit一样就可以保证这么多个virtaul addr不会产生cache alias,因为他们的index都一样所以,如果我们要申请虚拟地 阅读全文
posted @ 2011-04-05 13:53 konggang 阅读(1523) 评论(0) 推荐(0) 编辑
摘要: 2007/3/10 20:15:53mips 开中断过程__asm__ (" .macro local_irq_enable \n"" .set push \n"" .set reorder \n"" .set noat \n"#ifdef CONFIG_CPU_MIPSR2" ei \n"#else" mfc0 $1,$12 \n" //取得 status寄存器的值" ori $1,0x1f \n" //现把所有的位设置为1" xori $1, 阅读全文
posted @ 2011-04-05 13:52 konggang 阅读(715) 评论(0) 推荐(0) 编辑
摘要: 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 阅读(627) 评论(0) 推荐(0) 编辑
摘要: 新的网址是:simbcm.sourceforge.net 阅读全文
posted @ 2011-04-05 13:50 konggang 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 2006/9/17 12:42:52 项目进展比较缓慢,一方面是工作比较忙,还有一个原因是我喜欢上了遛弯:),所以有几个星期没有动键盘了,很多细节都忘了:(多线程化的难度比我想象的要大,这个工作主要有两方面,1.让各个模块的代码独立开来,2.消息传递的实现.由于以前的代码就没有考虑到用多线程来实现,所以各个模块公用了大量共享变量,而且没有使用锁,目前没有什么好的办法,先把各个模块用线程跑起来,然后用锁让他们按照严格的顺序线性执行,也就是说先把多线程的模型先搭建起来,共享变量在以后慢慢加锁或去除. zhou yajin发来邮件,说他已经基本完成l4kernel在simbcm上的移植,这是一个令人 阅读全文
posted @ 2011-04-05 13:50 konggang 阅读(224) 评论(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) 编辑
摘要: 现象: 在cfe中,当给网卡配上ip地址以后,外面可以ping -f,但系统启动以后,用initramfs中的ipconfig配上网卡后,发现不能ping通虚拟机,用tcpdump发现arp的通信是正常的,通过调试,发现在sb1250的驱动中有 len = (int)G_DMA_DSCRB_PKT_SIZE(dsc->dscr_b) - 4;在收到包的时候会把dma传过来的长度减去4,查资料发现这个是crc的长度,由于在arp处理过程中没有检查skb的长度,所以,arp的通信正常,但在 ip_rcv中检查长度了,所以包被丢弃.在网卡模拟程序中加上crc的长度,问题解决.还可以用ping 阅读全文
posted @ 2011-04-05 13:44 konggang 阅读(196) 评论(0) 推荐(0) 编辑
摘要: screen shot of new version2006/5/24 8:05:43[root@localhost app]# ./simos==================================sibyte simulator hardware configration============================SIBYTE SIM MACHINE CONFIGRATION:machine num: 1max cpus per machine: 2max ether controller per machine: 3cell mode : offprom path 阅读全文
posted @ 2011-04-05 13:43 konggang 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 1.Fix some bugs, and the new version can run linux 2.6 and initramfs normally2. Clean the architecture of sibytesim, but it is not the end, the cleaning should goes further;3. Replace tcl with python, I'm satisfied with the job althoug it is not finished yet , because I need not to learn a new l 阅读全文
posted @ 2011-04-05 13:42 konggang 阅读(158) 评论(0) 推荐(0) 编辑