nuc972-rootfs

rootfs准备

本项目是为船制作一个图形化的操作界面,显示发动机等各个参数,芯片采用nuc972。本文介绍如何制作包含QT应用的rootfs

编译QT APP

在Ubuntu中交叉编译QT APP,此APP依赖两个外部库

  1. libmodubs : 485串口通信
  2. libqwt : 曲线图

在QMAKE(.Pro)文件中修改对应库的路径为本地路径后在进行编译

qmakefile

添加APP到rootfs

  1. 将app移动到rootfs文件夹中的某一位置,这里路径是:

    1
    rootfs/usr/qt_demo
  2. 将依赖的两个库移动到对应的目录,目录如下:

    1
    rootfs/usr/local/qt/lib
  3. 由于rootfs中缺少QtSvg库,所以将qt4.8.5-arm中的libQtSvg也移动到上方的目录,文件如下:

    1
    2
    3
    qt4.8.5-arm/lib# ls libQtSvg*
    libQtSvg.la libQtSvg.so libQtSvg.so.4.8
    libQtSvg.prl libQtSvg.so.4 libQtSvg.so.4.8.5
  4. 考虑到rootfs的大小,我移动时只移动了动态库,最终文件列表如下,可供参考:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    rootfs/usr/local/qt/lib# tree -L 1
    .
    ├── fonts
    ├── libmodbus.so
    ├── libmodbus.so.5
    ├── libmodbus.so.5.1.0
    ├── libQtCore.la
    ├── libQtCore.prl
    ├── libQtCore.so -> libQtCore.so.4.8.5
    ├── libQtCore.so.4 -> libQtCore.so.4.8.5
    ├── libQtCore.so.4.8 -> libQtCore.so.4.8.5
    ├── libQtCore.so.4.8.5
    ├── libQtGui.la
    ├── libQtGui.prl
    ├── libQtGui.so -> libQtGui.so.4.8.5
    ├── libQtGui.so.4 -> libQtGui.so.4.8.5
    ├── libQtGui.so.4.8 -> libQtGui.so.4.8.5
    ├── libQtGui.so.4.8.5
    ├── libQtNetwork.la
    ├── libQtNetwork.prl
    ├── libQtNetwork.so -> libQtNetwork.so.4.8.5
    ├── libQtNetwork.so.4 -> libQtNetwork.so.4.8.5
    ├── libQtNetwork.so.4.8 -> libQtNetwork.so.4.8.5
    ├── libQtNetwork.so.4.8.5
    ├── libQtSql.la
    ├── libQtSql.prl
    ├── libQtSql.so -> libQtSql.so.4.8.5
    ├── libQtSql.so.4 -> libQtSql.so.4.8.5
    ├── libQtSql.so.4.8 -> libQtSql.so.4.8.5
    ├── libQtSql.so.4.8.5
    ├── libQtSvg.so
    ├── libQtSvg.so.4
    ├── libQtSvg.so.4.8
    ├── libQtSvg.so.4.8.5
    ├── libQtTest.la
    ├── libQtTest.prl
    ├── libQtTest.so -> libQtTest.so.4.8.5
    ├── libQtTest.so.4 -> libQtTest.so.4.8.5
    ├── libQtTest.so.4.8 -> libQtTest.so.4.8.5
    ├── libQtTest.so.4.8.5
    ├── libQtXml.la
    ├── libQtXml.prl
    ├── libQtXml.so -> libQtXml.so.4.8.5
    ├── libQtXml.so.4 -> libQtXml.so.4.8.5
    ├── libQtXml.so.4.8 -> libQtXml.so.4.8.5
    ├── libQtXml.so.4.8.5
    ├── libqwt.so
    ├── libqwt.so.6
    ├── libqwt.so.6.1
    ├── libqwt.so.6.1.2
    ├── libstdc++.so.6
    └── pkgconfig

创建libts的链接文件

由于运行QT APP需要libts.so.0但是rootfs中没有所以需要我们提前创建:

1
2
cd rootfs/usr/local/tslib/lib
ln libts-1.0.so.0.0.0 libts.so.0

添加环境变量

修改/rootfs/etc/profile如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf 
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE="/usr/local/tslib/etc/pointercal"
export TSLIB_CONSOLEDEVICE="none"

export PATH=$PATH:/usr/local/tslib/bin
export PATH=$PATH:/usr/local/tslib/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/tslib/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qt/lib

export PATH=$PATH:/usr/local/qt/lib

export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

export QWS_DISPLAY="LinuxFB:mmWidth200:0"
export QWS_SIZE="800x480"

添加开机启动

在/rootfs/etc/init.d/rcS末尾中添加:

1
./usr/qt_demo/app_mprm1007ls -qws  &

rootfs制作

使用mkyaffs2命令制作rootfs,命令如下:

1
mkyaffs2 --inband-tags -p 2048 rootfs rootfs_yaffs2.img

mkyaffs2的使用方法参考开发板入门教程


nuc972-rootfs
https://carl-5535.github.io/2023/02/07/工作总结/nuc972-rootfs/
作者
Carl Chen
发布于
2023年2月7日
许可协议