quard_star_tutorial icon indicating copy to clipboard operation
quard_star_tutorial copied to clipboard

关于ch9的疑问

Open pascalApple opened this issue 3 years ago • 6 comments

作者您好,我在学习您的ch9的时候遇到了一些问题,现象是build.sh可以编译,但是qemu的所有串口均无打印,我在lowlevelboot的start.S中手动添加了一些打印log的语句,发现这些语句能在serial3中产生输出。 个人怀疑原因可能是opensbi或者uboot未能成功加载 不知道您那边是否遇到过这种情况

pascalApple avatar Jan 22 '22 12:01 pascalApple

而且从打印的log来看似乎有两个核心参与到了load数据的过程中

pascalApple avatar Jan 22 '22 13:01 pascalApple

您好,我在作者 ch9 的时候遇到了一些问题,现象是 build.sh 可以编译,但是 qemu 的所有学生都没有打印,我在低级启动的开始打印。S中手动添加了一些日志的语句,这些语句能够在serial3中产生输出。 个人怀疑原因可能是opensbi或者uboot未能成功加载的情况你 不知道是否遇到过这种情况

我在开发过程中没遇到这个情况,一般如果类似的问题我会使用添加qemu选项-d in_asm -D qemu.log来跟踪一下boot启动阶段的关键跳转是否正确,你可以尝试下。

QQxiaoming avatar Jan 23 '22 04:01 QQxiaoming

从的过程中看起来似乎有两个重要参与者打印到加载数据的中

我查了一下我打tag的ch9节的代码,有通过csrr a0, mhartid来确保只有一个核心load,我印象了之前确实存在你说的这个问题,然后我在某一版本修复了,最终可能和博客章节有点对不上,你根据我的tag对应一下。

	.section .text
	.globl _start
	.type _start,@function
_start:
        csrr    a0, mhartid
	beq		a0, zero, _no_wait
_loop:
	loop	0x1000
	la		t0, _pen
	lw		t0, 0(t0)
	beq		t0, zero, _run
	j       _loop
_no_wait:
	la		t0, _pen
	la		t1, 1
	sw		t1, 0(t0)
	//load opensbi_fw.bin 
	//[0x20200000:0x20400000] --> [0xBFF80000:0xC0000000]
    li		a0,	0x202
	slli	a0,	a0, 20
    li		a1,	0xbff
	slli	a1,	a1, 20
	li		a2,	0x800
	slli	a2,	a2, 8
	add 	a1,	a1, a2
	add 	a2,	a1, a2
	load_data a0,a1,a2

QQxiaoming avatar Jan 24 '22 05:01 QQxiaoming

我对应了下本地的代码,和你上面发的那个一致 然后我这次加上了qemu的log,发现ch9,以及博客中的那个修复了文件缺失的commit,从log中打印的代码来看,都没能跑通启动的流程

pascalApple avatar Jan 31 '22 06:01 pascalApple

我对应了下本地的代码,和你上面发的那个一致 然后我这次加上了qemu的log,发现ch9,以及博客中的那个修复了文件缺失的commit,从log中打印的代码来看,都没能跑通启动的流程

loop次数增大一点看呢?

QQxiaoming avatar Feb 04 '22 02:02 QQxiaoming

关于ch9无法运行的问题,今天CSDN社区上的一位用户:lov1225给我发私信指出:lowlevelboot/startup.s:67的位置上,应将 slli a2, a2, 4 改为 slli a2, a2, 8 才能正确加载quard_star_sbi.dtb 512K的区域到ddr上,之前的错误导致只能加载32K。但我这边看到这节生成的dtb只有5k,所以我之前没有发现问题。所以是否你的环境生成的dtb超过32K导致这个问题出现?如果是这样的可以尝试修改此处。

QQxiaoming avatar May 12 '22 07:05 QQxiaoming