gcc -print-libxxx-file-name ,如: -print-libgcc-file-name 会输出libgcc所在的目录
tftp在线从虚拟机加载uImage, Fs, dtb:
uboot下执行以下命令将对文件加载到到嵌入式设备内存中:
方法: tftp MemoryAddress FileName
//
tftp 0x1000000 uImage_file; tftp 0x3000000 dtb_file; tftp 0x4000000 rootfs_file;
然后执行 bootm 0x1000000 0x4000000 0x3000000,系统就会从指定的内存去加载系统并启动。
2. 固化系统到flash
固化后的系统就可以直接自动启动不需要人工加载干预了,步骤如下:
tftp 0x100000 u-boot tftp 0x200000 fman tftp 0x300000 RCW
protect off all; erase all; //擦除所有flash的页
cp.b 100000 eff40000 c0000 //字节拷贝,源地址位0x100000, 目的地址0xeff40000 ,长度为0xc0000,文件长度在执行tftp加载到 //内存的命令时候会有打印输出可以查看到
cp.b 200000 eff00000 10000 cp.b 300000 e8000000 100
到这里uboot已经固化到nor flash了,重启板卡,uboot将从norflash穹启动,下面开始固化系统:
tftp 0x1000000 uImage_file tftp 0x3000000 dtb_file tftp 0x4000000 rootfs_file protect off all;
erase E9300000 +321BC76 //rootfs E9300000是要擦除的flash起始地址,321BC77 是要擦除的长度
erase E8800000 +956dd //dtb erase E8020000 +3c0d26 //uImage
擦除完flash后开始从内存拷贝系统到flash中
cp.b 1000000 E8020000 3c0d26 (uImage) cp.b 3000000 E8800000 956d //dtb cp.b 4000000 E9300000 321BC76 //rootfs
到此系统就固化到flash中了。需要自动加载还需要做最后一步,编辑bootcmd
editenv bootcmd
bootcmd=setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;setenv ramdiskaddr 0x02000000;setenv fdtaddr0x00c00000;setenv loadaddr 0x1000000;bootm $loadaddr $ramdiskaddr $fdtaddr
将loadaddr ramdiskaddr fdtaddr地址分别改为实际的flash对应的地址,这里是0xE8020000
0xE9300000 0xE8800000