TN3399 rk3399自用说明记录
小白使用宝典,大神仅供参考。本记录只讲在Windows下的操作。
Android系统的使用过程
本片讲述Android系统的少些尝试。
必要工具
首先,我们参考用友(firefly)的RK3399开源板子操作:
- **开发工具传送门**需要下载其中驱动和Android工具。需要注意自己下载的是不是RK3399的工具。或者可以使用群里。
- 关于少些,Windows10系统安装驱动时最好先进入强制禁用驱动签名模式后再安装。
- 驱动安装好之后打开固件更新工具,win10以下最好以管理员权限打开。
- 将板子上电,miniUSB口用好一点的数据线连上电脑U口,使板子处于开机状态,即可以是进入默认系统界面的状态。这个时候按住recovery按键不放,再按下reset键并立马松开,三秒后再松开recovery按键,升级工具会显示进入loader模式。电脑设备管理器中能够看到一个rockxxx的设备。
- 关于按键定义左边单独那个朝上的就是recovery按键,右边靠近HDMI的按键是关机键,靠近USB的按键是reset键,相信喜欢尝试的朋友拿到板子也就试出来了。
- 以上4中说的是开机后进入loader模式的办法,也可以关机状态下进入loader模式。具体完全可以参考firefly的维基教程附上fireflyrk3399开源板的传送门
- 上面说的Windows10如果不进入禁用驱动签名模式安装驱动,会导致板子进入了loader模式,但是电脑识别不到。板子进入loader模式的情形是这样的,首先当你正常开机后HDMI链接的显示器是会有进入系统时的图像的,即Android界面。然后如果驱动安装失败,在这个开机的过程中会看到有提示发现一个ADB设备。如果按照4中所说,或者firefly中所说的方式进入loader状态,同样板子右边的两个灯会亮起,一个红灯和一个绿灯,并且连接的HDMI屏幕此时是没有输出。在进入这个状态前板子是也会出现RK339芯片的那个图标。
- 关于刷入,现在群里的安卓固件情况如下
- 首先目前能用的安卓固件就在群里第一个文件夹中即安卓TN3399可用固件中,目前TN3399_R99_ap6255_20200704这个压缩包中的固件除了移动4g没发用,其他基本正常。HDMI有声音输出。原装系统是没有的
在R99系统前提下刷入station OS的system.img
1.解包
在群里下载station os的包,目前试过了desktop&tv包,没有试过单tv包,理论上都行。
使用群里的window平台的工具包,就是那个Android_tool。然后连上自己的板子。具体参考上面,或者firefly官网的操作。然后切换到如下页面:
固件选择一个这样的就行
完成后会多出一个output目录在这个工具的路径里
可以进入里面找到解包出来的system.img
这个时候可以对system.img进行一些定制操作。
接着继续回到这个工具,来到下载镜像界面,清空原来的,或者创建一个,然后只勾选这一条,前面的地址需要根据parameter.txt中描述的地址来确定,或者可以通过执行下图二中的操作获取。目前如果板子里面原来是R99那个系统,只需要按照这个下图一修改即可,注意最后的路径需要选择上面解包出来的system.img。然后点击执行就好了。整个过程板子处于loader模式。
最后,就等着刷完重启开机就好了
然后如果还一直连着电脑的话会提示发现一个adb设备。
也可以尝试分别再替换其他分区,但要注意分区空间够不够的问题,例如原来R99的system是只有1.2G左右,我们刷入的大小是1.5G左右,这个时候我们需要计算,分区表中给每个分区分配的大小足够不,目前R99system分区刷station os的system分区空间是足够的。具体,其他的就需要自己计算了,
最后期待大神适配和调整。
目前试过无法开机的
- station os群里两个版本都试了,无法开机,可以正常在loader模式下刷入,但是maskrom模式下不行。
- 群里的其他Linux系统目前还没试过,直接使用Android_tool是无法加载固件的。需要其他方式刷入,或者使用sd卡刷入。
打包解包相关命令
以下是会用到的相关命令,在ubuntu20.04下以下命令对应工具如果没有会自动提示apt安装
file
img2simg
simg2img
make_ext4fs #打包system.img
mount
umount
mksquashfs #用于sfs文件
RK3399原厂系统root,目前理解就是以下解锁指令可以真正解锁system分区
解锁:
adb root
adb disable-verity
之前尝试用Androidtool备份system分区一直无法成功。我猜测因为这个有个什么verity_mode分区,然后我一直没有解锁导致的。
以前直接用root工具修改系统分区都是当时有效,关机重启就没了,现在才知道有这个verity_mode可以关闭他,对于这个简单的广告板来说。
尝试修改init.rc和init.c使用Android关机到kernel层
大概想法是希望Android在linux内核层面长期运行NAS、软路由、服务器和数据控制中心,然后可以控制启动进入Android和关闭系统回到不启动Android的运行时的状态
大概私聊是想在init.c和inti.rc中修改某部分运行一个C语言的程序,来启动这些功能。
目前了解到修改这个文件有两种方法,期中一种是不知道源码,
可以通过修改
1、解压ramdisk.img
2、用c语言完成要实现的功能
3、修改init.rc,启动c语言可执行程序
4、制作ramdisk.img
ramdisk.img是编译Android生成的一个镜像文件,最后和kernel一起打包生成boot.img镜像。ramdisk.img中主要是存放android启动后第一个用户进程init可执行文件和init.*.rc等相关启动脚本以及sbin目录下的adbd工具。
file ramdisk.img