Atlas 200I A2 Ubuntu22.04 支持GPU加速功能调试指南
该文档主要说明在Atlas 200I A2(操作系统为Ubuntu 22.04)上,如何进行GPU加速功能调试,具体内容如下:
1 在Ubuntu 22.04(ARM)下,编译打包mesa。
1.1 使用编译环境为ARM架构的Ubuntu 22.04,并且当前环境能连接外网。
1.2 修改/etc/apt/sources.list.d/sources.list内容如下,然后执行apt-get update更新软件源。
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
1.3 安装mesa的编译依赖。
(1)apt-get build-dep mesa
(2)apt install python3-pip
(3)pip3 install mako (查看mako版本)
(4)pip3 install --index-url=https://pypi.tuna.tsinghua.edu.cn/simple mako==1.1.3(根据上一步查出来的版本进行更改)

1.4 下载mesa代码https://archive.mesa3d.org/,选择mesa-23.0.0.tar.xz。上传mesa-23.0.0.tar.xz到编译环境,如/opt目录下;
(1)cd /opt
(2)tar -xvf mesa-23.0.0.tar.xz
(3)cd mesa-23.0.0/
(4)vi src/gallium/targets/dri/meson.build,在如下位置增加 'atlas-200a2_dri.so', 后,保存并退出。

(5)vi src/gallium/targets/dri/target.c,在如下位置增加DEFINE_LOADER_DRM_ENTRYPOINT(atlas_200a2)后,保存并退出。

(6)mkdir -p /opt/ttt
(7)cd /opt/mesa-23.0.0/
(8)cp ./include/ /opt/ttt -rf
(9)meson -Degl=enabled -Dgles1=enabled -Dgles2=enabled -Ddri-drivers= -Dvulkan-drivers= -Dgallium-drivers=panfrost,swrast -Dplatforms=x11 -Dprefix=/opt/ttt -Ddri-search-path=/usr/lib64/dri build
(10)cd build
(11)ninja
(12)ninja install
(13)cd /opt/ttt/lib/aarch64-linux-gnu
(14)strip dri/*
(15)tar -zcvf Atlas_200A2_mesa.tar.gz ./*
会在当前目录下生成名为Atlas_200A2_mesa.tar.gz 的压缩包。
2 在Ubuntu 22.04(x86)下,修改并编译Atlas200I A2的DTB文件
2.1 使用编译环境为x86的Ubuntu 22.04,并下载Atlas 200I A2 的源码包:https://www.hiascend.com/hardware/firmware-drivers/community?product=1&model=23&cann=All&driver=Ascend+HDK+24.1.0

2.2 将源码包上传至x86编译环境,如/home目录下,解压进入对应目录。
(1)cd ./Ascend310B-source/dtb/dts/hi1910b/hi1910BL/base/
修改hi1910B-gpu.dtsi 内容如下,保存并退出。

(2)cd ./Ascend310B-source/dtb/dts/hi1910b/hi1910BL/
修改hi1910B-asic-M150-B50.dts 内容,将/include/ "base/hi1910B-vdp.dtsi"改为/include/ "base/hi1910B-drm.dtsi"
并修改bootargs内容如下:
bootargs = "console=ttyAMA0,115200 console=tty1 log_redirect=0x1fc000@0x22741000 root=/dev/mmcblk0p2 rw rdinit=/sbin/init rodata=off syslog earlycon=pl011,mmio32,0xC4010000 initrd=0x2BA00000,300M rootwait mpam=of enable_ascend_share_pool ascend_enable_all enable_sp_multi_group_mode init_all_gicr enable_fpga no_console_suspend selinux=0 systemd.unified_cgroup_hierarchy=0 audit=1 audit_backlog_limit=8192 fbcon=map:6 movable_node cma=256M rootfstype=ext4";

2.3 将panfrost功能支持的patch添加至内核编译脚本。
(1)cd ./Ascend310B-source/
(2)vim build.sh并增加相关patch:patch -E -p1 --no-backup-if-mismatch -i $KERNEL_DIR/patches/hisi/0001-add-drivers-gpu-drm-panfrost.patch

(3)将0001-add-drivers-gpu-drm-panfrost.patch上传到./ Ascend310B-source/driver/kernel/kernel/patches/hisi/下
文件可以在下方链接中取到
通过网盘分享的文件:0001-add-drivers-gpu-drm-panfrost.patch
链接: https://pan.baidu.com/s/1Rtu9R2u26MmpFOCBYC8H-Q?pwd=jt7b 提取码: jt7b
2.4 编译重新生成dt.img
(1)cd ./Ascend310B-source/
(2)bash build.sh dtb
编译完成后,在./Ascend310B-source/output/ 下会生成dt.img.
3 编译并生成内核文件、驱动
3.1 进入源码包相关路径下,修改配置文件。
(1)cd ./Ascend310B-sdk/Ascend310B-source/kernel/kernel/kernel/kbuild/defconfigs/arch/arm64/configs
(2)vim ascend310B_defconfig,增加CONFIG_DRM_PANFROST=m,保存并退出
(3)cd ./Ascend310B-sdk/Ascend310B-source
(4)bash build.sh kernel
编译时增加.config的修改,路径为Device Drivers --->Graphics support --->DRM Support for Hisilicon Ascend310b SoC Platform,将该项勾选为Y,保存并退出。
(5)编译完成后,在./ Ascend310B-source/output/kernel_modules/ 下会生成两个驱动panfrost.ko、gpu-sched.ko,在./ Ascend310B-source/output/下会生成Image。
4 在Atlas200I A2安装gnome并进行调试
4.1 登录Atlas200I A2,安装gnome
安装gnome需要保证环境能连外网
(1)apt update
(2)apt install gnome-session
(3)apt install gdm3 gnome-shell
4.2 升级内核、dtb等
(1)上传1.4中生成的Atlas_200A2_mesa.tar.gz到Atlas200I A2的/tmp目录;
(2)cd /tmp/
(3)mkdir mesa
(4)tar -xvf Atlas_200A2_mesa.tar.gz -C mesa
(5)cd mesa
(6)cp -rf ./* /usr/lib64/
(7)echo “export LIBGL_DRIVERS_PATH=/usr/lib64/dri” >> /etc/profile
(8)上传2.3中生成的dt.img、3.1生成的Image、panfrost.ko,gpu-sched.ko到/tmp目录下;
(9)dd if=Image of=/dev/mmcblk0 count=61440 seek=32768 bs=512
(10)dd if=dt.img of=/dev/mmcblk0 count=4096 seek=114688 bs=512
(11)cp /tmp/panfrost.ko /var/davinci/driver/
(12)cp /tmp/gpu-sched.ko /var/davinci/driver/
(13)修改/var/davinci/scripts/minirc_sys_init_ext.sh,在load_device_modules 下增加如下内容,保存并退出。
ko_check ${ko_path}/ascend_vdp_drm.ko
ko_check ${ko_path}/gpu-sched.ko
ko_check ${ko_path}/panfrost.ko
4.3 连接显示器验证
连接显示器,并重启系统进行生效。查看显示器是否有桌面显示,如果没有显示,执行如下命令:
- systemctl restart gdm
- systemctl restart display-manager.service
再次查看显示器,会出现登录界面;执行cat /proc/interrupts | grep panfrost,查看panfrost-job是否有中断。
Atlas 200I A2 Ubuntu22.04 支持GPU加速功能调试指南
该文档主要说明在Atlas 200I A2(操作系统为Ubuntu 22.04)上,如何进行GPU加速功能调试,具体内容如下:
1 在Ubuntu 22.04(ARM)下,编译打包mesa。
1.1 使用编译环境为ARM架构的Ubuntu 22.04,并且当前环境能连接外网。
1.2 修改/etc/apt/sources.list.d/sources.list内容如下,然后执行apt-get update更新软件源。
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
1.3 安装mesa的编译依赖。
(1)apt-get build-dep mesa
(2)apt install python3-pip
(3)pip3 install mako (查看mako版本)
(4)pip3 install --index-url=https://pypi.tuna.tsinghua.edu.cn/simple mako==1.1.3(根据上一步查出来的版本进行更改)
1.4 下载mesa代码https://archive.mesa3d.org/,选择mesa-23.0.0.tar.xz。上传mesa-23.0.0.tar.xz到编译环境,如/opt目录下;
(1)cd /opt
(2)tar -xvf mesa-23.0.0.tar.xz
(3)cd mesa-23.0.0/
(4)vi src/gallium/targets/dri/meson.build,在如下位置增加 'atlas-200a2_dri.so', 后,保存并退出。
(5)vi src/gallium/targets/dri/target.c,在如下位置增加DEFINE_LOADER_DRM_ENTRYPOINT(atlas_200a2)后,保存并退出。
(6)mkdir -p /opt/ttt
(7)cd /opt/mesa-23.0.0/
(8)cp ./include/ /opt/ttt -rf
(9)meson -Degl=enabled -Dgles1=enabled -Dgles2=enabled -Ddri-drivers= -Dvulkan-drivers= -Dgallium-drivers=panfrost,swrast -Dplatforms=x11 -Dprefix=/opt/ttt -Ddri-search-path=/usr/lib64/dri build
(10)cd build
(11)ninja
(12)ninja install
(13)cd /opt/ttt/lib/aarch64-linux-gnu
(14)strip dri/*
(15)tar -zcvf Atlas_200A2_mesa.tar.gz ./*
会在当前目录下生成名为Atlas_200A2_mesa.tar.gz 的压缩包。
2 在Ubuntu 22.04(x86)下,修改并编译Atlas200I A2的DTB文件
2.1 使用编译环境为x86的Ubuntu 22.04,并下载Atlas 200I A2 的源码包:https://www.hiascend.com/hardware/firmware-drivers/community?product=1&model=23&cann=All&driver=Ascend+HDK+24.1.0
2.2 将源码包上传至x86编译环境,如/home目录下,解压进入对应目录。
(1)cd ./Ascend310B-source/dtb/dts/hi1910b/hi1910BL/base/
修改hi1910B-gpu.dtsi 内容如下,保存并退出。
(2)cd ./Ascend310B-source/dtb/dts/hi1910b/hi1910BL/
修改hi1910B-asic-M150-B50.dts 内容,将/include/ "base/hi1910B-vdp.dtsi"改为/include/ "base/hi1910B-drm.dtsi"
并修改bootargs内容如下:
bootargs = "console=ttyAMA0,115200 console=tty1 log_redirect=0x1fc000@0x22741000 root=/dev/mmcblk0p2 rw rdinit=/sbin/init rodata=off syslog earlycon=pl011,mmio32,0xC4010000 initrd=0x2BA00000,300M rootwait mpam=of enable_ascend_share_pool ascend_enable_all enable_sp_multi_group_mode init_all_gicr enable_fpga no_console_suspend selinux=0 systemd.unified_cgroup_hierarchy=0 audit=1 audit_backlog_limit=8192 fbcon=map:6 movable_node cma=256M rootfstype=ext4";
2.3 将panfrost功能支持的patch添加至内核编译脚本。
(1)cd ./Ascend310B-source/
(2)vim build.sh并增加相关patch:patch -E -p1 --no-backup-if-mismatch -i $KERNEL_DIR/patches/hisi/0001-add-drivers-gpu-drm-panfrost.patch
(3)将0001-add-drivers-gpu-drm-panfrost.patch上传到./ Ascend310B-source/driver/kernel/kernel/patches/hisi/下
文件可以在下方链接中取到
通过网盘分享的文件:0001-add-drivers-gpu-drm-panfrost.patch
链接: https://pan.baidu.com/s/1Rtu9R2u26MmpFOCBYC8H-Q?pwd=jt7b 提取码: jt7b
2.4 编译重新生成dt.img
(1)cd ./Ascend310B-source/
(2)bash build.sh dtb
编译完成后,在./Ascend310B-source/output/ 下会生成dt.img.
3 编译并生成内核文件、驱动
3.1 进入源码包相关路径下,修改配置文件。
(1)cd ./Ascend310B-sdk/Ascend310B-source/kernel/kernel/kernel/kbuild/defconfigs/arch/arm64/configs
(2)vim ascend310B_defconfig,增加CONFIG_DRM_PANFROST=m,保存并退出
(3)cd ./Ascend310B-sdk/Ascend310B-source
(4)bash build.sh kernel
编译时增加.config的修改,路径为Device Drivers --->Graphics support --->DRM Support for Hisilicon Ascend310b SoC Platform,将该项勾选为Y,保存并退出。
(5)编译完成后,在./ Ascend310B-source/output/kernel_modules/ 下会生成两个驱动panfrost.ko、gpu-sched.ko,在./ Ascend310B-source/output/下会生成Image。
4 在Atlas200I A2安装gnome并进行调试
4.1 登录Atlas200I A2,安装gnome
安装gnome需要保证环境能连外网
(1)apt update
(2)apt install gnome-session
(3)apt install gdm3 gnome-shell
4.2 升级内核、dtb等
(1)上传1.4中生成的Atlas_200A2_mesa.tar.gz到Atlas200I A2的/tmp目录;
(2)cd /tmp/
(3)mkdir mesa
(4)tar -xvf Atlas_200A2_mesa.tar.gz -C mesa
(5)cd mesa
(6)cp -rf ./* /usr/lib64/
(7)echo “export LIBGL_DRIVERS_PATH=/usr/lib64/dri” >> /etc/profile
(8)上传2.3中生成的dt.img、3.1生成的Image、panfrost.ko,gpu-sched.ko到/tmp目录下;
(9)dd if=Image of=/dev/mmcblk0 count=61440 seek=32768 bs=512
(10)dd if=dt.img of=/dev/mmcblk0 count=4096 seek=114688 bs=512
(11)cp /tmp/panfrost.ko /var/davinci/driver/
(12)cp /tmp/gpu-sched.ko /var/davinci/driver/
(13)修改/var/davinci/scripts/minirc_sys_init_ext.sh,在load_device_modules 下增加如下内容,保存并退出。
ko_check ${ko_path}/ascend_vdp_drm.ko
ko_check ${ko_path}/gpu-sched.ko
ko_check ${ko_path}/panfrost.ko
4.3 连接显示器验证
连接显示器,并重启系统进行生效。查看显示器是否有桌面显示,如果没有显示,执行如下命令:
再次查看显示器,会出现登录界面;执行cat /proc/interrupts | grep panfrost,查看panfrost-job是否有中断。