la a2,boot_cpu_hartidREG_Sa0,(a2)/* 初始化页表,然后重定向到虚拟地址 */la sp,init_thread_union+THREAD_SIZEmv a0,s1 call setup_vm// 跳转到C函数setup_vm,setup_vm会创建临时页表#ifdefCONFIG_MMUla a0,early_pg_dir call relocate//重定向,实际就是开启MMU#endif/* CONFIG_MMU */call setup_...
--调用mret指令,hardid和next_arg1作为第1-2参数启动u-boot。 在u-boot起始阶段,将hartid和next_arg1保存到gd_t中: _startmvtp, a0mvs1, a1 SREG s1, GD_FIRMWARE_FDT_ADDR(gp)/*save the boot hart id to global_data*/SREG tp, GD_BOOT_HART(gp) 3 u-boot到Linux uboot启动Linux: bo_bootm...
编译kernel: cd linux-6.11.4 make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- defconfig make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- -j12 编译完成后生成arch/riscv/boot/Image文件 05—编译rootfs 我直接使用buildroot编译rootfs,省得手动建立相应目录和文件了,buildroot官网下载最新的buildroot: 下载...
在启动RISC-V Linux之前,需要先运行opensbi,因此应该把opensbi放到地址0x0处,这样芯片上电后,就会从0x0地址处执行opensbi。在opensbi运行完后,会跳转到opensbi运行地址偏移2M的位置去执行下一级boot(这里下一级boot是kernel),即跳转到0x200000地址处运行kernel,因此应该把kernel放到内存的0x200000处。 内存分布示意图...
COMX:为当前烧录串口,bl616/bl618 在 boot 模式下,USB 自带 usb-ttl 功能,可用于下载。在 windows 系统下为COM20(根据自己电脑上的串口号填写),Linux 系统下为 /dev/ttyxxx。 GUI工具烧录 打开bouffalo_sdk\tools\bflb_tools\bouffalo_flash_cube 目录,运行 BLFlashCube.exe 启动 GUI 烧录工具。
RISC-V下SPL->OpenSBI-OPTEE-Linux启动流程如下: M-Mode:u-boot-spl加载u-boot.itb文件,启动OpenSBI。 M-Mode->S-Mode:OpenSBI通过mret跳转到OPTEE执行,启动TOS。 S-Mode->M-Mode:OPTEE启动完后,通过ecall返回到执行OpenSBI。 M-Mode->S-Mode:OpenSBI通过mre启动u-boot。
在RISC-V体系结构中,U-Boot不仅可以作为独立的引导加载程序使用,还可以用来引导RISC-V Linux内核。具体步骤如下: 配置U-Boot:首先,需要配置U-Boot以支持RISC-V体系结构和RISC-V Linux内核。这通常需要在U-Boot的源代码中进行一些修改和配置。 编译U-Boot:配置完成后,编译U-Boot生成可执行文件。编译过程中需要指...
又比如Linux定义了设备规则等等: 而risc-v虽然目前芯片种类少,但是也需要制定一些启动规则,于是有了下面的规则: 当有了opensbi后,再回头看启动流程,与aarch64之间进行一个对比: aarch64借助atf框架,从EL3跳转到EL1,并启动u-boot。 对于riscv,上图是一个标准的加载启动流程,其中Opensbi提供了M模式的运行时库。
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指向的是解压后的交叉编译工具链的路径。编译完成之后,可以...