[V3s]lc-v3s-sdk从spinand启动切换到TF卡启动
- 
					
					
					
					
 背景某宝买的一块V3s板子 
  
 默认spinand启动, 想切换到从TF卡启动.探索过程于是把spinand flash先清空一下以排除干扰项, 参考《使用 PhoenixSuit 清空NAND,eMMC,Flash存储器》 尝试I将原来通过PhoenixSuit烧录的镜像(lc-v3s-sdk/tools/pack/cherrypi-v3s-linux.img), 直接用PhoenixCard4.2.7烧录到TF卡, 启动报: 无法启动输出.log 
  - 结合日志分析当前遇到什么问题?
 uboot应该应该正常启动; 应该是卡在uboot启动kernel的环节. uboot已经能发现5个mbr分区;
 sunxi flash read: start 18432, sector 128 <=> mmcboot read: start 0x4800, sector 0x80并且创建hash表, 一切正常; 注意到, uboot上对fat文件系统操作还算正常; 以下指令均正常 fatdown - download data to a dos filesystem fatinfo - print information about filesystem fatload - load binary file from a dos filesystem fatls - list files in a directory (default /)- 定位错误代码段
 u-boot-2011.09\fs\fat\fat_write.c file_fat_read (const char *filename, void *buffer, unsigned long maxsize){ do_fat_read (const char *filename, void *buffer, unsigned long maxsize, int dols){ get_vfatname(fsdata *mydata, int curclust, __u8 *cluster,dir_entry **retdent, char *l_name) { debug("Error: VFAT name is too long\n");分析错误, 有可能指向无法访问一些东西. 这需要我们进一步反推高层调用fat操作的意图, uboot并不太复杂, 所以把关注点放在bootcmd相关的指令上; 解决方案结合打包脚本的意图: 
  分析build_uboot()里的make参数sun8iw8p1_spinand_emmc 
  再结合分析uboot启动脚本并捣腾uboot里fat相关的工具, 发现其0:1分区是FAT格式. 
 uboot里emmc启动脚本是企图读取0:1分区里的uImage文件; 下图为uboot-env:
  遂通过TF读卡器接入电脑, 将编译好的uImage复制到该FAT分区---正常启动; 
 rootfs也顺利地从/dev/mmcblk0p7读出并加载;
- 结合日志分析当前遇到什么问题?
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号
