Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于ch9的疑问 #3

Open
pascalApple opened this issue Jan 22, 2022 · 6 comments
Open

关于ch9的疑问 #3

pascalApple opened this issue Jan 22, 2022 · 6 comments
Labels
help wanted Extra attention is needed

Comments

@pascalApple
Copy link

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

@pascalApple
Copy link
Author

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

@QQxiaoming
Copy link
Owner

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

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

@QQxiaoming QQxiaoming added the help wanted Extra attention is needed label Jan 23, 2022
@QQxiaoming
Copy link
Owner

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

我查了一下我打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

@pascalApple
Copy link
Author

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

@QQxiaoming
Copy link
Owner

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

loop次数增大一点看呢?

@QQxiaoming
Copy link
Owner

关于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导致这个问题出现?如果是这样的可以尝试修改此处。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
Development

No branches or pull requests

2 participants