mv s1, a1 la a2, boot_cpu_hartid 设置sp指针 la sp, init_thread_union + THREAD_SIZE 上述工作完成,会开始临时页表的创建,跳转到C函数setup_vm建立临时页表 mv a0, s1 call setup_vm // 跳转到C函数setup_vm,setup_vm会创建临时页表 重定向 #ifdef CONFIG_MMU la a0, early_pg_dir call relocate...
在RISC-V体系结构中,U-Boot不仅可以作为独立的引导加载程序使用,还可以用来引导RISC-V Linux内核。具体步骤如下: 配置U-Boot:首先,需要配置U-Boot以支持RISC-V体系结构和RISC-V Linux内核。这通常需要在U-Boot的源代码中进行一些修改和配置。 编译U-Boot:配置完成后,编译U-Boot生成可执行文件。编译过程中需要指...
4. Linux: 安装页表, 驱动载入 ,运行环境准备 。 5. init (Busybox) :启动 shell。 三、Boot Loader引导 1.Boot Room BootROM地址空间从0x10000开始(由配置文件中的BootROM Params值决定),并从地址0x10040开始执行(由BootROM Params中的链接器脚本和重置向量给出),该地址由BootROM程序集中的_hang标签标记。
(a3) add a3, a3, RISCV_SZPTR blt a3, a4, clear_bss clear_bss_done: /* 保存hatr id和dtb地址,hart id保存到a0,dtb地址保存到a1 */ mv s0, a0 mv s1, a1 la a2, boot_cpu_hartid REG_S a0, (a2) /* 初始化页表,然后重定向到虚拟地址 */ la sp, init_thread_union + THREAD_SIZE...
在启动RISC-V Linux之前,需要先运行opensbi,因此应该把opensbi放到地址处,这样芯片上电后,就会从地址处执行opensbi。在opensbi运行完后,会跳转到opensbi运行地址偏移2M的位置去执行下一级boot(这里下一级boot是kernel),即跳转到地址处运行kernel,因此应该把kernel放到内存的处。
uboot启动Linux: bo_bootm_linux boot_jump_linux kernel--使用images->ep地址,以gd->arch.boot_hart和images->ft_addr作为第1-2参数。 RISC-V kernel启动时保存a0/a1寄存器到s0/s1: _start _start_kernel mv s0, a0 mv s1, a1 setup_vm--以DTB物理地址为参数,配置页表映射。
我系统中已经编译制作好riscv的交叉编译工具链,交叉编译工具链的前缀为riscv64-unknown-linux-gnu-,因此,我们在编译riscv64平台的linux内核时,需要添加CROSS_COMPILE=riscv64-unknown-linux-gnu-选项。 编译完成后,在linux-5.2.4/arch/riscv/boot目录下就能找到编译后的内核镜像,分别为Image和Image.gz ...
la a2,boot_cpu_hartid 设置sp指针 la sp,init_thread_union+THREAD_SIZE 上述工作完成,会开始临时页表的创建,跳转到C函数setup_vm建立临时页表 mv a0,s1 call setup_vm// 跳转到C函数setup_vm,setup_vm会创建临时页表 重定向 #ifdefCONFIG_MMUla a0,early_pg_dir ...
图3:Linux启动进入shell 图4:运行CoreMark 香山是一款开源 RISC-V 处理器核,它的架构代号以湖命名。第一版架构代号是“雁栖湖”,第二版架构代号是“南湖”,“南湖” 采用中芯国际 14nm 工艺,目标频率是 2GHz,SPECCPU 分值达到 10 分 / GHz,支持双通道 DDR 内存以及 PCIe、USB、HDMI 等更多功能。
https://github.com/u-boot/u-boot 将代码下载后,进入目录输入 代码语言:javascript 代码运行次数:0 运行 AI代码解释 makeCROSS_COMPILE=riscv64-linux-qemu-riscv64_smode_defconfig makeCROSS_COMPILE=riscv64-linux--j4 这里需要注意的是CROSS_COMPILE指向的是解压后的交叉编译工具链的路径。编译完成之后,可以...