文章目录
一、Ubuntu部分
1.1 弹出SD卡
sudo sync && eject /dev/sdX # X:一般是b(/dev/sdb)
常用记录:
sudo sync && eject /dev/sdb
1.2 找文件
由文件名找(find)
find <检索路径> <选项> <搜索内容>
参数(不整多了,整多了不想看):
- -name:根据文件名查找(精确查找)
- -iname:根据文件名查找,但是不区分大小写
本目录下查找:
find ./ -name "youwantfilename.hex"
在指定目录下找某个文件:
find /home/liefyuan -name "youwantfilename.hex"
找二进制文件(which)
liefyuan@ubuntu:~/Liefyuan/v3s-wifi/rootfs-temp/rootfs/etc$ which mkdir
/bin/mkdir
1.3 文件目录树
显示一层目录
tree -L 1
显示两层
tree -L 2
1.4 打包和解包
在本目录下将本目录下的所有文件都打包成一个文件
sudo tar -zcvf rootfs.tar.gz *
将压缩包文件解压到指定的目录下:
sudo tar -zxvf rootfs.tar.gz -C /media/liefyuan/rootfs/
1.5 改变权限
改变文件权限
sudo chmod 777 file
改变目录时长
就把目录下所有的文件都一起改变了
sudo chmod -R 777 directory
1.6 文件大小
本目录下的文件大小
du -sh
1.7 真常用不能忘记的软件:
- GParted:用来给SD卡进行分区的软件
- Disk Usage Analyzer:用来查看Ubuntu虚拟机存储空间的。
二、嵌入式Linux根文件下
2.1 进入文件系统不需要密码
编辑根文件系统下的:/etc/inittab
文件
添加:::respawn:-/bin/sh
如下:
# Put a getty on the serial port
#console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
::respawn:-/bin/sh
2.2 测试屏幕
不确定屏幕驱动有没有搞好,就测试一下呗:
满屏雪花
cat /dev/urandom > /dev/fb0
清屏
cat /dev/zero > /dev/fb0
色条显示
echo 8 > /sys/class/disp/disp/attr/colorbar
2.3 电容屏没有反应,需要校准一下
进入tslib/bin目录下:
./ts_c
2.4 查看系统系统信息
uname -a
2.5 查看CPU信息
cat /proc/cpuinfo
三、SD卡部分操作
3.1 烧录Uboot的bin文件
-
使用dd命令将bin文件烧录到SD卡的开始位置(分区时该区域需要预留出来不要格式化):
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
-
安全的弹出SD卡:
sync && eject /dev/sdb
-
/dev/sdx请替换为实际的TF卡设备文件名。
-
sync命令可以确保数据成功写到TF卡中,eject命令用于弹出TF卡。
注意:因为这个u-boot-sunxi-with-spl.bin文件比较大,所以在设置SD文件分区时需要在boot分区前预留至少3MiB的空间用来存放U-Boot文件。
已经做好的文件系统打个包
- 进入SD卡文件系统分区的目录下(/media/liefyuan/rootfs)在目录下进行打包操作
- 命令打包:
sudo tar -zcvf rootfs.tar.gz *
- 将这个压缩包解压到指定的目录(解压到SD卡的文件系统分区):
sudo tar -zxvf rootfs.tar.gz -C /media/liefyuan/rootfs/
查看编译出来的文件
- readelf工具是在GNU binutils工具集里面的
sudo apt-get install readelf
- 查看文件头:
readelf -h targetApp
- 查看依赖库:
readelf -d targetApp
$ readelf -h targetApp
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: ARM
Version: 0x1
Entry point address: 0x10381
Start of program headers: 52 (bytes into file)
Start of section headers: 5732 (bytes into file)
Flags: 0x5000402, Version5 EABI, hard-float ABI, <unknown>
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 8
Size of section headers: 40 (bytes)
Number of section headers: 38
Section header string table index: 35
编译相关
交叉编译器的位置:
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf
查看交叉编译的版本:
arm-linux-gnueabihf-gcc -v
交叉编译应用程序:
arm-linux-gnueabihf-gcc app.c -o app
查看交叉编译出来的文件格式
$ readelf -h gpio
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: ARM
Version: 0x1
Entry point address: 0x103b1
Start of program headers: 52 (bytes into file)
Start of section headers: 5892 (bytes into file)
Flags: 0x5000402, Version5 EABI, hard-float ABI, <unknown>
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 8
Size of section headers: 40 (bytes)
Number of section headers: 38
Section header string table index: 35