x210-2023-04-01
1、由于之前提到过使用的USB转网口虽然能用,但是在笔记本上会显示红叉,所以不能保证这个会不会给调试带来更多的不确定性,而且刚开始移植用的kernel是kernel.org的,所以在未开启以及添加对应的网络驱动之前,想要直接使用NFS去挂载根文件系统是不大现实的,所以只能选择ramdisk方式(因为ram是uboot阶段就初始化好的,但是随着后面的深入就可以知道,其实可以先由ramdisk方式挂载成功之后,直接在开发板这侧配置好板子的网络然后从开发板这端用mount -t nfs -nolock方式实现nfs挂载),但是《12-Linux内核-initramfs文件系统介绍》没有介绍到busybox底下如何打包成initrd.img.gz,虽然后面也硬着头皮制作出来了一个了,但是需要有一个uboot和kernel都已经正常运行的情况才能验证,所以后面直接移植并修改完了三星的那份uboot和kernel出来用来跑这个根文件系统(其实整个弄完回过头来看的时候,发现查阅的资料多起来之后其实还有更直接的方式来减少uboot和kernel之间传参错误带来的排查难度,那就是可以在内核make menuconfig之后的boot options使用内核自带参数而不用uboot的bootargs传参,这时需要选上Always use the default kernel command string,当然了,三星的由于两者适配度高可能用不上,这个体会其实是针对那些自改uboot和kernel所说的)。
2、通过ramdisk方式挂载上根文件系统之后,出现下图所示错误提示(不是指截图第一行的那个MMC错误,这个错误的上一行提到的是ext_csd出现错误,真要提这个错误的话就要去改内核里ext_csd的判断条件,这个应该在uboot移植中有见到过),回到下面图里的这个错误,需要将inittab文件的tty2::askfirst:-/bin/sh改成console::askfirst:-/bin/sh。
3、从开发板这侧能ping通ubuntu,但是tftp下载却失败,可是之前测试uboot时下载uImage镜像是可用的,经过重新安装(其实不用担心麻烦,因为已经安装过的内容会首先检查是否需要更新,如果是最新的系统就不会继续安装),然后检查tftp设置共享目录的配置,逐条比对发现共享目录路径有错误,这时想起了前一阵子由于规整文件及文件夹内容,所以调了一下原先tftp的共享目录放到了与原先位置同层的另一个文件夹下面,所以就出现了如今不能下载文件的问题。
4、出现以下错误是由于缺少对某些文件的读权限,改为使用sudo执行即可。
5、解决掉了uboot底下无法通过NFS下载文件到DDR,从网上找到的解决办法如下图。
6、yaffs2源码包编译错误,第一个是关于TIME_T未定义的问题,第二个是关于右移溢出的问题(这里需要注意的是强转需要在数据未进行右移之前,也就是要写成((u64)s->st_size) >> 32,即强转的是st_size本身,而不能写成(u64)(s->st_size>>32),这样就是对右移之后的数据进行强转,写成后面这种还是会报错的)。