“Debian Desktop 系统使用”的版本间的差异

来自ARM Wiki
跳转至: 导航搜索
WebGL
 
(未显示同一用户的1个中间版本)
第1行: 第1行:
 
==基础信息==
 
==基础信息==
*用户密码
+
 
 +
===用户密码===
 +
 
 +
系统使用linaro用户在桌面自动登录,同时也支持linaro用户ssh登录。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
user: linaro
 
user: linaro
passwd: linaro
+
password: linaro
 
</syntaxhighlight>
 
</syntaxhighlight>
==使用示例==
+
 
===视频硬件编解码===
+
设置root用户密码方法:
*使用Qt的multimedia播放视频
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
$ sudo test_dec-qt.sh arm64
+
sudo passwd root
 
</syntaxhighlight>
 
</syntaxhighlight>
[[文件:Screenshot_from_2020-07-22_14-42-03.png|frameless|650px]]<br />
 
<br />
 
*使用gstreamer播放视频
 
<syntaxhighlight lang="bash">
 
$ sudo test_dec-gst.sh
 
</syntaxhighlight>
 
[[文件:Screenshot_from_2020-07-22_14-45-33.png|frameless|650px]]<br />
 
<br />
 
*播放4K视频
 
<syntaxhighlight lang="bash">
 
$ gst-launch-1.0 playbin uri=file:///home/linaro/4k.mp4
 
</syntaxhighlight>
 
[[文件:Screenshot_from_2020-07-22_14-51-55.png|frameless|650px]]<br />
 
<br />
 
*列出一些gstreamer命令
 
<syntaxhighlight lang="bash">
 
$ gst-launch-1.0 playbin uri=file:///usr/local/test.mp4
 
$ gst-launch-1.0 uridecodebin uri=file:///usr/local/test.mp4 ! xvimagesink
 
$ gst-launch-1.0 uridecodebin uri=file:///usr/local/test.mp4 ! rkximagesink
 
$ gst-launch-1.0 filesrc location=/usr/local/test.mp4 ! queue ! qtdemux  name=dmux dmux.video_0 ! queue ! h264parse ! mppvideodec ! rkximagesink dmux.audio_0 ! queue ! aacparse ! faad ! autoaudiosink
 
$ gst-inspect-1.0 rkximagesink
 
  # 查看插件信息
 
$ gst-discoverer-1.0 /usr/local/test.mp4
 
  # 查看视频信息
 
</syntaxhighlight>
 
*mpv播放器
 
系统自带mpv播放器,集成mpp支持硬解码
 
<syntaxhighlight lang="bash">
 
$ mpv /home/linaro/4k.mp4
 
  # 使用mpv播放器播放4k视频
 
$ mpv /dev/video0
 
  # 预览摄像头
 
$ mpv rtsp://admin:adm12345@10.168.1.227/cam/realmonitor?channel=1&subtype=0
 
  # 播放rtsp流
 
</syntaxhighlight>
 
<br />
 
*FFmpeg
 
FFmpeg支持硬件解码
 
<syntaxhighlight lang="bash">
 
$ ffmpeg -decoders | grep -i mpp
 
...
 
V..... h264_rkmpp          h264 (rkmpp) (codec h264)
 
V..... hevc_rkmpp          hevc (rkmpp) (codec hevc)
 
V..... vp8_rkmpp            vp8 (rkmpp) (codec vp8)
 
V..... vp9_rkmpp            vp9 (rkmpp) (codec vp9)
 
  # 查看ffmpeg支持的硬件解码器
 
</syntaxhighlight>
 
===OpenGL-ES===
 
*执行测试脚本
 
<syntaxhighlight lang="bash">
 
$ sudo test_glmark2_normal.sh
 
</syntaxhighlight>
 
[[文件:Screenshot_from_2020-07-22_09-07-38.png|frameless|650px]]<br />
 
<br />
 
[[文件:Screenshot_from_2020-07-22_09-12-58.png|frameless|650px]]<br />
 
<br />
 
===WebGL===
 
*打开chromium浏览器,在地址栏输入 <code>chrome://gpu</code> 查看硬件加速相关信息
 
[[文件:Screenshot_from_2020-07-22_10-31-26.png|frameless|650px]]<br />
 
<br />
 
*打开chromium浏览器,在地址栏输入 <code>https://get.webgl.org/</code> 测试WebGL
 
[[文件:Screenshot_from_2022-02-21_13-47-27.png|frameless|650px]]<br />
 
<br />
 
  
===OpenCL===
+
==网络设置==
*安装并运行<code>clinfo</code>,查看OpenCL相关信息
+
 
<syntaxhighlight lang="bash">
+
系统使用NetworkManager管理网络,默认为以太网配置了动态IP,可以通过桌面进行设置,也可以使用nmcli命令配置网络。
$ sudo apt-get install -f -y clinfo
+
 
$ clinfo
+
{{模板:使用桌面配置网络}}
Number of platforms                              1
+
 
  Platform Name                                  ARM Platform
+
{{模板:使用nmcli命令配置网络}}
  Platform Vendor                                ARM
 
  Platform Version                                OpenCL 1.2 v1.r14p0-01rel0-git(a79caef).8ddfd7584149d9238dced4e406610de7
 
  Platform Profile                                FULL_PROFILE
 
  Platform Extensions                            cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addy
 
  Platform Extensions function suffix            ARM
 
  
  Platform Name                                  ARM Platform
+
==固件打包烧录==
Number of devices                                1
 
  Device Name                                    Mali-T860
 
  Device Vendor                                  ARM
 
  Device Vendor ID                                0x8602000
 
  Device Version                                  OpenCL 1.2 v1.r14p0-01rel0-git(a79caef).8ddfd7584149d9238dced4e406610de7
 
  Driver Version                                  1.2
 
  Device OpenCL C Version                        OpenCL C 1.2 v1.r14p0-01rel0-git(a79caef).8ddfd7584149d9238dced4e406610de7
 
  Device Type                                    GPU
 
  Device Profile                                  FULL_PROFILE
 
  Max compute units                              4
 
  Max clock frequency                            800MHz
 
  Device Partition                                (core)
 
    Max number of sub-devices                    0
 
    Supported partition types                    None
 
  Max work item dimensions                        3
 
  Max work item sizes                            256x256x256
 
  Max work group size                            256
 
...
 
</syntaxhighlight>
 
  
{{模板:RKDebianNetworkConfiguration}}
 
 
{{模板:RKExportPackFirmware}}
 
{{模板:RKExportPackFirmware}}
 +
 +
==开发环境==
 +
 +
{{模板:Ubuntu主机开发环境搭建}}

2023年3月30日 (四) 17:27的最新版本

基础信息

用户密码

系统使用linaro用户在桌面自动登录,同时也支持linaro用户ssh登录。

user: linaro
password: linaro

设置root用户密码方法:

sudo passwd root

网络设置

系统使用NetworkManager管理网络,默认为以太网配置了动态IP,可以通过桌面进行设置,也可以使用nmcli命令配置网络。

使用桌面配置网络

设置静态IP示例

打开网络设置界面:

右击桌面网络图标 --> 点击 “编辑连接”

先将系统自动生成的连接删除:

选中 “有线连接” --> 点击 "-" 进行删除

再手动添加新的连接:

点击 "+" --> 选中 “以太网” --> 点击 “创建” --> 选择 “以太网” 条目 --> “设备” 一栏手动填写 eth0 或下拉选中后修改为 eth0 (删除 mac 地址字段) --> 选择 “IPv4 设置” 条目 --> “方法” 一栏: 选中 “手动” --> 点击 “添加” --> 分别输入 192.168.1.157 24 192.168.1.1 --> 点击 ”保存“

使用nmcli命令配置网络

设置静态IP示例

查看已创建的连接:

nmcli connection show
...
有线连接 1  36ff5fe1-088a-3562-a9f1-70e9552ce8b6  ethernet  eth0
...

若已存在关于网络接口eth0的连接,需先删除:

nmcli connection delete '有线连接 1'

添加名为my_static_eth0的静态IP连接:

nmcli connection add con-name my_static_eth0 ifname eth0 type ethernet ip4 10.168.1.157/24 gw4 10.168.1.1

设置DNS:

nmcli connection modify my_static_eth0 ipv4.dns "10.168.1.1 119.29.29.29"

设置动态IP示例

查看已创建的连接:

nmcli connection show
...
有线连接 1  36ff5fe1-088a-3562-a9f1-70e9552ce8b6  ethernet  eth0
...

若已存在关于网络接口eth0的连接,需先删除:

nmcli connection delete '有线连接 1'

添加名为my_dynamic_eth0的动态IP连接:

nmcli connection add con-name my_dynamic_eth0 ifname eth0 type ethernet

连接WIFI示例

查看WIFI网络列表:

nmcli device wifi list
...
IN-USE  SSID             MODE  CHAN  RATE        SIGNAL  BARS  SECURITY  
        OrayBox-3D28     红外  9     130 Mbit/s  65      ▂▄▆_  WPA2      
        NORCO-5G         红外  1     130 Mbit/s  59      ▂▄▆_  WPA2      
...

连接名为OrayBox-3D28密码为norco85258506的WIFI:

nmcli device wifi connect OrayBox-3D28 password norco85258506

命令用法举例

查看网络接口状态:

nmcli device status

查看网络接口网络信息:

nmcli device show eth0

使用连接:

nmcli connection up my_static_eth0

不使用连接:

nmcli connection down my_static_eth0

查看连接详细信息:

nmcli connection show my_static_eth0

关闭WIFI:

nmcli radio wifi off

打开WIFI:

nmcli radio wifi on

连接WIFI并设置静态IP:

nmcli con add con-name "my_wifi" type wifi ifname wlan0 ssid "OrayBox-3D28" -- wifi-sec.key-mgmt wpa-psk wifi-sec.psk "norco85258506" ipv4.method manual ipv4.address 10.168.1.158/24 ipv4.dns 119.29.29.29 ipv4.gateway 10.168.1.1

创建名为my_hotspot的WIFI热点:

nmcli dev wifi hotspot ifname wlan0 ssid "my_hotspot" password "88888888"

固件打包烧录

导出主板上的根文件系统分区镜像rootfs.img

1. 将U盘的第一个分区格式化成ext4格式

2. 在U盘的第一个分区根目录下创建export_rootfs文件

3. 将U盘插到主板上,重新给主板上电

4. 等待rootfs.img自动导出,此时系统会进入recovery模式,不会进入正常系统界面。导出完成后,系统会自动重启进入正常系统界面

5. U盘中的rootfs.img即为根文件系统分区镜像

在Windows电脑主机上制作完整固件

1. 解包完整固件update.img

  • 将下载的烧录包解压到当前文件夹,进入tools目录,将烧录工具windows.zip解压到当前文件夹,进入windows\RKDevTool\rockdev目录,双击执行nc-unpack.bat解包脚本,等待解包完成后各分区镜像保存在Output\Image目录中

Screenshot from 2023-02-01 13-45-54.png

2. 替换根文件系统分区镜像rootfs.img

  • 将导出的根文件系统分区镜像rootfs.img拷贝替换到Output\Image目录中

Screenshot from 2023-02-01 13-50-33.png

3. 打包完整固件update.img

  • 双击执行nc-pack.bat打包脚本,等待打包完成后完整固件update.img保存在Output目录中

Screenshot from 2023-02-01 13-56-02.png

在Windows电脑主机上烧录固件

安装驱动

将下载的烧录包解压到当前文件夹,进入tools目录,将烧录工具windows.zip解压到当前文件夹,进入windows目录,将驱动DriverAssitant_v*.zip解压到当前文件夹,进入DriverAssitant_v*目录,双击DriverInstall.exe安装驱动。 Screenshot from 2023-02-13 15-09-00.png

运行烧录工具

进入tools\windows\RKDevTool\RKDevTool_Release目录,双击RKDevTool.exe运行烧录工具。

连接烧录线

将主板和Windows电脑通过一根USB烧录线进行连接。

让主板进入烧录模式

在主板系统终端下执行命令:

reboot loader

主板会被烧录工具识别成一个LOADER设备或MASKROM设备。
Screenshot from 2023-02-13 16-37-25.png

烧录完整固件update.img

点击“升级固件” --> 点击“固件”并选中完整固件update.img --> 点击“升级”
Screenshot from 2023-02-13 16-46-50.png
烧录完成后,设备自动重启进入正常工作模式。

单独烧录内核分区镜像boot.img

在设备处于LOADER模式下,可以单独烧录boot分区镜像或rootfs等其他分区镜像,点击“设备分区表”可以看到设备的分区信息。
Screenshot from 2023-02-13 17-11-25.png

只勾选boot一栏 --> 确认地址与设备分区地址一致 --> 选中boot.img所在路径 --> 点击“执行”
Screenshot from 2023-02-13 17-13-03.png

烧录完成后,设备会自动重启或需手动断电重启,进入正常工作模式。

在Linux下打包完整固件

unpack.sh用于将完整固件解包成各个分区镜像;打包工具脚本mkupdate.sh用于将各分区镜像打包成一个完整的固件。

  • 将烧录、解包、打包工具linux.tar.gz解压到当前目录
tar xvf linux.tar.gz
  • 解包update.img
cd linux/Linux_Pack_Firmware/rockdev
ln -sfr ../../../../update.img update.img
./unpack.sh

完成后输出文件output/保存在当前目录下。
Screenshot from 2020-12-31 11-27-13.png

  • 根据需要替换指定分区镜像,比如替换根文件系统分区镜像output/Image/rootfs.img
  • 进行必要的移动拷贝,使用初始固件的分区参数、各分区镜像、打包配置文件
mv output/parameter.txt output/Image/
mv output/MiniLoaderAll.bin output/Image/
mv output/package-file .
ln -sfr output/Image/ Image
  • 根据芯片平台执行对应的打包脚本,完成后完整固件update.img保存在当前目录
./rk3399-mkupdate.sh

Screenshot from 2020-12-31 11-48-11.png

在Linux下烧录固件

烧录工具upgrade_tool可用于升级固件。

  • 连接好USB烧录线连接后,在主板的系统终端下执行如下命令,让主板进入烧录模式
reboot loader
  • 将烧录、解包、打包工具linux.tar.gz解压到当前目录,并进行简单设置
tar xvf linux.tar.gz
cd linux/Linux_Upgrade_Tool/Linux_Upgrade_Tool && chmod a+x upgrade_tool && sudo cp upgrade_tool /usr/local/bin
mkdir ~/.config/upgrade_tool/
cp config.ini ~/.config/upgrade_tool/
  • 烧录完整固件及各分区镜像的命令
sudo upgrade_tool uf update.img
  # 烧录完整固件
sudo upgrade_tool di -p parameter.txt
  # 烧录分区参数
sudo upgrade_tool di -uboot uboot.img
  # 烧录uboot分区镜像
sudo upgrade_tool di -b boot.img
  # 烧录内核分区镜像
sudo upgrade_tool di -rootfs rootfs.img
  # 烧录根文件系统分区镜像rootfs.img
sudo upgrade_tool di -r recovery.img
  # 烧录recovery镜像
sudo upgrade_tool di -userdata userdata.img
  # 烧录userdata分区镜像

开发环境

Ubuntu主机开发环境搭建

x86电脑主机或虚拟机的系统可使用Ubuntu 16.04、Ubuntu 18.04或Ubuntu 20.04进行开发。

Ubuntu 16.04建议安装:

sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 libssl-dev texinfo liblz4-tool genext2fs expect patchelf gawk

Ubuntu 18.04建议安装:

sudo apt install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm rsync curl asciidoc autoconf autotools-dev bash bc binfmt-support binutils bison build-essential bzip2 chrpath cmake cpio curl cvs dblatex device-tree-compiler diffstat expect fakeroot file flex g++ gawk gcc genext2fs git git-gui gitk g++-multilib graphviz gzip intltool libdrm-dev libglade2-dev libglib2.0-dev libgtk2.0-dev liblz4-tool libncurses5 libqt4-dev libsigsegv2 libudev-dev libusb-1.0-0-dev linaro-image-tools live-build m4 make mercurial mtools ncurses-dev openssh-client parted patch patchelf perl python python-linaro-image-tools python-matplotlib python-pip qemu-user-static repo rsync sed ssh subversion tar texinfo u-boot-tools unzip w3m wget libdb1-compat python3-pyelftools screen git-lfs npm default-jre default-jdk ccache

Ubuntu 20.04建议安装:

sudo apt install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm rsync curl asciidoc autoconf autotools-dev bash bc binfmt-support binutils bison build-essential bzip2 chrpath cmake cpio curl cvs dblatex device-tree-compiler diffstat expect fakeroot file flex g++ gawk gcc genext2fs git git-gui gitk g++-multilib graphviz gzip intltool libdrm-dev libglade2-dev libglib2.0-dev libgtk2.0-dev liblz4-tool libncurses5 libsigsegv2 libudev-dev libusb-1.0-0-dev live-build m4 make mercurial mtools ncurses-dev openssh-client parted patch patchelf perl python qemu-user-static rsync sed ssh subversion tar texinfo u-boot-tools unzip w3m wget libdb1-compat python3-pyelftools screen git-lfs npm default-jre default-jdk ccache