Linux 移植日记 day2
2020-05-11 04:13
1191 查看
今日任务预测:完成cache以及TLB设计与异常处理
继续在尝试运行u-boot
Error:
bfc007a0: bc500000 cache 0x10,0(v0)
==============nemu registers================ $pc: 0xbfc007a0 $hi: 0x00000000 $lo: 0x00000000 $ninstr: 00000000 $instr: bc500000 $0 :0x00000000 $at:0x00000000 $v0:0x87fc0000 $v1:0x00000010 $a0:0x00000000 $a1:0x87ff8713 $a2:0x87ff8710 $a3:0x00000010 $t0:0xffffc83c $t1:0xf20f0000 $t2:0x00000004 $t3:0xfc000000 $t4:0x00000005 $t5:0x00000012 $t6:0xffffffff $t7:0x00000002 $s0:0xc83c0000 $s1:0x00038714 $s2:0x87f60000 $s3:0x87f60ef4 $s4:0x87fc0000 $s5:0x00000000 $s6:0x00000000 $s7:0x00000000 $t8:0x00000000 $t9:0x00000002 $k0:0x803fff50 $k1:0x00000000 $gp:0x00000000 $sp:0x803fbef0 $fp:0x803fbf50 $ra:0xbfc00c98 ==============nemu status end=============== cycle 8727277: pc: nemu:bfc007a0 <> pc:bfc00380
此处是当前写回的PC错误,发生这样的错误一般是上条指令正常执行后,下一条指令的取址出错。
故寻找上一条PC
bfc0079c: bc550000 cache 0x15,0(v0),也是同样的指令cache,但目前代码内cache和TLB并没有实现,所以应该去完善cache和TLB。
中断异常测试
Error:
bfc3ca60: 2694ca64 addiu s4,s4,-13724 bfc3ca64 <break_pc1>: bfc3ca64: 0000000d break
首先看上一条指令的addiu,我发现了我很久以来都没有明确mips的
addi和
addiu的
u的意义,于是我搜索了一下。
“MIPS32的ADDI和ADDIU的实现要点(加法指令)”感谢原博主!
上面的博文最后总结ADDI和ADDIU的实现有以下2个要点:
1)仅支持有符号运算(补码运算),16位立即数需要进行符号扩展;
2)ADDI带有溢出检测(或者说带“自陷”功能,虽然不常用)。
所以
u并不是有无符号,而是是否进行溢出检测
(下图出自上述博文,里面的c和c++对于整数的溢出情况处理原理以前也注意过)
-----------------------------------------------------------------------------------------------------------------------
框架更新分割线,上面的error是框架bug导致
-----------------------------------------------------------------------------------------------------------------------
框架更新:
- 合并了Linux和u-boot的编译与运行
- 把CP0的congfig1寄存器的TLB entries 砍掉了一半,从64变为32
- 更新了insttest测试集,为了模拟linux,加入了许多AdEL 和AdeD异常。
- 更新以前WBU的反馈逻辑,现在是根据CP0的中断异常反馈情况来决定是否写入,逻辑比之前更清晰
看来得先完成异常中断才能开始TLB了。
淡定路过的我 原创文章 19获赞 1访问量 698 关注 私信相关文章推荐
- yaffs2应用到较老版本linux上时的问题 (移植日记)
- yaffs2应用到较老版本linux上时的问题 (移植日记)
- linux移植日记-day5-中断向量表基地址的选择
- linux移植日记-day4
- 个人总结日记:ltv350三星LCD并行接口接2440处理器的linux驱动程序移植
- Linux芯片级移植与底层驱动
- linux平台针对tilepro36的BCM56334 SDK移植
- linux驱动实践(二)--linux3.0.46移植和NFS根文件系统
- ARM-Linux移植攻略--yaffs2 Partially written block xxx detected 问题解决
- proxool移植到linux上出现的错误(2)
- 关于tty驱动从linux2.6.30版本移植到linux2.6.14的问题
- 嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得
- OpenCV ARM移植(交叉编译opencv) arm-oe-linux-gnueabi-gcc编译opencv3.1.0
- 移植linux3.7到nuc900系列开发板遇到的问题
- 【TINY4412】LINUX移植笔记:(22)设备树LCD按键驱动
- linux系统移植之nand ecc错误
- ACE网管平台移植Linux
- 基于S3C2440的Linux-3.6.6移植——解决LCD自动关闭
- linux 2.6 USB 驱动移植心得 (转贴)