|
|
@ -3,7 +3,7 @@ |
|
|
|
\section{开发环境搭建} |
|
|
|
主机系统推荐使用 Ubuntu >= 20.04 的版本。 |
|
|
|
|
|
|
|
\subsection{工具链获取} |
|
|
|
\subsection{编译器和下载工具} |
|
|
|
从公司共享目录获取 RK3588 的编译工具:\\ |
|
|
|
\texttt { |
|
|
|
\small |
|
|
@ -12,6 +12,36 @@ |
|
|
|
下载后用放在 linux 系统下,用命令解压: |
|
|
|
\shellcmd{bash}{tar xpvf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz} |
|
|
|
|
|
|
|
下载 USB 的烧写程序和驱动程序文件:\\ |
|
|
|
\texttt { |
|
|
|
\small |
|
|
|
\textbackslash{}\textbackslash{}192.168.1.202\textbackslash{}常用工具\textbackslash{}2.开发工具\textbackslash{}RK3588\textbackslash{}RkDevTool。 |
|
|
|
} \\ |
|
|
|
其目录结构如下: |
|
|
|
\begin{figure}[H] |
|
|
|
\centering |
|
|
|
\begin{tikzpicture} |
|
|
|
\node [anchor=south west, inner sep=0] (tree) at (0,0) { |
|
|
|
\begin{tcolorbox}[colframe=gray!20] |
|
|
|
\begin{small} |
|
|
|
\begin{Verbatim} |
|
|
|
├── RKDevTool_Release_v2.96 |
|
|
|
│ ├── Language |
|
|
|
│ ├── Log |
|
|
|
│ └── bin |
|
|
|
├── driver |
|
|
|
└── rockdev |
|
|
|
\end{Verbatim} |
|
|
|
\end{small} |
|
|
|
\end{tcolorbox} |
|
|
|
}; |
|
|
|
\end{tikzpicture} |
|
|
|
\caption{RkDevTool 目录} |
|
|
|
\end{figure} |
|
|
|
用于烧写的程序文件放在 rockdev 目录下面。双击\\ |
|
|
|
\verb+RKDevTool_Release_v2.96\RKDevTool.exe+ |
|
|
|
程序,连接 USB 线来更新固件程序,运行界面如图 \ref{fig:rkdevtool} 所示。 |
|
|
|
|
|
|
|
\subsection{U-Boot 代码下载} |
|
|
|
U-Boot 源代码在这里:\\ |
|
|
|
\texttt { |
|
|
@ -49,7 +79,7 @@ rk3588 |
|
|
|
\end{tcolorbox} |
|
|
|
}; |
|
|
|
\end{tikzpicture} |
|
|
|
\caption{目录结构} |
|
|
|
\caption{代码目录结构} |
|
|
|
\end{figure} |
|
|
|
|
|
|
|
|
|
|
@ -238,3 +268,52 @@ U-Boot 和 Kernel 使用的都是 boot.img 里面的 DTB 文件。设备树文 |
|
|
|
\end{figure} |
|
|
|
开始查看,它会通过 \verb+include+ 指令引入别的文件。新项目建议从 \verb+rk3588-sytc-evb.dtsi+ 复制 |
|
|
|
并从命令一个文件,然后 \verb+include+ 如注释掉的 \verb+rk3588-sytc-hrgz.dtsi+ 一样。 |
|
|
|
|
|
|
|
\section{rootfs.img 修改} |
|
|
|
|
|
|
|
rootfs.img 是一个 ext4 文件系统格式的文件,可以通过 mount 的方式挂载到系统下进行修改。由于这个文件给的剩余空间比较小, |
|
|
|
直接修改的方式可能会报失败。这里的示例是将文件先复制出来,按需修改好文件系统以后再重新做一个 ext4 的打包文件。 |
|
|
|
|
|
|
|
%\subsection{rootfs.img 修改} |
|
|
|
可以按下面的步骤进行修改: |
|
|
|
\begin{enumerate}[(1),nosep] |
|
|
|
\item 将 rootfs.img 挂载到系统下,例如: |
|
|
|
\shellcmd{bash}{sudo mount -o loop rootfs.img /media} |
|
|
|
\item 将 rootfs 的内容复制出来: |
|
|
|
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash} |
|
|
|
sudo mkdir rootfs |
|
|
|
sudo cp -a /media/* rootfs/ |
|
|
|
sudo umount /media |
|
|
|
\end{minted} |
|
|
|
\item chroot 到 rootfs 的文件系统: |
|
|
|
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{pwsh} |
|
|
|
sudo mount -o bind /proc rootfs/proc |
|
|
|
sudo mount -o bind /dev rootfs/dev |
|
|
|
sudo mount -o bind /sys rootfs/sys |
|
|
|
sudo chroot rootfs /bin/bash |
|
|
|
\end{minted} |
|
|
|
\item 安装新的软件包,例如: |
|
|
|
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash} |
|
|
|
apt-get update |
|
|
|
apt-get install tcpdump |
|
|
|
\end{minted} |
|
|
|
\item 安装所需软件以后,清理临时文件并退出 chroot 环境: |
|
|
|
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash} |
|
|
|
apt-get clean |
|
|
|
exit |
|
|
|
\end{minted} |
|
|
|
\item 卸载 bind 的文件系统: |
|
|
|
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash} |
|
|
|
sudo umount rootfs/proc |
|
|
|
sudo umount rootfs/dev |
|
|
|
sudo umount rootfs/sys |
|
|
|
\end{minted} |
|
|
|
\item 重新打包文件系统: |
|
|
|
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash} |
|
|
|
IMAGE_SIZE_MB=$(( $(sudo du -sh -m rootfs | cut -f1) + 300 )) |
|
|
|
dd if=/dev/zero of=rootfs.img bs=1M count=0 seek=${IMAGE_SIZE_MB} |
|
|
|
sudo mkfs.ext4 -d rootfs rootfs.img |
|
|
|
\end{minted} |
|
|
|
\end{enumerate} |
|
|
|
|
|
|
|
文件系统里面的 root 用户密默认是 \zhsquote{root}。 |