一、前言
泰山派买回来也有一阵子了,最近慢慢开始研究。当然,学习这种Linux的开发板的第一步就是安装系统,对于RK系列的芯片系统安装有专门的软件,所有在系统安装方面比较简单。更多的还是我们应该怎么去编译系统,这一次,我们就从泰山派系统的编译,系统的安装以及没有显示器应该如何远程几个方面为大家讲解一下泰山派。这次的教程我们会涉及到Linux和安卓系统的安装和远程,我们也会使用到官方提供的烧录工具和远程工具。
二、需要准备什么?
这次我们的教程主要是针对2+16G的泰山派,1+0版本的需要将系统装在内存卡里,这里因为硬件不允许所以1+0版本的泰山派我们不作演示,综上所述我们需要准备一个2+16G的泰山派。在有了泰山派以后,最好再去下载一份嘉立创官方给的泰山派的资料,资料中包含了我们本次会用到的所有文件都包含在嘉立创给出的资料中。资料占用的空间非常大,如果硬盘空间或者网络不允许的小伙伴可以下载我给出的资料,我的资料也包含了本次会用到的必要资料。大家打开网盘下载即可:
泰山派部分资料:通过百度网盘分享的文件:泰山派:https://pan.baidu.com/s/1dCxIfWpQA2XUt8hHYE5Azg?pwd=clxm
提取码:clxm
复制这段内容打开「百度网盘APP 即可获取」
三、系统的编译
编译系统我们需要在Linux的环境进行,并且需要16G以上的内存以及500G以上的硬盘空间,如果你的电脑不能满足你这样做,我的建议是使用已经编译好的系统。在上面给出的资料中和嘉立创官方资料中都可以找到已经编译好的系统。如果你没有Linux的环境,可以看下面的文章,下面的文章会教你如何在物理机和虚拟机中安装Ubuntu,当然这两个你选择一个即可:
在物理机安装Ubuntu:[Linux]如何在物理机安装Ubuntu(小白向)-CSDN博客
在虚拟机安装Ubuntu:[Linux]如何在虚拟机安装Ubuntu?(小白向)_linux虚拟机装乌班图-CSDN博客
当我们有了Linux的环境以后,我们就可以开始准备编译了。
我们可以打开嘉立创给的泰山派相关资料,我们可以看到嘉立创官方资料中的“系统SDK”文件夹:
进入这个文件夹我们就能看到“linux”和“Andoroid”文件夹:
这两种系统的编译我们都会演示,当然,编译安卓的性能要求要高于Linux。
如果你没有下载嘉立创官方的SDK,而是下载的我给的资料可以打开资料中的系统SDK文件夹,这里Linux和Android的SDK各有一个:
1.Linux系统的编译:
在编译之前,请确保自己已经配置好了Ubuntu的环境,不管是物理机还是虚拟机,总之要有这个环境,下面我使用虚拟机进行演示,我这里使用的Ubuntu的系统版本为18.04,如果你是小白,我强烈建议你的Ubuntu版本和我一样,哪怕你使用20.04都可能出现你不能解决的报错,所以,强烈建议你使用和我一样的Ubuntu版本。虚拟机配置如下:
如果你有条件的话请尽量采取和我一样的配置。
这里可以看到,我们的Ubuntu18.04的虚拟机已经启动了:
下面我们需要将SDK文件上传到虚拟机中,我这里推荐使用samba服务,如果你会使用sftp当然也行。如果你还不会安装samba,可以看下面的帖子:
sanba的安装与配置:[Linux]在Ubuntu中安装samba并且正确配置(详细)_ubuntu 配置samba-CSDN博客
不管你使用哪种方法,总之需要你将泰山派的SDK文件复制到虚拟机中,如图:
我们使用下面的命令解压SDK,这里一定要加上sudo不然可能会报错:
sudo tar -xzvf ./tspi_linux_sdk_20230916.tar.gz
解压可能要解压很久,请大家耐心等待:
现在这样就已经是解压完了,如果你在解压的过程中出现错误,请把解压的文件删除后重新解压:
解压完成以后,我们就可以准备编译了。
解压完成以后得到以下文件夹:
我们使用下面的命令来安装编译所需的环境:
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
这里直接复制粘贴即可:
回车执行:
下面我们要设置SDK文件夹的权限,因为我们一开始是使用root解压的,所以这些文件都属于root,我们需要设置这些文件的权限让所有用户都可以访问,后面编译我们是使用普通用户进行:
sudo chmod 777 -R ./Release/
我们将SDK文件夹的权限设置完成以后就可以进入这个文件夹了:
cd Release/
在进入SDK文件夹以后,确保自己的目录下有这些文件:
运行下面的命令进行配置:
sudo ./build.sh device/rockchip/rk356x/BoardConfig-rk3566-tspi-v10.mk
在这里配置完成以后我们添加一条环境变量,使用下面的命令,注意这里不用加sudo:
export RK_ROOTFS_SYSTEM=buildroot
在做完以上的步骤以后,就可以开始编译了,注意在编译之前请确定你已经完整的执行的上面的所有命令并且没有出错。我们在SDK的文件夹下输入以下命令进行编译,注意这里不用加sudo,注意是不加:
./build.sh all
输入命令以后,就开始编译了:
这里需要等以下,一会儿会让我们配置电源:
当出现下面的页面以后,就表示电源配置了,大家配置得跟我一样即可,如果这里随便配的话,后面就会有报错,所以请跟我相同配置:
在最后这个选项以后回车过后这个窗口就会关闭,然后继续进入到编译中/:
编译的过程是非常漫长的。大家耐心等待,如果你的Ubuntu版本和我一样,中途大概率是没有错误的。编译可能需要好几个小时,根据自己电脑性能而定,等待编译完成吧!
出现下面的提示就表示已经编译成功了:
虽然编译成功了,但是我们还要进行固件打包,运行下面的命令:
./mkfirmware.sh
在固件打包以后,镜像文件被生成在了SDK目录下的“rockdev”目录下:
使用下面的命令将镜像打包成一个文件:
./build.sh updateimg
打包后,镜像仍然被保存在“rockdev”目录下。是一个名为“update.img”的文件:
在后面烧录时,可以直接烧录这个update.img文件,但是不推荐,这个系统虽然可以运行,但是很多功能不具备。
2.Android的编译
下面我们来编译Android系统,安卓系统的编译比起Linux性能要求要高很多,大家尽量将虚拟机内存调整到18G以上,CPU的性能可以差,大不了就是编译慢,如果内存太小的话就会直接报错。这里磁盘大小设置为600G。下面是我虚拟机的配置:
我们同样需要使用一些文件传输服务将Android的SDK传到虚拟机中,如图:
使用下面的命令解压SDK文件,这里大家将用户切换到root,一点要切换,后面的图片我没使用root操作,这是错误的。从解压文件这一步开始后面的步骤都要将用户切换到root,后面的操作都要使用root用户进行:
tar -xzvf ./tspi_android_sdk_20230909.tar.gz
解压过程比较久,大家耐心等待。
这里解压就已经完成了:
我们可以看到解压出来的目录:
使用下面的命令进入这个目录:
cd tspi_android_sdk_20230909/
进入目录以后,我们使用下面的命令安装编译所需的环境,注意,这里的命令是一条命令,直接复制粘贴执行即可,注意这里要是root,之前也提到了,从解压开始的操作都要使用root:
apt-get update && 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
安装的过程也是非常漫长,大家耐心等待。安装完成以后,我们就可以进行下一步了。
在正式开始编译之前,我们还需要修改交换分区的大小,注意,这里必须修改交换分区的的大小,不然一定会报错。
这里修改交换分区的大小大家可以参考下面的文章:
修改交换分区:在Linux下禁用、添加|修改Swap分区(虚拟内存)教程_禁用swap-CSDN博客
这里我就不多说了,大家一定要查到自己的交换分区修改成功了才能开始编译:
我们使用下面的命令进行SDK的编译,这里的命令是一整条命令,直接复制,粘贴,执行即可。这里执行是在SDK目录下执行:
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
这里的编译过程非常漫长,大家耐心等待。
根据上图我们可以看到,这里已经编译成功了。如果你在编译中途遇到错误,请先检查环境,其次再检查交换分区是否修改成功。
在编译完成以后,我们编译的镜像被存放在了SDK目录下的“rockdev/Image-rk3566_tspi”目录下:
我们在SDK目录下使用下面的命令来将这些镜像打包成一个镜像文件:
./build.sh -u
在执行完成以后,我们的镜像同样会被生成在SDK目录下的“rockdev/Image-rk3566_tspi”目录下:
这个目录下的“update.img”文件就是打包好的镜像文件了。
至此,我们安卓系统的编译就结束了!
四、系统的安装
在系统被编译好以后,我们就可以开始准备安装了,当然,如果你的电脑条件不允许你编译系统,你也可以直接使用嘉立创官方资料中的系统。打开嘉立创给的泰山派资料,看到“系统镜像”文件夹:
进入以后可以看到许多种类的系统镜像:
假如我们想安装Ubuntu的系统,我们就点击Ubuntu的文件夹:
我们可以看到这个img为后缀的文件就是系统镜像文件。
我们再看到安卓:
我们可以看到安卓的系统针对不同的屏幕接口各编译了一套系统。大家可以根据自己的屏幕情况安装对应的系统,当然,如果你没有屏幕我们也有对应的远程方案。
在我给的资料中有部分的系统镜像,如图:
也是为了保证通用性,这里的镜像我选择的都是hdmi版本的。不管你选择什么镜像道理都是一样的。有了镜像以后我们就可以准备下载了。
下面我们打开用于给泰山派下载镜像的软件,如果你下载的是嘉立创的官方资料,那么软件被放在了“开发工具”中:
进入以后我们可以看到这里有非常多的工具:
如果你使用的是我给的资料,要使用到的文件被我放在了资料文件夹下的“软件工具中”:
这里我没做什么特殊处理,直接将嘉立创给的软件都复制过来了。
下载镜像我们需要用到这里面的两个压缩包,分别是“DriverAssitant_v5.11.zip”和“RKDevTool_Release_v2.86.zip”。这里的“DriverAssitant_v5.11.zip”是RK芯片的驱动程序,只有安装了这款芯片的驱动,我们的电脑才能够识别到RK芯片。“RKDevTool_Release_v2.86.zip”就是我们用来下载程序的了。我们可以在这个目录或者别的目录新建一个文件夹,将压缩包放进去再解压,请不要直接就在软件目录解压,这样压缩包会炸开。
我这里为了方便就在桌面新建名为“DriverAssitant_v5.11”的文件夹:
然后将“DriverAssitant_v5.11.zip”复制进去。这里出于对资料完整性的考虑。建议大家不要在资料文件夹中直接新建文件或文件夹。尽量采用将资料复制到别的地方使用的形式。下面我们复制“DriverAssitant_v5.11.zip”:
解压得到以下文件夹:
进入这个文件夹,我们可以看到“DriverInstall.exe”程序就是我们RK芯片的驱动安装程序:
我们启动这个程序,我们可以看到以下窗口:
不管你以前有没有安装过,这里都点击“驱动卸载”:
这里提示卸载成功以后,我们再点击“驱动安装”:
这里可以看到驱动已经安装成功了,这样我们就可以直接关掉这个驱动安装软件了。
下面我们准备打开系统烧写软件,我们同样先新建一个文件夹,将“RKDevTool_Release_v2.86.zip”压缩包复制到其中:
我们现在将这个压缩包解压,得到以下文件:
我们点击“RKDevTool.exe”启动我们的烧写工具:
我们可以看到这里提示没有找到设备:
打开这个软件以后,我们就可以使用一条USB线一头接电脑,另一头接在泰山派的type-c接口上。
接口如图:
在连接电脑以后,我们可以看到靠近type-c的接口的灯常亮,偏向右边的灯被渐变点亮,这就是正常的状态,如果你在连接电脑以后没有灯闪烁,那你就要考虑以下是不是USB线的问题,尝试更换USB线。
当你将泰山派连接到电脑以后,下载软件这边应该是不会有反应的:
当然,如果你看到了跟我一样的“发现一个ADB设备”这说明泰山派里面的系统正在运行,你的开发板是正常的。
我们现在准备进入开发板的程序下载模式,我们注意开发板上的“REC”和“RST”键:
记得是在上电以后,我们一直按住“REC”键,随后按下“RES”键。“REC”键按下就可以松开,我们按下“RST”后“REC”不松,直到看到我们的软件中出现“发现一个LOADER设备”:
这个过程可能比较久,特别是在你松开“RST”以后,“REC”一直都不能松开,直到出现上图中的字样。这个过程可能需要看个人的感觉。如果你不能成功,请严格按照上面我说的再试一次。
当程序烧录软件发现LOADER设备以后,我们可以开始烧录了。我们点击软件的“升级固件”:
随后我们点击“固件”:
我们将我们一开始准备好的固件选择进来,不管是Linux还是Android都可以使用这种方式:
选择了固件以后,我们软件会使用一点时间来加载固件,大家耐心等一下:
固件加载进来以后,我们这里就出现了我们这个镜像的信息和loader的版本:
随后我们点击“升级”:
点击了升级以后,我们右边就有提示了:
我们等待这里的百分比走完:
在下载过程中,大家尽量不要动泰山派的连接线,也不要在正在下载程序时拔掉下载线,这样可能会导致下载失败甚至开发板不能使用,虽说有办法可以修复,但是会浪费我们的时间。
我们这里可以看到,固件烧录已经成功了,不管是Linux还是Android都可以使用这种烧录方式进行烧录:
如果你有HDMI接口的显示器,使用购买泰山派时赠送的转接头就可以接上显示器直接使用了。如果你像我一样,HDMI的接口坏了或者你没有HDMI的显示器也不要慌,我们有远程的方案提供给大家。
五、Linux以及Android的远程教程
来到这个位置的小伙伴多半是没有显示器或者泰山派的HDMI接口已经损坏,当然,我们现在也有比较成熟的远程方案。不管是Linux还是Android我们都可以使用远程来解决无法直接观看屏幕的问题。下面我们分情况进行讲解,两种系统都会涉及到:
1.Linux的远程配置
既然你已经给你的开发板刷入了Linux系统,说明你想学习Linux或者已经是Linux的开发者了。这里的教程可能需要你具有一定的Linux基础并且还需要有一定的硬件基础。当然,我们这里的操作都不难,下面让我们开始吧!
因为没有显示器,我们不能配置泰山派的网络,所以不能直接使用ssh。我们唯一能够操作泰山派的接口就是串口,下面我们要使用串口来操控泰山派的终端。
首先你需要一个USB转TTL的模块,这里我使用的是CH340,你也可以使用别的协议芯片:
这里串口的驱动安装我就不多说了,还请大家自己研究。总的来说,你需要一个USB转TTL芯片并且安装对应的驱动使其能够找到串口。
下面需要找出在购买泰山派时送的串口转接线,也就是这根线:
我们需要将这根线连接到泰山派的串口上,如图中所示:
这里的V表示VCC也就是电源,这里的G表示GND也就是接地。R表示RX表示接收,这里的接收我们要接到CH340的发送也就是TX。T表示TX表示发送,这里的发送要接到CH340的接收也就是RX。
我们将准备的转接线接入泰山派,另一头按照描述接线:
在接好这一部分确定没有问题以后,就可以将CH340接在电脑上了。随后我们使用USB线给泰山派供电。
在电脑识别到串口以后,我们就可以进行下一步了:
我这里是串口3,大家自行查询CH340对应的串口号。
下面我们需要打开一个终端工具,这里我使用的是“WindTerm”是一个开源的远程工具,能够使用串口进行终端控制。下面我也会使用“WindTerm.exe”进行演示,大家当然也可以用自己的远程工具,只要工具具有串口远程功能就行。下面是“WindTerm”的开源地址:
WindTerm:GitHub - kingToolbox/WindTerm: A professional cross-platform SSH/Sftp/Shell/Telnet/Serial terminal.
当然,如果你下载了我给的资料,我的给的资料中也有这个软件。打开资料文件夹下的“远程软件”文件夹,如图:
大家解压以后就可以直接打开远程软件使用。我这里就不演示了。
我们打开软件以后点击“会话”:
随后点击“新建会话”:
因为我们这里要使用串口访问泰山派的终端,我们这里点击“Serial”:
我们首先要将这里的串口修改为我们接到泰山派上的那个串口,我这里是串口3:
这里的数据改为“text”:
随后我们点击“协议”:
这里的“波特率”我们选择自定义:
这里我们将“波特率”自定义为“1500000”,注意这里是5个0:
随后我们点击右下角的“连接”,出现下面这样就表示连接成功了:
如果你在这一步连接失败了。首先检查CH340和泰山派是否连接正确。如果连接正确就去检查CH340的驱动有没有问题。如果这些都没有问题的话,将原本的连接关掉重新创建连接。创建连接时检查波特率设置是不是正确。当你完成了连接以后就可以进行下一步了。
当我们使用串口成功进入泰山派的终端以后,我们就可以开始配置远程了。当然,我们要远程,我们首先还是要让泰山派连接网络。下面我们就来配置泰山派的网络。
另外这里提以下,使用串口进入终端默认就是root不需要输入任何的账号密码,终端会时不时打印出日志大家不用管,后面会教大家怎么关日志,现在操作多回车几次即可:
我们输入下面的命令来配置日志等级:
dmesg -n 3
这里我们临时将日志等级改为3,在这个等级只有错误和警告才会在串口输出。输入这条命令以后,就不会输出日志了:
现在我们就可以开始配置泰山派的网络了。
下面我们会使用“NetworkManager”服务来配置网络。输入下面的命令来检查网卡状态:
nmcli device status
我们可以看到这里的网卡是没有连接网络的
下面我们打开“NetworkManager”的配置文件。因为我们现在是没有连接网络的状态,所以我们这里是不能使用网络来安装nano的,目前我们能使用的文本编辑器就只有vim了。没办法,虽然难用,但是我们已经没有别的办法了。使用下面的代码打开“NetworkManager”的配置文件:
vim /etc/wpa_supplicant/wpa_supplicant.conf
下面跟着我操作就不会错,注意屏幕上的文字。第一次进来是这样的,这是位于我vim的普通模式:
下面我们在这个界面按下i进入vim的插入模式:
当你按了i以后下面的文字会有变化,这里的“INSERT”就表示到插入模式了。
我们在插入模式下将下面的代码复制到文件中。这里需要注意,只要是在终端操作,都不要使用“ctrl+c”或者“ctrl+v”等快捷键。一律右键复制,右键粘贴:
network={ssid="ACE3"psk="123456789"key_mgmt=WPA-PSK
}
点击粘贴以后弹出这个我们再点击粘贴即可:
可以看到,我们这里的代码已经粘贴进来了:
这里的ssid就是我们无线网络的名字,psk就是我们无线网络的密码,大家根据自己的情况修改即可。
我们在编辑好并且确认没问题以后,我们按下键盘的“ESC”键回到vim的普通模式中:
在回到普通模式以后,我们输入一个“:”,是的输入一个冒号,这个冒号是英文的:
我们可以发现,我们输入冒号以后,我们的光标来到了最下面,这就是vim的末行模式,这里我们不用删除冒号,继续输入“wq”即可,如图:
输入以后我们回车:
我们可以看到这里已经退出来了。
大家也可以再打开文件看一下有没有配置好。
我们现在启动“wpa_supplicant”,使用下面的命令:
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
这里提示我们已经成功启动了服务并且已经初始化。我们使用下面的命令来获取IP地址:
dhclient wlan0
这条命令是不会有输出的。如果有输出就表明有错误出现,可以尝试重启以后再进行上面的步骤。
经过了上面的步骤以后,我们的网络应该就已经连接成功了,我们输入“ifconfig”来查看网卡状态:
我们可以看到这里的五项网卡已经被分配到IP地址了。说明无线网络连接成功。
既然已经连接到网络了,那我们就可以使用“apt”来实现在线包管理了,我们使用下面的命令来更新包源:
apt update
在耿欣完包源以后,我们就可以来安装“openssh”了。这样我们就可以使用ssh来远程我们的开发板了。使用下面的命令安装openssh:
apt install openssh-server
你可能会遇到下面的错误:
这个错误表示我们安装的“openssh”依赖于“openssh-client”这个包,我们使用下面的命令来安装“openssh-client”:
apt install openssh-client
在安装成功以后,我们再使用刚才的命令安装“openssh”:
apt install openssh-server
当“openssh”安装成功以后,我们使用下面的命令来查看“openssh”是否在运行:
systemctl status sshd
如果“openssh”正常启动,应该是这样的:
如果你的“openssh”没有启动,可以用下面的命令来启动它:
systemctl start sshd
当“openssh”启动成功以后,我们就可以远程连接了,我们使用下面的命令设置一下默认账户的密码:
passwd lckfb
密码更新成功以后,我们就可以使用远程工具连接了,个人比较喜欢“powershell”自带了远程,下面也使用“powershell”的远程工具演示,大家可以选择自己喜欢的工具远程:
这里我们输入下面的命令进行远程,注意,这里是在“powershell”中才能输入这条命令:
ssh lckfb@192.168.55.248
这里的“lckfb”是我们的用户名,@后面的就是我们开发板的IP地址。大家根据自己开发板的情况来写IP地址。但是用户这里不能使用root,记住是不能使用root:
输入密码后回车:
如上图所示,我们已经连接进来了。
目前我对于我的开发板只能使用ssh进行连接,还没有找到桌面远程的办法。我尝试了RDP桌面,也尝试了自己编译RDP再安装还尝试了VNC但是都失败了。如果有大佬有好用的桌面方案还请指点一下。
2.Android的远程配置
比起Linux,安卓的远程就友好许多了,我们可以直接使用ADB远程泰山派的Android系统。下面就让我们开始操作吧。这里我们使用的是一个名为“scrcpy”的软件对泰山派的安卓系统进行远程。“scrcpy”的优势就在于,不需要使用网络,只使用ADB就能实现远程。下面是“scrcpy”的开源主页:
scrcpy:GitHub - Genymobile/scrcpy: Display and control your Android device
如果你下载了我给的资料,可以打开资料文件夹的“远程工具”文件夹,将“scrcpy”软件的压缩包解压即可:
解压后,得到以下文件夹:
进入文件夹我们就可以看到“scrcpy”的本体了:
我们使用USB线将电脑与泰山派连接,这里需要安装一下ADB驱动,不会安装的话,大家自行百度一下。我这里就不演示了。安装ADB驱动是必须的,不安装的话无法打开远程。
再连接好泰山派并且已经安装好ADB驱动以后,我们就直接启动“scrcpy”的软件即可:
这个地方应该是不会出错的。如果就这样可能会供电不足,大家可以插上PD诱骗器的12V供电。
至此,我们安卓的远程就已经完成了,是不是非常简单,诶嘿!
六、结语
总算结束了,哈呼,说实话有点累。说实话,编译之类的非常费时间。远程桌面自己试了很多次,虽说没试出来就是了。总之,感谢大家的观看