unmatch boot from qspi

1:拉取代码

git clone "ssh://Gerrit账户@gerrit.eswin.cn:29418/sifive/freedom-u-sdk" && scp -p -P 29418 Gerrit账户@gerrit.eswin.cn:hooks/commit-msg "freedom-u-sdk/.git/hooks/"
cd freedom-u-sdk && git checkout w500-dev

注意:服务器地址为http://gerrit.eswin.cn/,第一次可能需要在gerrit上添加~/.ssh/id_rsa.pub

2:运行脚本

extract_tar.sh脚本,用于下载tar包,下载后需要解压到build下的downloads目录
start_cmd.sh脚本,创建build目录和启动bitbake服务

3:进行编译

cd build
touch conf/sanity.conf
MACHINE=unmatched bitbake demo-coreip-xfce4

注意:会在build/tmp-glibc/deploy/images/unmatched目录下产生相应的文件,后期烧录到板子上的文件在该目录下

4:进行烧录到sd卡或者NVME

xzcat demo-coreip-xfce4-xxx-rootfs.wic.xz | sudo dd of=/dev/sdX bs=512K iflag=fullblock oflag=direct conv=fsync status=progress
1:使用SD卡,将拨码开关拨到1011,插上sd卡,即可启动
2:使用NVME,目前需要先用sd卡启动开发板,然后在qspi中烧录相应的wic.xz文件,之后才可以不依赖sd卡,进行NVME启动

QSPI wic.xz文件

1:修改wks和extlinux.conf文件

wks文件:将后两个分区删除,不删除由于文件过大导致dd失败
conf文件:将root修改为/dev/nvme0n1p4

2:再次编译

MACHINE=unmatched bitbake demo-coreip-xfce4 -c clean
MACHINE=unmatched bitbake demo-coreip-xfce4 -c image_wic

3:wic.xz文件

    //通过sd卡启动开发板后
xzcat demo-coreip-xfce4-xxx-rootfs.wic.xz | sudo dd of=/dev/mtdblock0 bs=512K iflag=fullblock oflag=direct conv=fsync status=progress
	//此时使用 sudo fdisk -l 可以看到mtdblock0有两个分区

4:调节拨码开关

关机
拔出sd卡
拨码0110
插上NVME
开机

sifive unmatched开发板不支持从qspi启动,因此需要修改sifive unmatched的u-boot源码

1:进入源码

build/tmp-glibc/work/unmatched-oe-linux/u-boot/1_2021.07-r0/git

2:将以前的添加commit,主要是为了之后打patch做准备

git add .
git commit -v
git status   //这时候可以看见工作区是干净的

3:修改内容

1 arch/riscv/dts/hifive-unmatched-a00-u-boot.dtsi 添加如下内容
qspi0 {
	u-boot,dm-spl;
	flash@0 {
		u-boot,dm-spl;
	};
};

2 board/sifive/unmatched/spl.c 添加
	#define MODE_SELECT_SPI		0x6      //我们添加的
	switch (boot_device) {
		case MODE_SELECT_SPI:			//我们添加的
			return BOOT_DEVICE_SPI;	     //我们添加的

3 configs/sifive_unmatched_defconfig 添加如下配置信息
	CONFIG_SPL_SPI_FLASH_SUPPORT=y
			arch\arm\mach-davinci\spl.c  u32 spl_boot_device(void)
				#ifdef CONFIG_SPL_SPI_FLASH_SUPPORT
					case DAVINCI_SPI0_FLASH_BOOT:
					case DAVINCI_SPI1_FLASH_BOOT:
						return BOOT_DEVICE_SPI;
				#endif
	CONFIG_SPL_MTD_SUPPORT=y
			drivers\mtd\Makefile
				ifneq ($(mtd-y),)
				obj-$(CONFIG_SPL_MTD_SUPPORT) += mtd.o
				endif
	CONFIG_SPL_DM_SPI_FLASH=y
	CONFIG_SPL_SPI_LOAD=y
			board\ti\ks2_evm\board.c
            	u32 spl_boot_device(void)
				{
					#if defined(CONFIG_SPL_SPI_LOAD)
						return BOOT_DEVICE_SPI;
					#else
						puts("Unknown boot device\n");
						hang();
					#endif
				}
	CONFIG_SYS_SPI_U_BOOT_OFFS=0x104400
	CONFIG_SF_DEFAULT_MODE=0
	CONFIG_SPI_FLASH_ISSI=y

4 git diff > patch

4:修改meta-sifive

将生成的patch放到u-boot的对应目录下 meta-sifive/recipes-bsp/u-boot/files/riscv64/并重命名
修改append文件,meta-sifive/recipes-bsp/u-boot/u-boot_2021.07.bbappend,再合适的地方添加新patch

5:clean

 MACHINE=unmatched bitbake u-boot –c clean
 MACHINE=unmatched bitbake demo-coreip-xfce4 –c clean

6:compile and wic

MACHINE=unmatched bitbake u-boot –c compile
MACHINE=unmatched bitbake u-boot
MACHINE=unmatched bitbake demo-coreip-xfce4 –c image_wic

遇到的问题

1:sd启动,速度很慢,大概140s出现画面,nvme启动大概40s就能启动画面
2:目前已经实现不需要sd卡,只插nvme就能启动成功
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值