第一节:环境搭建与SDK编译

泰山派第一期:环境搭建与SDK编译

第一部分

一、泰山派开发板简介

1、主板资源

内存:2G
储存:16G
在这里插入图片描述
在这里插入图片描述

2、系统框图

在这里插入图片描述

3、资源标注图

在这里插入图片描述

4、叠层设计

在这里插入图片描述

5、40PIN默认引脚定义图

在这里插入图片描述

6、40PIN引脚复用详细图

在这里插入图片描述

二、如何使用开发板

1、Android11固件(出厂默认)

安卓系统做机顶盒看电视都可以。

a、指示灯状态说明

  通电后,开发板闪灯。
  若不闪灯。可能是没有EMMC(embedded MultiMediaCard)版本的。即泰山派是1+0版本,只有1G内存,没有储存。1+0版本需要TF卡做引导系统(做启动盘)。在这里插入图片描述

b、点屏幕hdmi屏幕测试

  插HDMI,就可以点亮屏幕。
在这里插入图片描述  屏幕可以搜树莓派屏幕购买。

c、没有hdmi情况下同屏工具使用

为什么要用scrcpy?

  • 在泰山派没有接显示屏、触摸、鼠标、键盘等情况下,可以通过scrcpy投屏到电脑进行人机交互。
  • scrcpy安装非常简单,在win10系统中下载点击运行就能使用。
  • 连接非常简单,只需要typec数据线连到泰山派开发板。
  • 画面流畅度和质量也很高。
  • 最主要的是它是开源的https://github.com/Genymobile/scrcpy

什么是scrcpy
  scrcpy是一个用于镜像连接Android设备并通过USB或TCP/IP进行控制的应用程序。它可以将Android设备的视频和音频镜像到计算机,并允许使用计算机的键盘和鼠标来控制设备。scrcpy无需获取root访问权限,并且适用于Linux、Windows和macOS操作系统。
scrcpy的特点包括:

  • 轻量级:原生应用,仅显示设备屏幕内容。
  • 高性能:帧率在30到120之间,取决于设备性能。
  • 高质量:支持1920×1080或更高分辨率。
  • 低延迟:延迟约为35~70毫秒。
  • 快速启动:显示第一帧画面只需约1秒钟。
  • 非入侵性:在Android设备上不需要安装任何软件。
  • 用户友好:无需帐号、无广告、无需互联网。
  • 自由:免费且开源。
    scrcpy的功能包括:
  • 音频转发(仅适用于Android 11及以上版本)。
  • 录制屏幕。
  • 在设备屏幕关闭时进行镜像。
  • 双向剪贴板复制粘贴。
  • 可配置的画质设置。
  • 相机镜像(仅适用于Android 12及以上版本)。
  • 作为摄像头的镜像(V4L2)(仅适用于Linux)。
  • 模拟物理键盘/鼠标(HID)。
  • 支持OTG模式等等。
    所需前提条件:
  • Android设备至少需要API 21(Android 5.0)。
  • 音频转发要求API >= 30(Android 11及以上版本)。
  • 确保已在设备上启用了USB调试。
  • 在某些设备上,还需要启用其他选项"USB调试(安全设置)"(与USB调试不同)才能使用键盘和鼠标进行控制。设置此选项后,需要重新启动设备。
  • 注意,使用OTG模式运行scrcpy时不需要USB调试。

下载scrcpy
  可以在scrcpy的GitHub页面https://github.com/Genymobile/scrcpy/releas上找到最新的发行版本和下载适合自己电脑的版本。这里只提供win64版本的,它支持linux mac需要其他的大家自己去git厂库。
在这里插入图片描述
下载完成后解压目录如下:
在这里插入图片描述
连接泰山派
  将泰山派通过USB数据线连接到电脑,并保证进入android

  • 确保你的电脑供电充足,有些电脑usb供电能力步骤会导致泰山派无法进入系统,如果无法保证可通过PD诱骗电源小板进行补电。
  • 确保USB调试选项已经打开,泰山派的Android固件都是默认打开ADB调试功能的,判断是否打开可以通过电脑是否有枚举ADB设备来判断。
  • 使用带数据功能的数据线,不要用只有充电功能的。
    在这里插入图片描述

启动scrcpy
  找到刚解压出来的文件,双击scrcpy.exe启动scrcpy。
在这里插入图片描述
运行成功显示两个界面分别是命令行界面,和泰山派镜像页面。
命令行页面!
在这里插入图片描述
信息说明

INFO: ADB device found:
# 找到adb设备,如果开发板没有进入系统等异常这里会失败

INFO:     -->   (usb)      ea16b3d63aceed1a            device  rk3566_tspi
# 泰山派的设备的信息:
# 'usb' 表示设备通过 USB 连接。
# 'ea16b3d63aceed1a' 是设备的序列号。
# 'rk3566_tspi' 泰山派android系统里的名称。

# 这个路径,就是scrcpy工具的路径
C:\Users\jlc\Desktop\scrcpy-win64-v2.3.1\scrcpy-server: 1 file pushed, 0 skipped. 66.0 MB/s (66007 bytes in 0.001s)
# adb把 scrcpy 服务器文件已经被推送到 Android 设备上,不理解的看adb部分
# 文件推送的速度是 66.0 MB/s
# 文件大小为 66007 字节,推送时间约 0.001 秒。

[server] INFO: Device: [rockchip] rockchip rk3566_tspi (Android 11)
# 这是 scrcpy 服务器提供的设备信息:
# 设备名为 rk3566_tspi。
# 运行的 Android 版本是 Android 11。

INFO: Renderer: direct3d
# 显示渲染器使用的是 Direct3D (Direct3D 是 Windows 中处理 3D 图形的一部分。

INFO: Texture: 1080x1920
# 表示展示在你电脑上的 Android 设备屏幕的尺寸为1080x1920

屏幕界面!
在这里插入图片描述
常用快捷键
在这里插入图片描述
到这里你就可以随心所欲的通过电脑玩转泰山派android系统啦!
关闭时,将同屏窗口的右上角关闭,再关闭前面打开的命令行界面。

d、电源小板的使用

  电脑USB接口为泰山派供电,电脑USB最多只能输出500mA电流。当泰山派给其它多个设备供电时,电流会超过500mA时,泰山派会一直重启。板子会启动不起来。
  启动不起来时,会用到电源小板。
在这里插入图片描述
  断电后,插入电源小板。
在这里插入图片描述
  电源小板的另一端可用12V的DC座供电,或者用Type-C(带PD诱骗的)。
在这里插入图片描述
  以Type-C为例,诱骗成功后,小板上会亮灯。
在这里插入图片描述
  按照诱骗小板背面的“表”,拨动拨码开关,选择诱骗到多少伏。
在这里插入图片描述
  泰山派支持5-18V宽电压输入。
在这里插入图片描述
  泰山派产生多少电流取决于“用电器”,设备越多,电流越多。

e、adb调试工具使用

暂时不打算使用安卓,所以此处只写教程,以win10为例。

1)准备工作
  • 需要一台win10电脑,其他系统理论上也可以但是我没测试,我这里以我电脑为例,后续所有的环境以及开发编译如果不做特殊说明默认都是基于此配置电脑进行。
    在这里插入图片描述
  • 泰山派需烧录对于的Android系统固件
  • ADB固件包
2)adb简介

  ADB,全称为Android Debug Bridge,是由Google开发的一种命令行工具,用于与Android设备进行通信和调试。作为Android软件开发工具包(SDK)的一部分,ADB提供了一系列功能和命令,方便开发者进行与Android设备交互和调试的操作。
ADB的主要功能和用途如下:

  • 设备连接与管理:ADB允许开发者通过USB或网络连接Android设备,并对设备进行管理。可以列出已连接的设备、安装或卸载应用程序、复制文件到设备等操作。
  • 应用程序调试:ADB允许开发者在已连接的Android设备上进行应用程序调试。可以启动和停止应用程序、查看应用程序日志、监视CPU和内存使用情况等。
  • 文件传输:ADB可以通过命令行在计算机和Android设备之间传输文件。这对于安装应用程序、传输媒体文件或备份数据非常有用。
  • Shell访问:ADB提供了一个可以执行设备上的shell命令的接口,方便开发者进行设备调试、日志记录、系统状态查询等操作。
  • 截图和屏幕录制:ADB可以进行屏幕截图和录制,以便开发者捕获设备屏幕上的图像和动画,并进行分析和调试。
  • 端口转发:ADB支持将设备的端口转发到计算机的端口,方便开发者通过计算机与设备上运行的服务进行通信和调试。
  • 设备控制:ADB提供了一些命令来进行基本的设备操作,如重启设备、关机、进入恢复模式等。
    需要注意的,是虽然adb是为android开发的但是因为他很好用很流行所以在其他平台我们也是可以看到他的身影比如后面我们用到的buildroot、debian、ubuntu等。
3)adb下载和安装

  下载安装包并解压,我这里直接下载并解压到D:盘,这里可以根据个人情况制定位置但是后面添加环境变量时也需要指定对应路径。
在这里插入图片描述
  此时我们直接在当前目录打开命令行窗口是可以直接使用adb的,打开方法在文件目录栏直接输入cmd并回车。
在这里插入图片描述
  在命令行窗口运行adb.exe help命令能够出现版本信息等表示adb正常。
在这里插入图片描述
  上面我们adb.exe同目录下运行成功,但是我们实际使用的时候是想在任意位置打开cmd即可使用adb,所以我们需要把adb添加到windows的环境变量中,这里就以win10为例,其他大同小异。点击环境变量。

不想在任意位置打开cmd就使用adb,就不用添加环境变量。
找到adb文件夹,输入cmd,一样使用adb。

在这里插入图片描述
  选择系统变量中的Path,然后点击点击编辑。
在这里插入图片描述
  点击新建,接着把刚刚下载的adb.exe所在路径填入。
在这里插入图片描述
  点击确定保存,接着打开一个新的cmd窗口,记得一定要新打开,之前打开不会同步环境变量。运行adb help看到以下日志就证明你成功啦~~~~
在这里插入图片描述

4)adb使用

一共11项
1、连接泰山派开发板
下面实验很多命令都是需要与泰山派进行交互,所以我们这里需要通过typec数据线把泰山派连接上。

  • 泰派数据线连接电脑,注意:如果供电不足需要用电源诱骗小板补电,typec要有数据功能不单是充电线。
    在这里插入图片描述
  • android系统中打开USB调试,我们提供的固件默认是已经打开了的,手动打开方法:进入android系统界面–>Settings–>About tablet–>连续多少点击Build number打开开发者模式–>退回上级进入Sysem–>Advanced–>打开USB debugging选型。
  • 打开设备管理器中能够正确找到Android ADB Interfaces设备。

2、adb命令学习方法
最好的学习方式就是阅读原文当,后面我会挑选一些adb高频的常用方法与大家分析,详细的还请参考谷歌官方手册:
3、如何快速掌握adb用法
一般我们使用命令行工具如:adb,makefile,git,python,Docker等,都会提供一个help命令来帮我们快速的了解它们的用法和参数选项。这些信息对于初学者来说尤其有用,可以作为入门指南和快速参考。建议新朋友养成工具不会用先help一下的习惯。以下是help的所有信息,这里我挑几个重要参数进行举例说明。

C:\Users\win>adb help
Android Debug Bridge version 1.0.41
Version 34.0.1-9680074
Installed as D:\platform-tools\adb.exe
global options:
 -a                       listen on all network interfaces, not just localhost
 -d                       use USB device (error if multiple devices connected)
 -e                       use TCP/IP device (error if multiple TCP/IP devices available)
 -s SERIAL                use device with given serial (overrides $ANDROID_SERIAL)
 -t ID                    use device with given transport id
 -H                       name of adb server host [default=localhost]
 -P                       port of adb server [default=5037]
 -L SOCKET                listen on given socket for adb server [default=tcp:localhost:5037]
 --one-device SERIAL|USB  only allowed with 'start-server' or 'server nodaemon', server will only connect to one USB device, specified by a serial number or USB device address.
 --exit-on-write-error    exit if stdout is closed
general commands:
 devices [-l]             list connected devices (-l for long output)help                     show this help message
 version                  show version num
networking:
 connect HOST[:PORT]      connect to a device via TCP/IP [default port=5555]
 disconnect [HOST[:PORT]]
     disconnect from given TCP/IP device [default port=5555], or all
 pair HOST[:PORT] [PAIRING CODE]
     pair with a device for secure TCP/IP communication
 forward --list           list all forward socket connections
 forward [--no-rebind] LOCAL REMOTE
     forward socket connection using:
       tcp:<port> (<localmay be "tcp:0" to pick any open port)
       localabstract:<unix domain socket name>
       localreserved:<unix domain socket name>
       localfilesystem:<unix domain socket name>
       dev:<character device name>
       jdwp:<process pid> (remote only)
       vsock:<CID>:<port> (remote only)
       acceptfd:<fd> (listen only)
 forward --remove LOCAL   remove specific forward socket connection
 forward --remove-all     remove all forward socket connections
 reverse --list           list all reverse socket connections from device
 reverse [--no-rebind] REMOTE LOCAL
     reverse socket connection using:
       tcp:<port> (<remote> may be "tcp:0" to pick any open port)
       localabstract:<unix domain socket name>
       localreserved:<unix domain socket name>
       localfilesystem:<unix domain socket name>
 reverse --remove REMOTE  remove specific reverse socket connection
 reverse --remove-all     remove all reverse socket connections from device
 mdns check               check if mdns discovery is available
 mdns services            list all discovered services
file transfer:
 push [--sync] [-z ALGORITHM] [-Z] LOCAL... REMOTE
     copy local files/directories to device
     --sync: only push files that are newer on the host than the device
     -n: dry run: push files to device without storing to the filesystem
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression
 pull [-a] [-z ALGORITHM] [-Z] REMOTE... LOCAL
     copy files/dirs from device
     -a: preserve file timestamp and mode
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compressionsync [-l] [-z ALGORITHM] [-Z] [all|data|odm|oem|product|system|system_ext|vendor]sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
     -n: dry run: push files to device without storing to the filesystem
     -l: list files that would be copied, but don't copy them
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression
shell:
 shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]
     run remote shell command (interactive shell if no command given)
     -e: choose escape character, or "none"; default '~'
     -n: don't read from stdin
     -T: disable pty allocation
     -t: allocate a pty if on a tty (-tt: force pty allocation)
     -x: disable remote exit codes and stdout/stderr separation
 emu COMMAND              run emulator console command
app installation (see also `adb shell cmd package help`):
 install [-lrtsdg] [--instant] PACKAGE
     push a single package to the device and install it
 install-multiple [-lrtsdpg] [--instant] PACKAGE...
     push multiple APKs to the device for a single package and install them
 install-multi-package [-lrtsdpg] [--instant] PACKAGE...
     push one or more packages to the device and install them atomically
     -r: replace existing application
     -t: allow test packages
     -d: allow version code downgrade (debuggable packages only)
     -p: partial application install (install-multiple only)
     -g: grant all runtime permissions
     --abi ABI: override platform's default ABI
     --instant: cause the app to be installed as an ephemeral install app
     --no-streaming: always push APK to device and invoke Package Manager as separate steps
     --streaming: force streaming APK directly into Package Manager
     --fastdeploy: use fast deploy
     --no-fastdeploy: prevent use of fast deploy
     --force-agent: force update of deployment agent when using fast deploy
     --date-check-agent: update deployment agent when local version is newer and using fast deploy
     --version-check-agent: update deployment agent when local version has different version code and using fast deploy
     (See also 
adb shell pm help
 for more options.)
 uninstall [-k] PACKAGE
     remove this app package from the device
     '-k': keep the data and cache directories
debugging:
 bugreport [PATH]
     write bugreport to given PATH [default=bugreport.zip];
     if PATH is a directory, the bug report is saved in that directory.
     devices that don't support zipped bug reports output to stdout.
 jdwp                     list pids of processes hosting a JDWP transport
 logcat                   show device log (logcat --help for more)
security:
 disable-verity           disable dm-verity checking on userdebug builds
 enable-verity            re-enable dm-verity checking on userdebug builds
 keygen FILE
     generate adb public/private key; private key stored in FILE,
scripting:
 wait-for[-TRANSPORT]-STATE...wait for device to be in a given state
     STATE: device, recovery, rescue, sideload, bootloader, or disconnect
     TRANSPORT: usb, local, or any [default=any]
 get-state                print offline | bootloader | device
 get-serialno             print <serial-number>
 get-devpath              print <device-path>
 remount [-R]
      remount partitions read-write. if a reboot is required, -R will
      will automatically reboot the device.
 reboot [bootloader|recovery|sideload|sideload-auto-reboot]
     reboot the device; defaults to booting system image but
     supports bootloader and recovery too. sideload reboots
     into recovery and automatically starts sideload mode,
     sideload-auto-reboot is the same but reboots after sideloading.
 sideload OTAPACKAGE      sideload the given full OTA package
 root                     restart adbd with root permissions
 unroot                   restart adbd without root permissions
 usb                      restart adbd listening on USB
 tcpip PORT               restart adbd listening on TCP on PORT
internal debugging:
 start-server             ensure that there is a server running
 kill-server              kill the server if it is running
 reconnect                kick connection from host side to force reconnect
 reconnect device         kick connection from device side to force reconnect
 reconnect offline        reset offline/unauthorized devices to force reconnect
usb:
 attach                   attach a detached USB device
 detach                   detach from a USB device to allow use by other processes
environment variables:$ADB_TRACE
     comma-separated list of debug info to log:
     all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp$ADB_VENDOR_KEYS         colon-separated list of keys (files or directories)$ANDROID_SERIAL          serial number to connect to (see -s)$ANDROID_LOG_TAGS        tags to be used by logcat (see logcat --help)$ADB_LOCAL_TRANSPORT_MAX_PORT max emulator scan port (default 5585, 16 emus)$ADB_MDNS_AUTO_CONNECT   comma-separated list of mdns services to allow auto-connect (default adb-tls-connect)
Online documentation: https://android.googlesource.com/platform/packages/modules/adb/+/refs/heads/master/docs/user/adb.1.md

4、列出已连接的设备列表

adb devices

此命令是列出所有连接设备,这命令平时少用,一般在同时连接了多个开发板才会用到这个命令。例如我这里连接了两台泰山派开发板。
在这里插入图片描述

案例:打开命令行窗口运行以下命令:

C:\Users\win>adb devices
List of devices attached
4d70015485fe537b        device
4d70015485fe537b        device

这里只是告诉大家有这个功能,后面都是基于一台设备情况下的操作。
5、启动设备的命令行
进入命令:

adb shell

命令说明:
连接到设备的 shell,你可以在命令行中直接输入命令,并且设备会执行这些命令。例如,你可以运行常见的 Linux 命令、执行设备特定命令,或使用各种adb工具提供的功能。

#进入设备
adb shell
#使用root权限
su
#在泰山中使用ls命令ls#在泰山派中使用pwd查看路径pwd#查看泰山派kernel日志-----非常重要-------
dmesg
#查看系统层日志-----非常重要-------
logcat

退出命令

exit

6、安装应用程序

adb install

打开cmd窗口运行以下安装命令其中C:\Users\win\Downloads\chrome.apk是安装包位置这里代替成自己的安装包目录即可。

C:\Users\win>adb install C:\Users\win\Downloads\chrome.apk
Performing Streamed Install
Success

提示安装成功并且我可以在android系统中看到Chrome图标。
在这里插入图片描述
同时我们也可以通过命令来查看是否安装成功,其中"adb shell pm list packages"命令使列出所有包并且通过grep 过滤出包含"chrome"关键字的包,如果想查看全部可以不加 “| grep chrome”

C:\Users\win>adb shell pm list packages | grep chrome
package:com.android.chrome

7、卸载应用程序
有安装肯定有卸载卸载命令是:

adb uninstall

先使用命令列出所有包,然后找到自己要卸载的应用

C:\Users\win>adb shell pm list packages
package:com.android.cts.priv.ctsshim
package:com.android.keychain
package:com.android.chrome
以下省略N行

假如我们这里需要卸载chrome,对应上面第四行。


C:\Users\win>adb uninstall com.android.chrome
Success

8、将文件从电脑复制到设备
这个功能非常实用的在调试设备的时候需要经常传东西,掌握这个命令的使用以后就不要再拿U盘考来考去啦。

adb push

在使用"adb push"命令将文件推送到 Android 设备之前,有时需要先执行 remount 操作,以便将设备的文件系统以可写模式挂载。默认情况下,Android 设备的文件系统通常以只读模式挂载,这是为了保护系统的完整性和安全性。这意味着你无法直接向设备的文件系统写入文件或修改系统文件。通过执行 remount 操作,可以将文件系统从只读模式切换为可写模式,允许向设备的文件系统写入文件或修改系统文件。因为执行remount需要root权限所有先执行root在执行remount。


#执行root
C:\Users\win>adb root
restarting adbd as root
#执行romout
C:\Users\win>adb remount
Using overlayfs for /system
Using overlayfs for /vendor
Using overlayfs for /odm
Using overlayfs for /product
Using overlayfs for /system_ext
Now reboot your device for settings to take effect
remount succeeded

命令格式为:“adb push 文件目录 开发板中的目录”

C:\Users\win>adb push C:\Users\win\Downloads\chrome.apk /data
C:\Users\win\Downloads\chrome.apk: 1 file pushed, 0 skipped. 48.3 MB/s (236058891 bytesin4.661s)
#进入查看是否成功
C:\Users\win>adb shell
rk3566_tspi:/# ls /data/c
cache/      chrome.apk#发现一直存在目录里了

在这里插入图片描述

9、将文件从设备复制到电脑

adb pull

“adb pull 开发板中的目录 文件保存目录”。

#在泰山派开发板中创建一个测试文件
rk3566_tspi:/data# echo "tispi" > pulldemo.txt#退出shell终端
rk3566_tspi:/data# exit#这里正式开始测试,我们把刚刚在/data/文件夹下的创建的pulldemo.txt复制到电脑C:\Users\win\Downloads中
C:\Users\win>adb pull /data/pulldemo.txt C:\Users\win\Downloads
#提示传输速率时间等,表示成功
/data/pulldemo.txt: 1 file pulled, 0 skipped. 0.0 MB/s (6 bytesin0.002s)

打开查看
在这里插入图片描述

10、查看设备的日志信息
下面这几个命令就非常重要了,我们调试代码分析问题大多数多是会打印日志来定位分析,大家之后如果有问题需要交流探讨建议也附上logcat与dmesg日志

  • logcat简单理解为负责Android层日志输出
adb logcat
  • dmesg简单理解为负责Linux层日志输出
adb dmesg

11、进入升级模式

adb reboot loader 

f、串口打印(未)

泰山派的串口波特率是1500000,所以使用前需要查看USB转串口模块是否支持1500000的波特率。
小手机项目中,使用CH343G芯片,通过pogopin连接泰山派的RXTX,可以使用串口。
等小手机转接板到了后,来补充串口的教程。

天空星,下载相应的固件后,可以支持SWD下载和串口
支持串口功能,我以为板子上会有CH系列的芯片,检查后发现没有
所以,应该是通过程序,令GD32F4系列芯片有了这个功能。
我记得稚辉君有个“下载器”,做的比较精致,等有机会研究研究设计一个。
搜了一下,叫Ultralink,淘宝498,有脱机下载功能,但还是需要接线
无线的下载器更好

2、ubuntu20.04(需自行烧录)(未)

a、adb调试工具使用(adb与ssh二选一使用)

adb类似于ssh
电脑装了虚拟机,可以用SSH远程登录虚拟机。
同样,电脑连接了泰山派Ubuntu,可以用adb连接泰山派Ubuntu。

应该与安卓11的adb一样使用

b、串口打印

c、ssh使用(adb与ssh二选一使用)

三、如何烧录固件

1、2+16版本

a、驱动:DriverAssitant_v5.11安装

  首先要做的是安装驱动,有了驱动你在后面的RKDevTool_Release_vXXX升级工具中才能识别到loader设备。
  下载驱动的压缩包,将压缩包解压,打开解压后的文件夹,找到 DriverInstall.exe。
  双击 DriverInstall.exe 文件来运行安装程序。根据系统的安全设置,可能需要管理员权限来运行该程序。如果出现安全提示,请确给予管理员权限。
  如果之前没有安装过直接点击安装即可,如果之前安装过驱动,需要先点击卸载旧驱动,然后再点击安装“弹出安装驱动成功弹窗”证明安装成功。
  完成安装后关闭安装程序。

b、烧录工具:RKDevTool_Release_v2.92安装

  下载烧录工具的压缩包,将压缩包解压,打开解压后的文件夹,找到 RKDevTool_Release_v2.92.exe。
  双击 RKDevTool_Release_v2.92.exe 运行烧录工具即可。

因为瑞芯微工具对不同电脑兼容都有差异,我们通过下面方式尽量规避一些问题
1、请用Win10系统电脑;
2、如果是1+0版本需要TF制作系统的U盘尽量买好的,测试发现比较差的U盘容易导致蓝屏和软件闪退,绿联的还行;
3、安装路径尽量避免出现中文以及特殊字符;

c、下载(升级)模式说明及下载步骤

两种模式的区别:(只明白区别即可)
在这里插入图片描述

1)Loader升级模式

  使用typec数据线连接泰山派开发板和电脑
在这里插入图片描述
  泰山派开发板下面板载了三个按键,进入Loader升级模式主要用到两个按键分别是RST与REC。进入Loader升级模式方法是:(前提是连接好电脑,并打开烧录软件)先按住REC按钮不放,接着按下复位按键并松开(按下后就松开),当烧录软件中出现“发现一个LOADER设备”后再松开REC按钮,下面就可以进行升级操作了。
在这里插入图片描述
具体操作步骤为:
  1. 发现设备升级模式类型:LOADER模式或者MASKROM模式
  2. 加载固件(选择要烧录的固件)
  3. 加载固件目录
  4. 点击升级
  5. 升级日志,时间有点长,耐心等待
在这里插入图片描述

2)maskrom升级模式

  在实际开发过程中我们Loader模式我们使用的更多,MaskRom模式主要是用来“救砖”的。也就是当你boot都损坏的情况才会去使用。进入MaskRom方法,先断开typec给开发板断电,泰山派开发板“MicroHDMI”附近有两个触点,使用镊子短接这两个触点,然后进行上电操作,当烧录软件中出现“发现一个MASKROM设备”后松开镊子。
  或者在上电的情况下,镊子短接两个触点,然后按以下复位。(视频里讲的,未验证)
在这里插入图片描述
  接下来就可以和上面一样进行加载镜像烧入了。

d、固件烧录测试

android11
ubuntu20.04(测试)
debian
buildroot

2、1+0版本(暂不介绍)

a、TF卡准备

TF卡作为存储器件,建议容量16G以上,不建议使用“闪迪”品牌。

b、读卡器准备

好一点的读卡器可以降低蓝屏概率。

c、SDDiskTool_v1.7升级卡制作工具安装

d、固件烧录测试

debian
buildroot
ubuntu20.04

四、环境搭建

1、电脑配置要求

  Android以及Linux SDK都非常庞大,所以对电脑的要求会比编译单片机高很多,我们电脑配置越好编译的速度就会越快,影响编译速度三点因素主要是CPU线程数、内存大小、硬盘的读写速度。
  CPU:
  必须为 64 位的多核处理器,推荐使用至少 4 核心的 CPU。
  内存:
  推荐使用 16 GB 或更高容量的内存。
  硬盘:
  Android 11 编译完成后的大小为204G,要编译Android的话需确保大于204G的存储空间。
  Linux 编译完成后的大小为80G,要编译Linux 的话需确保大于80G的存储空间。
  操作系统:
  推荐使用 Ubuntu 18.04 LTS 64 位版本或者更高版本的 Linux 操作系统。

2、搭建Ubunut系统编译环境的方式

  Ubuntu是一个免费的计算机操作系统,类似于Windows或MacOS。它是基于Linux的,意味着它非常稳定和安全。因为它易于使用、得到广泛支持、稳定可靠,并且提供了预打包的开发工具,所以绝大多少情况都会使用Ubunut系统来编译Android和Linux系统。
  常见的安装方法主要有一下三种:
  1、虚拟机:
  在Windows电脑上使用虚拟机软件(例如VirtualBox、VMware等)在计算机上创建一个虚拟的计算机环境,并在其中安装Ubuntu系统。这种方法允许你在现有的操作系统上同时运行Ubuntu,无需对硬盘进行分区或重新引导,这种方法在学习阶段最常见,网上资料教程都很多,也是我们最推荐初学者使用的,但是VMware是收费有版权问题,所以这个需要大家自己想办法安装,如果安装时候碰到问题欢迎联系我们交流探讨。
  2、Windows子系统 Linux(WSL2):
  如果你使用的是Windows 10操作系统,可以使用Windows Subsystem for Linux(WSL)来运行Ubuntu。WSL是一个兼容性层,允许你在Windows系统中运行Linux发行版,包括Ubuntu。通过WSL,你可以在Windows环境运行Ubuntu,这种方法最简单,但是听说WSL问题比较多,而且性能不如另外两种。
  3、直接安装:
  将Ubuntu操作系统直接安装到计算机的硬盘上来使用。这需要创建一个启动盘,将其插入计算机并从该启动盘引导,然后按照安装向导的指示进行操作。这种方法将在计算机上建立双重引导,让你选择在启动时使用Ubuntu或其他操作系统,这种方法性能最优秀,笔者平时就是用的这种方法。

VirtualBox安装(推荐)(见“第二部分”!)

  建议安装Ubuntu 18.04.6 LTS版本。
  这里暂时使用这个安装方式。
  具体安装步骤见“第二部分”!!!

vMware安装(推荐)

  建议安装Ubuntu 18.04.6 LTS版本

win10+ubuntu双系统

  不推荐,搞不好会坏电脑系统

wsl2

3、SSH搭建(见“第三部分”!)

  SSH全称secure shell,安全外壳协议(安全的shell),是一个计算机网络协议(默认端口号为22)。通过ssh协议可以在客户端安全(提供身份认证、信息加密)的远程连接LInux服务器或其他设备。
  使用广泛的Xshell软件就是基于SSH协议远程连接。
  SSH远程连接之后,就可以像操作本地的机器一样操作远程机器。当需要操控的机器不在本地时就可以使用ssh协议远程连接操控。
  具体搭建步骤见“第三部分”!!!

4、Samba搭建(见“第四部分”!)

  为了把虚拟机ubuntu中的文件目录映射到windows盘符下,这样你就可以和访问windows盘符目录一样去访问ubuntu系统里面的内容。

五、SDK编译

见“第五部分”

第二部分 VirtualBox安装

一、下载VirtualBox安装包

  下载VirtualBox安装包:下载地址
  根据自己电脑选择VirtualBox安装包的版本。
  一般选择windows。
按照自己的系统选择VirtualBox的版本
  点击后自动开始下载,大约106M。

二、安装VirtualBox

  双击运行VirtualBox-7.0.14-161095-Win.exe:
在这里插入图片描述
  选择我接受,然后点击下一步。
在这里插入图片描述
  这里可以自定义你的安装位置,一般不安装在C盘。可以D:\VirtualBox
在这里插入图片描述
  选择是
在这里插入图片描述
  选择是
在这里插入图片描述
  选择安装
在这里插入图片描述
  点击完成,因为我们勾选了安装后运行,所以点击完成后会自动打开软件。
在这里插入图片描述
  若没有勾选“自动运行”,可在桌面找到图标,双击运行。

三、创建虚拟机

  设置虚拟机名字,名字为英文字符(最好是小写),虚拟机的保存位置空间尽可能的大,如果编译泰山派的android+linux起码要400G。
在这里插入图片描述
在这里插入图片描述
  选择内存和处理,建议绿色拉满,尽量是越多越好。(绿色拉满就行)

  创建虚拟硬盘,这里因为我们要放泰山派SDK所以我们选择了500G,免得后面内存焦虑,接着点击下一步。
在这里插入图片描述
  展示信息,点击下一步。
在这里插入图片描述
  创建完成。(若上面勾选“预分配空间”,这个地方会显示“创建介质”,速度比较慢。创建介质完成后,会显示创建虚拟机成功)
在这里插入图片描述

注意事项!!!
1、显示
  合理设置“显存”大小,显存太小会导致虚拟机无法全屏显示。
2、存储
  硬盘接口通常分为五种类型:SATA接口硬盘(串行)、IDE接口硬盘(并行)、SCSI接口硬盘、光纤通道硬盘、SAS接口硬盘。
  硬盘分为固态硬盘(SSD 盘)、机械硬盘(HDD)、混合硬盘(HHD)三种。SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。
  这里我的电脑为IDE接口类型的SSD硬盘。这里是引用

四、ubuntu系统的iso(镜像)文件下载

使用这个版本的ubuntu镜像文件:ubuntu-18.04.6-desktop-amd64
三个下载地址:
  中科大源
  阿里云源
  官方(很慢不推荐)
这里选择阿里云源下载:
在这里插入图片描述
在这里插入图片描述
等待下载完成。
在这里插入图片描述

五、为虚拟机安装ubuntu系统

1、选择盘片

  点击虚拟机,然后点击设置
在这里插入图片描述
  注意!!! 存储这里,第一IDE控制器从通道没有盘片!!
  后面为它添加ISO文件!
在这里插入图片描述
  进入设置界面选择存储,在选择没有盘片,接着点击“选择虚拟盘”,选择前面下载好的ubuntu-18.04.6-desktop-amd64.iso
在这里插入图片描述
  点击确定
在这里插入图片描述

2、设置网络

方式1:
  为了后面能够ubuntu连网,并且和windows互ping,我们设置两张网卡。网卡1用来访问外网(虚拟机与互联网连接),网卡2用来和windows互ping(虚拟机与“自己电脑”连接),设置完成后点击确定。
在这里插入图片描述
在这里插入图片描述  勘误,放弃这种方法。原因:选择这种方法是因为我当时选择桥接网卡模式不能上外网后面发现是公司屏蔽导致,所以当时使用此解决方案,在使用过程中发现这种方法有一张网卡容易掉!!!

方式2:
  直接使用桥接网卡就行,桥接模式将虚拟机直接连接到你的物理网络。以这种方式设置时,虚拟机将从网络中获得一个独立的IP地址,就像另一台物理机一样。使用桥接适配器,您可以ping通百度,并从Windows 宿主机与Ubuntu虚拟机互ping。
在这里插入图片描述

选择桥接网卡时,有个问题
笔记本有线网络和无线网络选择的桥接网卡不一样!!!
之前一直用有线网络,回家后换到无线网络,发现虚拟机ping不通了
于是就发现了这个问题
在这里插入图片描述
在这里插入图片描述

3、开始安装

点击启动虚拟机。
在这里插入图片描述
如果弹出消息,可以点击右上角关闭。
在这里插入图片描述
如果你鼠标点击了,会出现这个,选择取消。
在这里插入图片描述
这个有些人会出现,有些人不会出现,出现以后选择中文或者英文,通过上下按键切换选择,回车键确定选择。(最好是选择英文)
在这里插入图片描述
这个也有些人会出现,有些不会,出现了就回车选择。
在这里插入图片描述

选择英文,并鼠标点击安装ubuntu。
在这里插入图片描述
选择continue。
在这里插入图片描述
选择最小安装,点击continue。
在这里插入图片描述
擦除磁盘再安装。
在这里插入图片描述
选择Continue。
在这里插入图片描述
地区随便选择。
在这里插入图片描述
输入你的名字和密码,然后点击continue。
在这里插入图片描述
等待安装完成。
在这里插入图片描述
安装完成,提示重启,点击现在重启。
在这里插入图片描述
因为我们这里启动项是ISO引导文件,所以提示移除光盘。
在这里插入图片描述
选择设备,分配光驱,选择ubuntu-18.04.6-desktop-amd64.iso
在这里插入图片描述
选择移除虚拟盘。
在这里插入图片描述
强制释放。
在这里插入图片描述
接着重启。
在这里插入图片描述
确定重启。
在这里插入图片描述
重启完成后,ubuntu系统安装完成。

六、解决windows和虚拟机无法相互复制问题

第一步:共享粘贴板选择双向。
在这里插入图片描述
第二步:选择安装增强功能。

注:
在这里插入图片描述

在这里插入图片描述
运行。
在这里插入图片描述
输入密码。
在这里插入图片描述
安装完成关闭窗口。
在这里插入图片描述
重启生效。
在这里插入图片描述

七、系统快照(备份)

控制中有“生成备份”,点击。
在这里插入图片描述
添加信息,并点击确定。
在这里插入图片描述
虚拟系统右侧会显示,正在生成备份。
在这里插入图片描述
查看系统快照。
在这里插入图片描述
点击“回复备份”后,会提示,要求创建当前版本的备份,然后再“回到V1.0.0”版本。
在这里插入图片描述

八、检查网络

ping不通,需要关闭防火墙。
ping通后,虚拟机内部浏览器可上网。

1、虚拟机ping百度

打开虚拟机终端,输入ping www.baidu.com
结果为:
在这里插入图片描述
ctrl+c:中止终端中的运行程序。

2、虚拟机ping宿主机

宿主机中,右键打开“终端”。
在这里插入图片描述
输入ip config,点击回车,查看以太网地址IPV4。
如果宿主机使用有线网络,则使用以太网的地址。
如果宿主机使用无线网络。则使用WLAN的地址。
有多个“以太网适配器”的原因是有多个网卡,安装VMware、docker这类的虚拟化程序都会新增一个虚拟网卡。
默认使用“以太网适配器 以太网”的IPV4地址。

注:
以太网是一种局域网,只能连接附近的设备
因特网是广域网,我们可以通过因特网连接到世界各地。
两者都算是用来连接电脑的网络,但是两者的范围是不同的。以太网是局限在一定的距离之内的,我们可以有成千上百个以太网;但是因特网呢,是最大的广域网了,我们只有一个因特网,所以因特网又可以说是网络中的网络

在这里插入图片描述
在虚拟机中打开终端,输入ping 192.168.10.2,地址为自己电脑实际的地址。
出现下面的结果,说明连接成功。
ctrl+c:中止终端中的运行程序。
在这里插入图片描述

3、宿主机ping虚拟机

虚拟机中打开终端,输入ifconfig,查看虚拟机的地址。

第一次使用ifconfig时,会出现提示,按照提示安装工具即可。

在这里插入图片描述
在宿主机的终端里输入,ping 192.168.10.8
出现下面的结果为测试通过。
在这里插入图片描述

九、虚拟机网络说明

一般虚拟机都会提供了三种网络工作模式,分别是:
  1、Bridged(桥接模式)
  2、NAT(网络地址转换模式)
  3、Host-Only(仅主机模式)

1、Bridged(桥接模式)

  桥接模式就是将主机的网卡,与虚拟机虚拟的网卡利用虚拟网桥进行通信。
  类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。
  虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。
其网络结构如下图所示:
在这里插入图片描述
  VirtualBox虚拟机会默认安装Bridged网卡和Host-Only网卡:
在这里插入图片描述
  安装后可以在“此电脑”上右键,查看“管理”,“设备管理器”,“网络适配器”
在这里插入图片描述
  在虚拟机里选择要桥接的物理网卡,这里选择的是Realtek这个网卡。
在这里插入图片描述
  虚拟机终端中输入ifconfig查看网卡
在这里插入图片描述
  宿主机终端中输入ipcinfig查看网络
在这里插入图片描述
  虚拟机和宿主机网卡中的网络地址都是198.168.10,两者都是在同一网段下,可以互通。
小结:
  1、桥接模式:物理机和虚拟机在网络上是一样的,虚拟系统相当于在此网络下的一个独立系统,需要分配网络的一个独立IP。
  2、连接时指定的桥接到哪个物理网卡,相当于要把虚拟系统接到那个网段的交换机上。

2、NAT(网络地址转换模式)

  NAT模式下,虚拟机访问网络的所有数据都是由宿主机提供的,虚拟机并不真实的存在于网络上,主机和网络中的任何机器是不能查看和访问这个虚拟机的。
在这里插入图片描述
NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。

DHCP用于动态分配虚拟机的IP地址。
物理机下的虚拟网卡,在VMware下是VMnet8网卡,在VirtualBox下不可见。

另外,在连接上:

虚拟机可以通过网络访问主机.
主机无法通过网络访问虚拟机。

小结:
  1、这种虚拟系统都是隐藏在物理机后面的机器,在网络上是看不见的,地址由DHCP负责分配,上网有NAT设备负责。
  2、这种网络连接实现有些系统不需要暴露在网络节点上又需要上网的这种需求,这也是最简单的一种虚拟机使用方式。

3、Host-Only(仅主机模式)

  Host-Only听名字就是只和主机建立关系。这种模式是将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。
  它的网络结构是在NAT网络的基础上,去除虚拟NAT设备让它不能上网,如下图所示:
在这里插入图片描述
  在虚拟机安装完后,windows下就会多出来一个Host-Only网卡,这个虚拟网卡就是用来实现通信用的。
在这里插入图片描述
  在选择Host-Only模式时,需要选择一块Host-Only网卡用于和虚拟机进行通信使用:
在这里插入图片描述
  相互ping都是通的,这里不再验证。

4、总结

  桥接模式:实现虚拟机在真实的网络上;
  NAT模式:实现虚拟机隐藏在宿主机之后,能上网,但不能访问宿主机;
  Host-Only模式:实现虚拟机隐藏在宿主机之后,不能上网,但可以访问宿主机;
  上面只是介绍选用一个网络模式的情况,在实际使用中,我们还可以同时使用两种及以上的网络模式,比如:NAT + Host-Only,这样可以实现虚拟机上网和宿主机通信两种能力。

十、 删除虚拟机

在虚拟机上右键,点击删除。
在这里插入图片描述
出现这个界面后,看个人情况。如果你只是想删除虚拟机,则选“只是移除”,若是想删除所有文件,包括虚拟机,则选“删除所有文件”。
在这里插入图片描述

第三部分 SSH搭建

为了远程登陆虚拟机(或者叫作服务器)

一、虚拟机安装SSH服务

安装ssh服务。
在虚拟机终端中,依次输入下面的命令。

sudo apt-get update

显示结果
在这里插入图片描述

sudo apt-get install openssh-client

显示结果
在这里插入图片描述
在这里插入图片描述

sudo apt-get install openssh-server

显示如果
在这里插入图片描述

启动ssh服务。

/etc/init.d/ssh start

显然如下表示启动正常

[ ok ] Starting ssh (via systemctl): ssh.service.

显示结果
在这里插入图片描述

查看是否安装成功

sudo ps -e | grep ssh

在这里插入图片描述

二、安装MobaXterm软件

官网下载Mobaterm软件:下载地址
选择左侧的免费版本。
在这里插入图片描述
下面再选择左侧,左侧为便携版打开就能用,右边安装版本就直接下一步下一步。
在这里插入图片描述

三、MobaXterm软件中登陆ubuntu服务器

虚拟机的终端中输入ifconfig,查看地址。
在这里插入图片描述

找到下载的程序,双击打开。
在这里插入图片描述
建立SSH。
在这里插入图片描述
建立完成后,输入用户名和密码,进行登录。用户名一定小写!!!
在这里插入图片描述
登录后,在这个界面输入“指令”,等于在虚拟机终端输入“指令”。
输入exit或者使用快捷键ctrl+d,logout SSH,然后关闭即可。

第四部分 samba搭建

  需要在gongjin文件夹下建立tspi文件夹,然后将tspi 文件夹映射到windows盘符下。
在home目录下,输入mkdir tspi建立文件夹。

一、为什么使用samba?

  就是为了把虚拟机ubuntu中的文件目录映射到windows盘符下,这样你就可以和访问windows盘符目录一样去访问ubuntu系统里面的内容。

二、安装samba

虚拟机的终端中,依次输入下面的指令

sudo apt-get install samba
sudo apt-get install smbclient

安装完成后,查看samba的版本,大写V

samba -V

前面两步结果很长,不再展示。只显示最终结果。
在这里插入图片描述

三、配置samba

虚拟机的终端中,依次输入下面的指令

sudo vi /etc/samba/smb.conf

这里是引用
其中的“vi”是vi编辑器,和vim编辑器类似,进入后是命令模式,方向键移动光标,找到插入的位置,按“i”进入插入模式,再按shift+insert可粘贴文本
然后按esc由插入模式进入命令模式
再输入“:wq”,保存并退出
可以使用“sudo apt-get install vim”安装vim
再使用sudo vim /etc/samba/smb.conf,可以使用vim配置samba。
(注意vim后有个空格)

写入配置(注意vi编辑器的操作方法)

[EX_DISK_A]
   comment = share folder
   browseable = yes
   path = /home/gongjin/tspi
   valid users = gongjin, gongjin
   write list = gongjin, gongjin
   inherit owner = yes
   browsable = yes
   admin users = gongjin, gongjin
   public = yes
   writable = yes
   create mask = 0755
   read only = No
   directory mode = 0755

合适的位置写入即可,写入完成后输入:wq退出。
在这里插入图片描述
需要注意!!!
tspi文件夹下输入pwd获得文件夹的路径。
路径下的文件夹应该存在。
用户名等应该为自己的用户名。
在这里插入图片描述
设置用户远程访问密码
gongjin为用户名

sudo smbpasswd -a gongjin

输入后提示输入密码
这里输入“a”作为密码。

上面命令中的“-a”不是密码。

输入下面命令,进行重启samba

sudo service smbd restart

输入后的结果为
在这里插入图片描述

四、映射到windows

当电脑换了网络,例如从家里去到了学校,samba和ssh还是之前的网络地址,所以电脑换了网络后,samba和ssh就无法连接。
samba:可以看到上面的文件并不会因网络地址改变后收到影响。所以删除原来的网络驱动器(盘符)(也可以不删),ifconfig查看新的网络地址,用新的网络地址重新映射盘符,即可。
ssh:使用新的网络地址,新建session,即可。

在科技的时候,办公室没网了,将自己的网线从路由器拔下,直插到墙上的网线接口
查看虚拟机ifconfig,地址变为10.20.16.81
在这里插入图片描述
电脑网线插路由器时,地址为192.168.10.1,这种格式的

查了一下192与10地址的区别:
1、不同的IP地址类别:
10的开头的IP地址属于10.X.X.X是A类地址中的私有地址(所谓的私有地址是互联网上未使用但在局域网中使用的地址。

192的开头是C类地址中的私有地址:192.168.X.X是私有地址。
2、IP号码的范围不同:
A类专用地址范围:10.0.0.0-10.255.255.255,默认子网掩码:255.0.0.0,共16581375个地址。
C类专用地址范围:192.168.0.0-192.168.255.255,默认子网掩码:255.255.0.0,共65,025个地址。

自我感觉,A类地址下面有很多C类地址,他们之间有个从属关系。

Windows按键+R弹出对话框,输入\加ip地址
在这里插入图片描述
确定后,会弹出下图。输入账号密码后点击确定。
在这里插入图片描述
出现下图,说明已经将tspi文件夹映射到下图文件夹中。
在这里插入图片描述
再将下图文件夹映射到“盘符”中。在文件夹上方右键,选择“映射到网络驱动器”。
在这里插入图片描述
映射完成。
在这里插入图片描述
双击打开,可以查看虚拟机中的tspi文件夹。
在这里插入图片描述
可以用VScode打开文件夹中的程序文件,更方便修改。
即:可以在宿主机中,修改虚拟机的文件。

不使用时,可以在盘符上右键,断开连接!!!
可以在盘符和虚拟机上分别互相建立文件夹进行验证!

注:
宿主机关机后,重启ubuntu,samba是开启的,但是无法进入盘符。
暂时没找到原因
如果出现此情况,可以在盘符上右键,断开连接,再重新执行四、映射到windows

五、samba启动、停止、重启、查看状态

samba启动:

sudo service smbd start

samba停止:

sudo service smbd stop

samba重启:

sudo service smbd restart

samba查看状态:

sudo service smbd status

在这里插入图片描述

第五部分 SDK编译

    很多同学有疑问为什么要编译SDK,编译SDK看着挺麻烦的,不编译行不行?
    这个没有标准答案,如果你只想下载别人编译好的固件并且做一些应用层的开发那可以不用编译SDK。
    那如果你想自己去适配一些驱动,比如在内核中加入CH340驱动,或者点亮一款新的屏幕,又或者你想优化或者定制属于自己的东西,甚至制作一款自己的板子这都离不开SDK编译。
    SDK编译并不难,大家常见的一般也都是环境问题,跟着教程一步一步来不会有太大问题。

一、环境

电脑环境
在这里插入图片描述
虚拟机环境
在这里插入图片描述

二、原理图讲解(主要是电源域)

三、编译Linux SDK(repo版本)

   这里演示repo版本的。repo主要是用来管理git仓库的,有了repo你修改代码就会有记录,但是同样的也会比非repo版本占用空间大上一半。
   repo是管理git的工具。

1、下载SDK

   需要下载的文件有四个:

  • 带repo版本的SDK:tspi_linux_sdk_repo_20240131.tar.gz
  • 带repo版本的SDK校验文件:tspi_linux_sdk_repo_20240131_md5sum.txt
  • buildroot相关库(如果你的网络比较差很有可能编译的时候自动下载失败报错,所以我提供了一个下载好的,直接代替可以避免错误):buildroot_dl_4c7c9df616fb.tar.gz
  • buildroot相关库的校验文件:buildroot_dl_4c7c9df616fb_md5sum.txt

选择要下载的文件:
在这里插入图片描述
找到你samba映射的盘符,我这里映射到x盘,并且命名为ex_disk_a。在这个盘下面我新建了一个名为linux的目录来保存SDK相关文件。
在这里插入图片描述
linux文件夹建立完成后,直接通过samba,将四个文件移动到该文件夹下。
在这里插入图片描述
移动完成后:
在这里插入图片描述

2、校验

校验的目的是为了防止下载过程中出现的错误,用md5sum 查看下载的SDK的md5值:a30f1d0fdb97ca994a82689fa26ba429
使用md5sum命令,输入md5sum tspi_linux_sdk_repo_20240131.tar.gz
查看tspi_linux_sdk_repo_20240131.tar.gz文件的校验码。
再使用cat命令,查看tspi_linux_sdk_repo_20240131_md5sum.txt中保存对策校验码。
如果一样,则证明下载的包没有损坏。
buildroot_dl_4c7c9df616fb.tar.gz文件的校验和上面也是一样的操作。
在这里插入图片描述

3、解压

前提准备
在这里插入图片描述
tspi_linux_repo_sdk的文件夹下,运行下面命令,进行解压,注意这个命令跟据电脑配置情况不同耗时不同,几分钟到个把小时不等。

tar -xvzf tspi_linux_sdk_repo_20240131.tar.gz

sdk解压出来以后是一个.repo文件,.开头的文件会隐藏想要查看需要用ls --all命令。
在这里插入图片描述
在ssh中查看为
在这里插入图片描述
在samba中查看为
在这里插入图片描述
再将repo移回到上级目录,可以使用samba移动,或者mv命令移动。
在这里插入图片描述
在这里插入图片描述

4、同步代码

解压完成后只有.repo目录我们还需要通过repo命令把代码同步出来,运行repo命令需要我们ubuntu安装有git和python否则会报错。

  • 更新软件包
sudo apt-get update
  • 安装git
sudo apt-get install git -y
  • 安装repo
sudo apt install repo -y
  • 安装python2
sudo apt-get install python2.7
  • 安装python3
sudo apt-get install python3
  • 设置 python2.7
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
  • 设置 python3.6
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
  • 切换
sudo update-alternatives --config python

同步linux代码时,切换到python2.7

$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.6   2         auto mode
  1            /usr/bin/python2.7   1         manual mode
  2            /usr/bin/python3.6   2         manual mode

Press <enter> to keep the current choice[*], or type selection number: 1

可以录制宏来快速切换python的版本。

将repo的代码同步出来。(本节关键步骤)

.repo/repo/repo sync -l -j88

结果
在这里插入图片描述
代码同步成功后,会多出来许多关于代码的文件夹,ls --all查看
在这里插入图片描述
用samba查看同步代码成功后的文件夹,共十八项(可以与sdk编译后的文件夹目录对比)
在这里插入图片描述

编译builtroot时,下载东西,会有404报错。
也就是前面我们有提到,如果你的的网络不好,可能会有buildroot的库下载失败报错的问题(需要魔法),所以我们这里直接提供了下载好的库直接代替即可。
代替方法如下:在这里插入图片描述>即,解压buildroot_dl_4c7c9df616fb.tar.gz后会得到一个build文件夹,将这个文件夹放到与“.repo”文件夹并列。

同步代码完成后,为了防止buildroot的库下载失败报错的问题,将buildroot_dl_4c7c9df616fb.tar.gz文件夹解压,得到buildroot/dl/(需要下载的库文件),使用samba,将buildroot文件夹移动到tspi_linux_repo_sdk文件夹下(win下同名文件夹会复写)。
即用解压后的buildroot去复写tspi_linux_repo_sdk下的buildroot
或者说,解压后的“dl”文件夹,移动到tspi_linux_repo_sdk下的buildroot里面。
查看tspi_linux_repo_sdk-buildroot-dl目录。
在这里插入图片描述

5、安装编译环境

sudo apt-get install git ssh make gcc libssl-dev liblz4-tool expect \
g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \
qemu-user-static live-build bison flex fakeroot cmake gcc-multilib \
g++-multilib unzip device-tree-compiler ncurses-dev

在这里插入图片描述

6、泰山派板级配置

泰山派SDK板级配置,选3. BoardConfig-rk3566-tspi-v10.mk

  • 方法一:
./build.sh device/rockchip/rk356x/BoardConfig-rk3566-tspi-v10.mk

运行如下:
在这里插入图片描述

  • 方法二:
./build.sh lunch

运行命令选择BoardConfig-rk3566-tspi-v10.mk,这里序列号是3,所以我们选择3并回车。
在这里插入图片描述

  • 查看配置是否生效
    运行后可以看到配置文件正是tspi,证明配置生效。
    在这里插入图片描述

7、编译buildroot系统(!!!!)

全编译

全编译时间大约一个多小时的时间。

全编译就是自动化执行每个单独编译
所以具体结果,请查看单独编译部分
运行下面的代码,选择buildrot操作系统,注意每次关闭窗口以后要重新运行.

export RK_ROOTFS_SYSTEM=buildroot

运行自动全编译命令,注意:只编译(u-Boot,kernel,Rootfs,Recovery)编译完成以后需要再执⾏./mkfirmware.sh 进⾏固件打包,与./build.sh updateimg生成镜像,很多小伙伴出现编译完成但烧录镜像不对都是因为没有执行这两个命令导致的。

./build.sh all

第一次编译kernel时,需要根据电路设计,确定电源。
电源选择,选择不对会编译报错,这里大家记住除了VCCIO4和6选1.8V其他都选3V3,如果没有弹电源选择框则需要安装sudo apt install whiptail后在重新编译。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
全编译成功,如果你中途出现了报错请检查虚拟机是否按照教程搭建,环境安装是否有遗漏。
在这里插入图片描述

注:这里可以做一个编译前后文件夹变化的对比
在这里插入图片描述
在这里插入图片描述

注:编译完成后,在rockdev文件夹下,只有三个文件,如下图
在这里插入图片描述
然后需要执行固件打包命令,执行完成后,rockdev会变为十个文件(分散镜像等文件),如下图
在这里插入图片描述
再执行打包镜像命令,生成一个镜像,如下图
在这里插入图片描述

进⾏固件打包

./mkfirmware.sh

固件打包完成
在这里插入图片描述
查看时间如果和你当前时间差不多那么就证明固件打包成功(分散镜像)
在这里插入图片描述
下载固件
在win10中打开RKDevTool.exe工具,下载配置文件:
在这里插入图片描述
打开烧录软件
在这里插入图片描述
在这里插入图片描述
右键导入配置文件
在这里插入图片描述
导入配置文件后
在这里插入图片描述
然后将路径改为samba的rockdev中各文件的路径。(这里是十个文件,正好rockdev中也是十个文件)
在这里插入图片描述
接着操作按住泰山派REC按键不松,轻触一下RST按键等待进入Loader模式后松开REC按键,当工具发现一个LOADER设备后点击“执行”升级(第一部分中“三、如何烧录固件”的操作)。
我们上面打包的固件,如果要分享给别人非常麻烦,烧录的时候还需要加载配置文件,而且还是零散的,所以我们可以把他们打包成一个镜像。注意:执行这么命令前需要保证固件打包的是最新的,否则先执行./mkfirmware.sh打包固件命令。再执行“打包镜像”命令。

./build.sh updateimg

成功生成镜像,结果如下。
在这里插入图片描述
samba查看生成的完整镜像。
在这里插入图片描述
下载固件(完整镜像)
在win10中打开RKDevTool.exe工具,选择升级固件,并把路径改成上面文件路径samba路径,接着操作按住泰山派REC按键不松,轻触一下RST按键等待进入Loader模式后松开REC按键,当工具发现一个LOADER设备后点击执行升级。
在这里插入图片描述

下载完成后等待一会,如果连接HDMI屏幕,此时HDMI会有视频画面输出,恭喜你至此就成功的编译和下载了buildroot系统。
在这里插入图片描述

单独编译

单独编译完成后,可以使用烧录工具,单独烧录。
在这里插入图片描述

u-boot编译

U-Boot编译命令

./build.sh uboot

查看U-Boot详细编译命令

./build.sh -h uboot

开始编译
在这里插入图片描述
编译完成
在这里插入图片描述
在这里插入图片描述

kernel编译

Kernel编译命令

./build.sh kernel

查看Kernel详细编译命令

./build.sh -h kernel

编译开始(编译Kernel时,需要确定电源)
在这里插入图片描述
编译完成
在这里插入图片描述

buildroot编译

Rootfs 编译
进⼊⼯程⽬录根⽬录执⾏以下命令⾃动完成 Rootfs 的编译及打包:

./build.sh rootfs

编译后在 Buildroot ⽬录 output/rockchip_rk3566/images下⽣成 rootfs.ext4。
开始编译
在这里插入图片描述
编译结束
在这里插入图片描述
模块编译
⽐如 qplayer 模块,常⽤相关编译命令如下:

  • 编译 qplayer
SDK$make qplayer
  • 重编 qplayer
SDK$make qplayer-rebuild
  • 删除 qplayer
SDK$make qplayer-dirclean

或者

SDK$rm -rf /buildroot/output/rockchip_rk3566/build/qlayer-1.0
Recovery编译命令

Recovery编译命令

./build.sh recovery

查看Recovery详细编译命令

./build.sh -h recovery

注:Recovery是⾮必需的功能,有些板级配置不会设置

开始编译
在这里插入图片描述
编译结束
在这里插入图片描述

8、编译debian系统(只搬运教程,未测试)

选择debian 注意每次关闭窗口以后要重新运行。

export RK_ROOTFS_SYSTEM=debian

因为我们前面编译buildroot的时候已经全编译过了,那我们接下来就只单独编译debian!!!

./build.sh debian

也可以执行全编译

./build.sh all  # 只编译模块代码(u-Boot,kernel,Rootfs,Recovery)
                # 需要再执⾏./mkfirmware.sh 进⾏固件打包

注:这里不知道buildroot和debian的关系。

弹窗提示输入你的root密码输入回车即可
在这里插入图片描述
报错,这个问题,我们看报错应该是lb_config中相关配置文件问题,这里可以看到链接都是国外镜像源需要魔法,所以我们把这个链接改成国内镜像源。
在这里插入图片描述
修改方法,我们之前都是使用vim去修改文件相信对这种方法大家已经很熟悉了,既然我们前面映射了samba那我们就直接在win10打开文件目录修改
在这里插入图片描述
我们这里编译64位的所以进入buster-desktop-arm64目录,打开下面的文件,并修改。
在这里插入图片描述
把下面内容代替下图红框中的位置

 --mirror-bootstrap "http://mirrors.163.com/debian" \
 --mirror-chroot "http://mirrors.163.com/debian" \
 --mirror-chroot-security "http://mirrors.163.com/debian-security" \
 --mirror-binary "http://mirrors.163.com/debian" \
 --mirror-binary-security "http://mirrors.163.com/debian-security" \

在这里插入图片描述
代替后的效果
在这里插入图片描述
再重新执行编译debian的命令

./build.sh debian

输入root用户密码
在这里插入图片描述
恭喜你编译成功
在这里插入图片描述
进⾏固件打包

./mkfirmware.sh

得到分散镜像,此时,可按buildroot下载分散镜像的方法下载。

执行下面的命令,打包为完整的镜像。
注意:执行这么命令前需要保证固件打包的是最新的,否则先./mkfirmware.sh在执行此命令

./build.sh updateimg

成功生成镜像。
可以看到目录下比之前多了一个update.img文件,而且看时间也是最新的。
此时,可按buildroot下载完整镜像(固件)的方法下载。
下载完成等一会就hdmi会输出debian界面,系统的账号和密码都是linaro,看到下面界面那么恭喜你已经成功的编译并下载了debian。
在这里插入图片描述

9、编译ubuntu系统(未)

10、单独编译kernel(只适合带emmc版本)

四、编译Android11 SDK(repo版本)

这里我们演示repo版本的,很多同学就会有疑问,repo是啥?为什么要用这个版本呢?repo主要是用来管理git仓库的,有了repo你修改代码就会有记录,但是同样的也会比非repo版本占用空间大上一半。

1、下载SDK

需要下载的文件:

  • 带repo版本的SDK
tspi_android_sdk_repo_20240202.tar.gz
  • 带repo版本的SDK校验文件
tspi_android_sdk_repo_20240202_md5sum.txt

下载完成后,使用samba,将文件移动到tspi/andriod11文件夹下。
在这里插入图片描述

2、校验

校验的目的是为了防止下载过程中出现的错误,用md5sum 查看下载的SDK的md5值:16936e9c6074ad753d50655ae53382ed

md5sum tspi_android_sdk_repo_20240202.tar.gz
16936e9c6074ad753d50655ae53382ed  tspi_android_sdk_repo_20240202.tar.gz

再看一下我们给的mdk值看这里两个值是否一样,如果一样则正确

cat tspi_android_sdk_repo_20240202_md5sum.txt
16936e9c6074ad753d50655ae53382ed  tspi_android_sdk_repo_20240202.tar.gz

最终效果
在这里插入图片描述

3、解压

跟编译linux时,进行同样的操作,新建一个tspi_android_repo_sdk文件夹,将sdk的压缩文件移入到这个文件夹下进行解压,解压完成后,将压缩文件再移动出来,或者将压缩文件删除,节约空间。这里为了和编译linux时保持一致,选择将压缩文件移动出来,防止编译出错时还需要将压缩文件重新移入的问题。

新建tspi_android_repo_sdk文件夹后,在这个文件夹下解压两次均出错。
所以又在linux文件夹下解压,一次正确,后续就在linux这个文件夹下操作。

tspi_android_repo_sdk文件夹下执行下面的命令,开始解压

tar -xzf tspi_android_sdk_repo_20240202.tar.gz

解压命令中,不加v,不看解压日志
也可通过samba,使用电脑的压缩软件解压。

解压完成,大约花费20分钟。(KJ224电脑)
(笔记本解压 很快完成)
在这里插入图片描述
同样的,sdk解压出来以后是一个.repo文件,.开头的文件会隐藏想要查看需要用ls --all命令。
使用samba查看解压后的文件。
在这里插入图片描述

4、同步代码

解压完成后只有.repo目录我们还需要通过repo命令把代码同步出来,运行repo命令需要我们ubuntu安装有git和python否则会报错。
更新软件包(前面安装过就不用再安装了)

sudo apt-get update

安装git(前面安装过就不用再安装了)

sudo apt-get install git -y

安装repo(前面安装过就不用再安装了)

sudo apt install repo -y

安装python2(前面安装过就不用再安装了)

sudo apt-get install python2.7

安装python3(前面安装过就不用再安装了)

sudo apt-get install python3

python版本切换设置,为什么要切换呢?因为有时候我们会用python2有时候会用python3(前面做过了就不用再重复了)
直接切换命令

 $设置 python2.7
 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
 $设置 python3.6
 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

切换后,自己选择切换版本命令

sudo update-alternatives --config python

同步android代码时,切换到python2.7

$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.6   2         auto mode
  1            /usr/bin/python2.7   1         manual mode
  2            /usr/bin/python3.6   2         manual mode

Press <enter> to keep the current choice[*], or type selection number: 2

执行同步代码的命令

.repo/repo/repo sync -l -j88

同步成功,结果如下图所示
在这里插入图片描述
在这里插入图片描述

这是在tspi_android_repo_sdk文件夹,同步代码出现的错误。
在这里插入图片描述
ls查看文件夹
在这里插入图片描述

切换到开发板分支!!!

cd kernel/ && git clean -xdf && cd .. && repo forall -c "git checkout lckfb-tspi-v1.0.0"

命令解析,首先到cd kernel目录下git clean -xdf清除掉差异否则会同步失败,这个问题下一版解决,然后cd ..退回到SDK目录下。
repo forall -c "git checkout lckfb-tspi-v1.0.0"通过repo命令切换到泰山派分支.

&&代表命令组合,分开执行也行,这里选择分开执行

查看执行过程,如下图:
在这里插入图片描述
在这里插入图片描述

5、安装编译环境

将下面的命令输入到终端,运行即可。

sudo apt-get update && sudo apt-get install -y git python make openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libgl1-mesa-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libxml2-utils xsltproc unzip python bc imagemagick ccache schedtool libssl-dev libncursesw5-dbg libncursesw5-dev libncurses5 libncursesw5 libncursesada5-dev libncurses5-dbg libncurses5-dev libncursesada-doc libncursesada5 libncurses-dev libncurses-gst libncurses5-dev clang

安装成功
在这里插入图片描述

6、全编译Android11(编译大概5个小时)

这个命令会编译boot、kernel、android

cd u-boot && ./make.sh rk3566 && cd ../kernel && make clean && make distclean && make ARCH=arm64 tspi_defconfig rk356x_evb.config android-11.config && make ARCH=arm64 tspi-rk3566-user-v10.img -j16 && cd .. && source build/envsetup.sh && lunch rk3566_tspi-userdebug && make installclean -j16 && make -j16 && ./mkimage.sh

电源选择,选择不对会编译报错,这里大家记住除了VCCIO4和6选1.8V其他都选3V3,如果没有弹电源选择框则需要安装sudo apt install whiptail后在重新编译。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
恭喜你编译成功,我的电脑i7-9700,32G花费4小时26分钟(教程用时)(第一次用时会比较久,后面不make clean的话,全编译就几分钟)

make clean就是清除所有的编译文件,一切重新开始

如果你中途出现了报错请检查虚拟机是否按照教程搭建,环境安装是否有遗漏。
查看结果:
KJ224电脑用时5个小时
在这里插入图片描述

自己笔记本进行安卓全编译,32G 11代i5 11400H
编译时间 3:21
在这里插入图片描述

进⾏固件打包

 ./mkimage.sh

看一下时间是否和你编译时间接近,确保打包成功
在这里插入图片描述

ls rockdev/Image-rk3566_tspi/ -l

查看结果
在这里插入图片描述
samba查看结果
在这里插入图片描述

下载固件,在win10中打开RKDevTool.exe工具,下载配置文件:
在这里插入图片描述
导入配置文件,并把路径改成上面文件路径samba路径,接着操作按住泰山派REC按键不松,轻触一下RST按键等待进入Loader模式后松开REC按键,当工具发现一个LOADER设备后点击执行升级。

我们上面打包的固件,如果要分享给别人非常麻烦,烧录的时候还需要加载配置文件,而且还是零散的,所以我们可以把他们打包成一个镜像。注意:执行这么命令前需要保证固件打包的是最新的,否则先./mkimage.sh在执行此命令

./build.sh -u

成功生成镜像
可以看到目录下比之前多了一个update.img文件,而且看时间也是最新的,之前有小伙伴没有执行上面命令就直接烧录update.img,出现不是自己编译的固件情况,这里再次强调,需要先执行./mkfirmware.sh再执行./build.sh updateimg并且确保时间是最新的。
查看结果:
在这里插入图片描述
在这里插入图片描述
得到上面的信息,证明打包为一个镜像成功!!!

下载镜像,在win10中打开RKDevTool.exe工具,选择升级固件,并把路径改成上面文件路径samba路径,接着操作按住泰山派REC按键不松,轻触一下RST按键等待进入Loader模式后松开REC按键,当工具发现一个LOADER设备后点击执行升级。
这里不再演示。

编译完成后,进行打包固件。
固件打包完成后就可以下载分散镜像
打包镜像:就是将分散镜像打包为一个镜像。

下载完成后等待一会HDMI会有视频画面输出,恭喜你至此就成功的编译和下载了android系统。
在这里插入图片描述

7、单独编译kernel(只适合带emmc版本)

前面我们都是走的全编译,因为需要编译和下载很多东西,所以非常慢,而且占用空间也很大。
如果你只是单纯的修改一些配置、驱动或者设备树(新手同学可以理解为内核的xml配置文件,后面我们会去讲),单独编译和烧录内核就行,这样速度快有利于调试。
编译命令
在kernel目录下编译

make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3566_tspi/boot.img tspi-rk3566-user-v10.img -j72

编译内核kernel,会生成boot.img,看看还有哪些新生成的镜像。

第一次全编译完成后,再单独编译内核,就很快了。

编译完成
在这里插入图片描述
然后单独烧录boot.img固件即可!!!
导入Android_Tspi_Kernel.cfg配置文件,勾选boot选项其他去掉,再把boot选项路径切换到kernel下的boot.img。
具体步骤跟上面一样。

五、单独编译“驱动模块”

适合于Android和linux,前提是你完成了上面的全编译,并且在烧录成功固件的基础上进行的。
我们为了改一个驱动,去编译kernel,然后再下载,时间还是很慢的。
如果单纯只修改了驱动,我们完全可以只编译“驱动模块”,然后放到开发板中去加载。
这里以一个my_touch驱动为列

1、配置Makefile

驱动中的Makefile文件,如果obj-y,就是编译到内核。如果obj-m,就是编译到模块“.ko文件”。
这里一般不会直接写出来,都是有由一个config变量来确定。
例如,我们需要把my_touch驱动,编译成模块,所以要将my_touch目录下的Makefile中的相应代码改成obj-m。

#如果编译成.ko的话就选obj-m,如果编译到内核就obj-y
obj-m        += my_touch.o

然后,单独编译“驱动”,生成my_touch.ko文件。
在kernel目录下输入命令。

kernel$ make ARCH=arm64 -C . M=./drivers/input/touchscreen/my_touch
  • make 命令用于构建 Linux 内核或内核模块。
  • ARCH=arm64 指定了目标架构为 64 位 ARM 架构
  • -C . 指定了内核源代码目录为当前目录
  • M=./drivers/input/touchscreen/my_touch/ 指定了我们触摸,也就是要构建的内核模块所在的相对路径为 ./drivers/input/touchscreen/my_touch/
    在这里插入图片描述

触摸驱动一节中,也有相应的内容

2、加载my_touch.ko

通过adb把my_touch.ko push到泰山派里面去

注意下面的路径

adb root && adb remount && adb push Z:\tspi\Android11_20231007\PublicVersion\kernel\drivers\input\touchscreen\my_touch\my_touch.ko /vendor/lib/modules
  • adb root: 这个命令会尝试获取 Android 设备的 root 权限。在有些设备上,访问 /vendor/lib/modules 目录需要 root 权限。
  • adb remount: 这个命令会重新挂载文件系统,通常用于将文件系统从只读模式切换为可读写模式。因为你要往 /vendor/lib/modules 目录写入文件,所以需要将其挂载为可读写。
  • adb push Z:\tspi\Android11_20231007\PublicVersion\kernel\drivers\input\touchscreen\my_touch\my_touch.ko /vendor/lib/modules: 这个命令的格式是 adb push <本地路径> <目标路径>,它会将本地路径下的文件推送到目标路径。在这里,my_touch.ko 是你要推送的文件,它位于 Z:\tspi\Android11_20231007\PublicVersion\kernel\drivers\input\touchscreen\my_touch\ 这个本地路径下。它将被推送到 Android 设备的 /vendor/lib/modules 目录中。
    在这里插入图片描述

push后,需要在泰山派中需要手动“安装”驱动
如果是-y,驱动自动被安装好。

下面adb进入tspi 的shell,安装驱动
adb进入shell
在这里插入图片描述
安装驱动

rk3566_tspi:/ # insmod /vendor/lib/modules/my_touch.ko

查看驱动是否安装成功

rk3566_tspi:/ # lsmod
Module                  Size  Used by
my_touch               16384  0
bcmdhd               1175552  0

结果
在这里插入图片描述

第六部分 docker编译(还是不太理解)

在我们编译泰山派SDK时候,可能会因为大家的电脑环境不同导致编译失败,如果使用docker就能很好的避免环境不同意带来的编译问题,极大提供高编译成功率,这种方法也是我们主推的编译方法,下面是我测试过并长期使用的docker环境,建议大家编译泰山派SDK时候使用此方法。

一、Docker 的安装

1、卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc 

2、使用存储库安装

更新 apt 包索引并安装相关软件包以允许 apt 通过 HTTPS 使用 docker 存储库:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release 

添加 Docker 的官方 GPG 密钥:
(一起用或分开用都行)

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 

出现不安全的提示
在这里插入图片描述

设置存储库:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee -a /etc/apt/sources.list.d/docker.list > /dev/null

(运行命令后没有反应)

3、安装 Docker engine

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

4、验证安装完成

只用第一行

sudo docker -v
# 打印出版本号 
Docker version 24.0.2, build cb74dfc

查看版本号成功。
在这里插入图片描述

二、创建镜像

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

  • 1、从已经创建的容器中更新镜像,并且提交这个镜像
  • 2、使用 Dockerfile 指令来创建一个新的镜像
    下面使用dockfile新建镜像
    首先建一个文件夹,如图
    在这里插入图片描述
    通过vim新建文件
    没有权限的话,使用sudo
vim dockerfile

添加下面的内容到dockerfile中
下面这个文件暂时不要修改,还没有能力修改。

# 设置基础镜像为Ubuntu 18.04
FROM ubuntu:18.04

# 设置作者信息
MAINTAINER lckfb "service@lckfb.com"

# 设置环境变量,用于非交互式安装
ENV DEBIAN_FRONTEND=noninteractive

# 备份源列表文件
RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak

# 将源列表中的 http://.*ubuntu.com 替换为 http://repo.huaweicloud.com
RUN sed -i 's@http://.*ubuntu.com@http://repo.huaweicloud.com@g' /etc/apt/sources.list

# 更新包列表
RUN apt update

# 安装基本的编译工具和依赖
RUN apt install -y build-essential crossbuild-essential-arm64 \
        bash-completion vim sudo locales time rsync bc python

# 安装其他依赖包,这里编译android11sdk需要的环境
RUN apt install -y repo git ssh libssl-dev liblz4-tool lib32stdc++6 \
        expect patchelf chrpath gawk texinfo diffstat binfmt-support \
        qemu-user-static live-build bison flex fakeroot cmake \
        unzip device-tree-compiler python-pip ncurses-dev python-pyelftools \
        subversion asciidoc w3m dblatex graphviz python-matplotlib cpio \
        libparse-yapp-perl default-jre patchutils swig expect-dev u-boot-tools

RUN apt install -y bear

# 再次更新包列表并安装任何未安装的依赖
RUN apt update && apt install -y -f

# 生成本地化语言支持
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8

# 创建开发板用户
RUN useradd -c 'lckfb user' -m -d /home/lckfb -s /bin/bash lckfb

# sudo免密登录
RUN sed -i -e '/\%sudo/ c \%sudo ALL=(ALL) NOPASSWD: ALL' /etc/sudoers
RUN usermod -a -G sudo lckfb

USER lckfb
#设置docker工作目录为/home/lckfb
WORKDIR /home/lckfb

#容器使用这个内核方法
#docker run --privileged --mount type=bind,source=/home/LCKFB_RK3566/ROCKCHIP_ANDROID11.0_SDK_RELEASE/ROCKCHIP_ANDROID11.0_SDK_RELEASE,target=/home/lckfb/android11 --name="lckfb_android11_sdk" -h lckfb -it lckfb_android11_sdk_cmp

创建镜像
在 Dockerfile 文件的存放目录下,执行构建动作(没有权限时,使用sudo)

docker build -t lckfb_xly_01 .

lckfb_xly_01是镜像名称,可随意更改,注意命令最后有一个‘.
此过程需要一段时间,请耐心等待

如果创建镜像时候出现了命令错误可以通过先运行下面进行测试

docker run --rm -it Ubuntu 18.04 bash
  • docker run 是用于创建并运行容器的命令。
  • –rm 参数指示 Docker 在容器停止后自动删除该容器。这样可以确保不会在系统中留下不再使用的停止状态容器。
  • -it 参数结合了 -i(交互式)和 -t(终端)两个选项,使得容器中的命令可以接收终端输入并显示输出。
  • <镜像名称或ID> 是指要基于哪个镜像创建容器。您可以提供镜像的名称或ID来唯一标识一个镜像。
  • <要运行的命令> 是您希望在容器中运行的命令或指令。

查看镜像
输入(没有权限时,使用sudo)

docker images

镜像存放位置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述> 在这里插入图片描述

如何删除镜像docker
使用docker images查看docker
在这里插入图片描述
使用docker rmi <镜像ID或镜像名>删除镜像。
应该删除不彻底,文件啥的还在。

三、基于镜像创建容器

使用下面命令,创建容器。

docker run --privileged --mount type=bind,source=/home/gongjin/tspi/Linux/tspi_linux_repo_sdk,target=/home/lckfb --name="lckfb_android11_sdk" -h lckfb -it lckfb_xly_01

注意!!!
在这里插入图片描述
有需要修改的地方。

  • –privileged:在容器内启用特权模式,允许容器内的进程访问所有主机设备。
  • –mount type=bind,source=/home/gongjin/tspi/Linux/tspi_linux_repo_sdk,target=/home/lckfb:创建绑定类型的挂载点,将宿主机上的/home/gongjin/tspi/Linux/tspi_linux_repo_sdk目录挂载到容器内的/home/lckfb目录。这使得容器内的应用程序可以访问并操作宿主机上的该目录。
  • –name=“lckfb_android11_sdk”:为容器指定一个名称,这样可以在后续的Docker命令中使用该名称引用容器。
  • -h gongjin:设置容器的主机名为gongjin。
  • -it:以交互式和终端的方式运行容器。
  • lckfb_xly_01:使用名为lckfb_xly_01的镜像来创建容器。

运行后,进入容器
在这里插入图片描述
ls命令查看文件夹,会发现容器中的文件夹和tspi_linux_repo_sdk的文件夹一样。
(因为这里将目录修改到了tspi_linux_repo_sdk
在这里插入图片描述

dockerfile文件修改,但修改不正确的话,进入后,ls会没有文件!!!!

四、列出所有的容器

docker ps -a 包括正在运行的和已经停止的容器

结果

CONTAINER ID   IMAGE                     COMMAND                  CREATED          STATUS                      PORTS     NAMES
7258412811df   lckfb_android11_sdk_cmp   "/bin/bash"              29 minutes ago   Exited (0) 26 minutes ago             lckfb_android11_sdk
  • CONTAINER ID:容器的唯一ID。
  • IMAGE:容器所使用的镜像。
  • COMMAND:容器启动时运行的命令。
  • CREATED:容器的创建时间。
  • STATUS:容器的当前状态(正在运行、已停止等)。
  • PORTS:容器的端口映射信息。
  • NAMES:容器的名称。

五、启动容器

docker start lckfb_android11_sdk  #启动容器
docker attach lckfb_android11_sdk #附加到正在运行的名为lckfb_android11_sdk的容器的终端上,以便与容器进行交互

六、退出容器

exit

最后部分:一些其他问题

一、增强服务

安装增强工具的目的主要有三个:

  • 实现虚拟机(Ubuntu)和主机(Windows)的文件共享。

  • 可以使用全屏模式~即启用 vbox 无缝模式(使用主机io输出)。

  • 实现主机与虚拟机双向的复制粘贴。
    具体知道增强功能与这三个有关就行了。
    注:安装增强功能后,会导致ubuntu开机很慢。

使用以下命令查看占用开机时长的服务

systemd-analyze blame

注:开机时间从0毫秒往上累加,总共开机时间为5min3.11s
看下图,可知,只有增强服务开机时间最长。

在这里插入图片描述
使用sudo systemctl disable <services>禁用服务。

sudo systemctl disable plymouth-quit-wait.service

这个Plymouth 负责 Ubuntu 和其他发行版中在登录页面出现之前的引导页面,网络管理器负责互联网连接,可以关闭它来加快启动时间,且不影响正常使用。(这个不用禁用)

sudo systemctl disable vboxadd.service

这个是禁用增强功能。(同理,enable可以开启)
在这里插入图片描述

经测试,禁用增强服务后,依然可以共享粘贴板。
如果不能共享。让增强服务开机后自动启动,使用命令sudo systemctl start <services>
即:sudo systemctl start vboxadd.service

二、输入命令后,最下方显示lines 1-14/14(end)

查看“开机占用时间”以及“查看samba状态”时,会出现
以“开机占用时间”为例
在这里插入图片描述
这是因为系统启用了分页显示。
类似于less程序,这时我们可以使用空格键向下翻一页,使用B键向上翻一页,也可以使用方向键上下左右翻页。
按Q键退出。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt 5.9是一种常用的跨平台应用程序开发框架,可以用于开发Android应用程序。搭建Qt 5.9 Android环境的步骤如下: 1. 安装Java Development Kit (JDK):在安装Qt 5.9之前,你需要先安装JDK以支持Java开发。你可以从Oracle官方网站下载并安装适合你操作系统的JDK版本。 2. 下载并安装Qt Creator:Qt Creator是Qt集成开发环境,用于创建和管理Qt项目。你可以从Qt官方网站下载适合你操作系统的Qt Creator版本,然后按照安装向导的提示进行安装。 3. 安装Android SDK:在Qt Creator中,你需要配置Android SDK路径以便进行Android应用程序开发。你可以从Android开发者网站下载并安装适合你操作系统的Android SDK。 4. 配置Qt Creator:打开Qt Creator,在“工具”菜单中选择“选项”,然后在“设备”选项卡下配置Android SDK路径,填入你Android SDK的安装路径。 5. 配置Qt Kit:在Qt Creator中,你需要配置Qt Kit以便在Android设备上运行和调试你的应用程序。在“工具”菜单中选择“选项”,然后在“构建和运行”选项卡下选择“Kits”选项。点击“添加”按钮来配置你的Qt Kit,选择Android选项并填入Qt 5.9的安装路径,填入Android NDK路径,选择你要使用的Android设备和编译链。 6. 创建和运行Android项目:现在你可以在Qt Creator中创建一个新的Qt Android项目。在“文件”菜单中选择“新建文件或项目”,选择“其他项目”下的“Qt Widgets Application”模板,然后按照向导的指示进行项目设置。完成项目设置后,你可以点击“运行”按钮来在Android设备上运行你的应用程序。 以上就是搭建Qt 5.9 Android环境的基本步骤。希望对你有所帮助! ### 回答2: 在搭建Qt 5.9 Android环境之前,首先确保你已经安装了Java JDK和Android SDK,并且设置了相应的环境变量。 第一步,下载并安装Qt 5.9版本,可以使用在线安装程序或者离线安装包。离线安装包通常包含所需的库文件和插件。 第二步,下载并安装Qt的Android工具链。在Qt安装目录下的Tools文件夹中,你可以找到对应的工具链。根据你的系统选择对应的工具链,例如Windows下的android_armv7工具链。 第三步,配置Qt Creator。打开Qt Creator,选择Preferences(或者在Windows上是Options),在Build & Run中选择Kits选项卡。点击“Add”按钮,选择“Android”并选择你的工具链。填写Android SDK和NDK的路径,还可以指定目标设备的信息。 第四步,创建一个新的Android项目。在Qt Creator中,点击新建项目的向导按钮。选择"Qt for Android"类别,然后选择"Qt Widgets Application"模板作为示例。接下来,选择一个目录和项目名称,点击下一步。在配置界面上,选择你的工具链和目标设备,并确保选择了合适的Qt版本。 第五步,构建和运行你的项目。点击“Build”菜单中的“Build Project”选项进行构建。构建成功后,点击“Run”菜单中的“Run”选项来运行项目。通过选择合适的设备即可在Android设备或模拟器上运行你的应用程序。 以上就是Qt 5.9 Android环境搭建的基本步骤。根据具体环境和需求的不同,可能还需要进行一些额外的配置和调整。希望对你有所帮助! ### 回答3: Qt 是一个跨平台的应用程序框架,可以用于开发各种类型的应用程序,包括移动应用。Qt 5.9 是 Qt 的一个版本,其中包含了对 Android 平台的支持。要搭建 Qt 5.9 的 Android 环境,需要按照以下步骤进行操作: 1. 安装 JDK:在 Android 开发中,需要使用 Java Development Kit (JDK)。首先,从 Oracle 官网下载并安装适用于你的操作系统的最新版本的 JDK。 2. 安装 Android SDK:接下来,下载并安装 Android SDK。可以从 Android 官网下载一个命名为 "Android Studio" 的 IDE,它包含了 Android SDK。安装完成后,启动 "Android Studio",并按照向导设置所需的 Android SDK 版本。 3. 安装 NDK:要开发 Qt 的 Android 应用,还需要安装 Android NDK(Native Development Kit),它是用于编译 C/C++ 代码的工具。从 Android 官网下载并安装适用于你的操作系统的最新版本的 NDK。 4. 安装 Qt 5.9:然后,从 Qt 官网下载并安装 Qt 5.9 版本。在安装过程中,确保勾选上 "Qt 5.9 for Android" 选项。 5. 配置 Qt Creator:安装完成后,打开 Qt Creator,进入 Options(或 Preferences)-》Devices-》Android 选项卡。点击 "Add" 按钮,添加一个 Android 设备。配置 Android SDK、NDK 和 JDK 的路径,并选择一个合适的 Android 版本。 6. 创建 Android 项目:在 Qt Creator 中,选择 "New Project",选择 "Qt Widgets Application"(或其他适当的项目类型),然后点击 "Next"。接下来,选择 "Android" 平台,配置项目名称和存储路径。 7. 编译和运行:根据项目需求进行代码编写和项目设置。最后,使用 Qt Creator 的构建和运行按钮编译和运行你的 Android 应用程序。 通过按照以上步骤进行操作,就可以成功搭建 Qt 5.9 的 Android 环境,并开始开发和调试 Qt Android 应用程序了。祝你开发顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值