NXP i.MX6ULL 开发板上运行 AWTK

在 NXP i.MX6ULL 开发板上运行 AWTK_Ubuntu

1. 准备工作

如果某些步骤已经完成,请跳过。

1.1 安装 Ubuntu 22 虚拟机

1.2 安装 sshd 服务并启动

sudo apt-get install openssh-server
sudo systemctl start sshd

1.3 安装 awtk 需要的编译环境

sudo apt-get install gcc g++ scons libsndio-dev libgtk-3-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev libasound2-dev libibus-1.0-dev fcitx-libs-dev git vim clang-format libharfbuzz-dev nodejs libreadline-dev

1.4 安装交叉编译工具链

sudo apt-get install g++-arm-linux-gnueabihf

1.5 下载 awtk/awtk-linux-fb 源码

  • 创建工作目录
mkdir -p ~/work/awtk-root
cd ~/work/awtk-root
  • 下载 awtk 源码
git clone https://github.com/zlgopen/awtk
  • 下载 awtk-linux-fb 源码
git clone https://github.com/zlgopen/awtk-linux-fb

2. 构建 rootfs

因为笔者用的 MacPro M2,上面安装的是 Ubuntu 22 虚拟机,由于是 arm64 的 CPU,官方的工具链运行不了,而 Ubuntu 上工具链编译的程序,在板子自带的系统上运行不了,所以只能自己编译 rootfs。
其它系统,如果不需要请跳过。

2.1 下载 busybox 源码

mkdir -p ~/work/awtk-root/rootfs
cd ~/work/awtk-root/rootfs
wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2
tar -xvf busybox-1.36.1.tar.bz2

2.2 编译 busybox

cd busybox-1.36.1
make defconfig
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm install CONFIG_PREFIX=~/work/awtk-root/rootfs/rootfs
  • 拷贝库文件
cd ~/work/awtk-root/rootfs/rootfs/
cp -arf /usr/arm-linux-gnueabihf/lib .
rm -f lib/libasan.so.6* lib/*.a lib/*.o
  • 创建必要的文件和目录
mkdir -p proc dev sys var tmp run etc
  • 创建 etc/fstab 文件,其内容如下:
proc                 /proc                proc       defaults              0  0
sysfs                /sys                 sysfs       defaults             0   0
tmpfs                /run                 tmpfs      mode=0755,nodev,nosuid,strictatime 0  0
tmpfs                /tmp                 tmpfs      defaults              0  0
devtmpfs             /dev                 devtmpfs   defaults              0  0
  • 创建 rootfs 压缩文件包
cd ..
tar czf rootfs.tar.gz rootfs
  • 启动 http 服务

打开一个新的终端

~/work/awtk-root
python3 -m http.server 8080 --directory .

3. 编译 awtk-linux-fb

3.1 编译

cd ~/work/awtk-root/awtk-linux-fb
scons TOOLS_PREFIX=arm-linux-gnueabihf-

3.2 生成压缩包

./release.sh
  • 创建设备配置文件:release/config/devices.json 其内容如下:
{
    "/dev/fb0" : {
        "type" : "fb"
    },
    "/dev/input/event1" : {
        "type" : "input"
    }
}
  • 重新生成压缩包
tar czf release.tar.gz release

4. 下载 rootfs.tar.gz 和 release.tar.gz 到开发板

4.1 启动网络

下列参数据实际情况修改

ifconfig eth0 192.168.8.139 netmask 255.255.255.0 up
route add default gw 192.168.8.1 eth0

ifconfig
route -n

4.2 下载 rootfs.tar.gz

flash 比较小,这里下载到内存

  • 下载 rootfs.tar.gz
cd /tmp
wget http://192.168.8.242:8080/rootfs/rootfs.tar.gz
  • 解压 rootfs.tar.gz
tar xf rootfs.tar.gz
  • 挂载 rootfs
chroot rootfs
mount -a

4.3 下载 release.tar.gz

  • 下载 release.tar.gz
wget http://192.168.8.242:8080/awtk-linux-fb/release.tar.gz
  • 解压 release.tar.gz
tar xf release.tar.gz

5. 运行 awtk-linux-fb

cd release/
./bin/demoui