问题
usb无法识别
windows显示无法识别的usb设备
解决:
卸载设备,插拔一下,就可以识别了,之后就会自动安装驱动。
umount失败
fuser ./d2
可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.
kill -9 pid
mount失败
mount: /home/book/lichee/pro/sd/d2: wrong fs type, bad option, bad superblock on /dev/sdb2, missing codepage or helper program, or other error
原因:挂载时未格式化,使用的文件系统格式不对
参考官方分区说明
sudo fdisk -l # 首先查看电脑上已插入的TF卡的设备号
sudo umount /dev/sdXx # 若自动挂载了TF设备,请先卸载
sudo fdisk /dev/sdX # 进行分区操作
# 若已存分区即按 d 删除各个分区
# 通过 n 新建分区,第一分区暂且申请为32M(足够大了...),剩下的空间都给第二分区
# w 保存写入并退出
sudo mkfs.vfat /dev/sdX1 # 将第一分区格式化成FAT
sudo mkfs.ext4 /dev/sdX2 # 将第一分区格式化成EXT4
分区2还是无法挂载,报错依旧如上。
最终解决方案:
sudo dd if=Nano_tf_480272.dd of=/dev/sdb && sync
这样就帮你分区好了 所有文件也都在里面了。把自己的文件考进去替换就行,临时解决方案,免去了分区的问题,这个还是要仔细分析下原因。
spi flash启动失败
所有flash文件都测试了 一样的现象;网上查资料说是spi时钟频率太高~ 瞎说
调试代码
解决:
当前uboot对应的spi flash为华邦的w25q128,但是板子上贴的上xt25f128b,所以要修改uboot的设备树,有点坑。。。
-
修改设备树arch/arm/dts/suniv-f1c100s-licheepi-nano.dts
flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "winbond,xt25f128b", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <40000000>; };
-
修改设备文件drivers/mtd/spi/spi_flash_ids.c
屏蔽掉w25q128,新增如下xt25f128b
{"xt25f128b", INFO(0x0b4018, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP | SECT_4K) },
-
启动配置
-
重新编译烧写即可
解压rootfs到第二分区的时候软连接报错
原因:
由于u盘是在windows下格式化的,格式为fat32,所以不支持软连接,应该改为ext4格式,但是尝试后并不成功,范围导致了挂载失败。
最终解决方案:
sudo dd if=Nano_tf_480272.dd of=/dev/sdb && sync
这样就帮你分区好了 所有文件也都在里面了。把自己的文件考进去替换就行,临时解决方案,免去了分区的问题,这个还是要仔细分析下原因。
Waiting for root device /dev/mtdblock3…
解决:
内核配置中增加
caching block device access to MTD devices必须加 我就是卡在这
VFS: Cannot open root device “mtdblock3” or unknown-block(31,3): error -19
这个问题是文件系统格式导致的,在内核配置中增加 jffs2 的支持
这个是我最后一个坑 启动成功了。
docker
命令行显示路径
/etc/profile中加入
export PS1='[\u@\h: \w\a\]$'
编译程序无法执行 提示找不到脚本
在板子上跑的程序用文件系统的编译器来编,不能用之前的工具链,否则运行失败
/home/book/lichee/buildroot-2017.08/output/host/bin/arm-linux-gcc