目录
1 开发环境
ubuntu 1604 desktop
2 参考文档或网址
TW-AC3399-EVM评估板用户手册.pdf
Rockchip Linux软件开发指南.pdf
Android开发工具手册_v1.2.pdf
3 安装相关软件包
sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools
sudo apt-get install device-tree-compiler gcc-aarch64-linux-gnu mtools parted
sudo apt-get install libudev-dev libusb-1.0-0-dev python-linaro-image-tools
sudo apt-get install linaro-image-tools autoconf autotools-dev libsigsegv2 m4
sudo apt-get install intltool libdrm-dev curl sed make binutils build-essential gcc
sudo apt-get install g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file
sudo apt-get install bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev
sudo apt-get install libglade2-dev cvs git mercurial rsync openssh-client subversion
sudo apt-get install asciidoc w3m dblatex graphviz python-matplotlib libc6:i386
sudo apt-get install libssl-dev texinfo genext2fs
4 获取linux源码包
mkdir RK3399
将rk3399-linux-sdk-20200728.tar拷贝到RK3399目录
cd RK3399/
tar xvf rk3399-linux-sdk-20200728.tar
git reset --hard
git branch -a
git checkout master
ls -a
可以看到如下文件或文件夹
app build_all.sh buildroot build.sh debian device distro docs envsetup.sh external .git .gitignore kernel Makefile mkfirmware.sh prebuilts rk3399-linux-sdk-20200728.tar rkbin rkflash.sh tools u-boot ubuntu
5 编译出可以在开发板上运行的一系列镜像并编译
mkdir rk3399-linux
cd rk3399-linux/
tar xvf rk3399-linux-sdk-20200728.tar
git reset --hard
git branch -a
git checkout master
./build.sh init,选择9. BoardConfig_rp3399_buildroot
修改tools\linux\Linux_Pack_Firmware\rockdev\package-file为如下图所示
./build.sh,可以生成u-boot、kernel相关的img文件,但是生成rootfs.img时会报错。
./build.sh buildroot,在buildroot/output/rockchip_rk3399/images/下应该会生成一个400多M大小的ext2文件系统。
./build.sh,此时会在 rockdev/下生成例如update-rp3399-buildroot-20210507-225122.img的400多M大小的文件,使用烧录工具AndroidTool.exe烧录该文件即可。
6 修改kernel并编译
cd kernel
make menuconfig
cd ..
./build.sh
在rockdev目录生成update包。
7 支持telnetd
默认buildroot的配置支持ssh远程登录,登录账号:root,密码:rockchip
7.1 修改kernel并编译
cd kernel
make menuconfig,选中Device Drivers->Character devices->Legacy (BSD) PTY support,(256)Maximum number of legacy PTY in use
cd ..
./build.sh
在rockdev目录生成update包。
7.2 修改busybox并编译
cd buildroot
make busybox-menuconfig
确保选中Networking Utilities->telnet及其子选项、Networking Utilities->telnetd及其子选项。
make busybox-update-config
cd ..
./build.sh buildroot
./build.sh
在rockdev目录生成update包。
使用telnet登录
板端支持telnetd
远程端登录账号:root,密码:rockchip
7.3 使串口登录时需要密码
默认buildroot生成的系统不需要密码直接可以使用串口访问
需要修改/etc/inittab
注释掉::respawn:-/bin/sh,将出现/sbin/getty的行注释掉
在::sysinit:/etc/init.d/rcS的后面添加::respawn:/sbin/getty -L ttyFIQ0 0 vt100
8 基本组件测试
8.1 网口测试
直接用网线接入路由器,打印如下,
[root@rk3399:/]# [ 508.222449] rk_gmac-dwmac fe300000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
可自动获取到IP地址,如果路由器可以上外网则可以直接ping通www.baidu.com
可以执行ifconfig eth0 down禁用以太网功能,之后执行ifconfig eth0 up可启用以太网功能
8.2 USB3.0接口测试
插入U盘,自动识别到U盘并打印相关信息,且自动挂载U盘到/media/usb0。只支持FAT32文件系统,不支持exFAT和NTFS文件系统。
8.3 USB2.0接口测试
插入U盘,自动识别到U盘并打印相关信息,且自动挂载U盘到/media/usb0。只支持FAT32文件系统,不支持exFAT和NTFS文件系统。
8.4 SD卡接口测试
插入SD卡,自动识别到SD卡并打印相关信息,且自动挂载SD卡到/mnt/sdcard。只支持FAT32文件系统,不支持exFAT和NTFS文件系统。
9 应用程序开发
终端打印字符串
编写测试代码,调用printf函数简单打印几个字符。编译成可执行程序,通过挂载或者拷入板端运行。
cd /home/lijun/tmp_mount/
/home/lijun/rk3399-linux/buildroot/output/rockchip_rk3399/host/bin/aarch64-buildroot-linux-gnu-gcc testPrint.c -o testPrint
10 更改根文件系统
应用程序做好之后需要放入根文件系统,做成烧录文件烧到板端。比如做好wifi相关移植之后,相关的依赖程序放入/home/WIFI。
根文件系统路径为:buildroot/output/rockchip_rk3399_recovery/target,默认没有home目录,直接创建即可,其他文件依次拷贝进去。
./build.sh buildroot(这一步不能省略)
./build.sh
在rockdev目录生成update包。