ROC-RK3328-CC 板子使用+linux/android系统编译
本帖最后由 zhangfen137 于 2018-8-11 14:43 编辑FireflyROC-RK3328-CC 是Firefly 出的一款类似树莓派的板子:1,尺寸是85x56mm,和树莓派大小差不多2,采用瑞芯微rockchip 芯片rk3328,4核cortex a53 64位核心,1.5Ghz 主频3,内存 1G,板子上同样没有贴片eMMC,支持 tf 卡。 收到板子,很新很精致:
板子的包装盒里是板子+usb数据线,两外配了5V2A电源适配器+串口模块+三根杜邦线。再找个tf 卡开箱即用:
这个板子特别的地方:1,虽然没有板载eMMC,但是预留了个eMMC模块的接口,可以自己买模块插上使用,eMMC速度还是比 tf 卡快的多。
2,相对树莓派3b,把两个usb2.0接口替换成一个usb3.0接口,有高速数据传输的小伙伴有福了。这个usb3.0 接口是芯片原生支持的。剩余的两个usb2.0接口,靠下的是usb-otg接口,靠上的是usb-host接口。
3,没有WiFi蓝牙,多个红外,其他接口和树莓派差不多。
板上有一个容易搞错的地方,adc 接口,很容易误认为是debug串口,有没有:
板上这个芯片是音频相关的,通过cvbs接口输出。不是颗usb3.0芯片,这个rk3328芯片原生支持usb3.0,不需要额外芯片,这个也容易搞错了:
上一张官网的接口标识图片:
这个按键是个recover 按键,官网标成了 power 按键。性能不会比树莓派3B差,usb3.0接口,emmc扩展,有没有惊艳到,貌似把树莓派3B吐槽的地方改善了,要是保留WiFi+BT就完美了
自己加散热片的小伙伴留意一下,如果是官方的大散热片一下覆盖rk3328 和两个DDR芯片的话(如上图),下面要垫点东西,rk3328 和 DDR 芯片高度不一样,直接覆盖不能完全接触三个芯片,散热效果可能不好。如果是两个或者三个小散热片,rk3288 和 DDR 芯片分开散热没有这个问题。
使用tf 卡烧录系统镜像:烧了个debian9系统
串口按照连接好,hdmi 屏幕也插上打开电源:这个串口波特率是1500000bps,这一点和大多数板子不一样。使用CH340G芯片的串口模块不支持这个波特率,官方的串口模块是cp210x,自己找个cp210x芯片的模块用。
第一次烧录debian后上电开机出现以下错误,又重新烧录一遍还不行,试了试烧录ubuntu有同样的问题;那就应该是硬件的问题了,更换了一张tf卡,好了:应该是tf兼容问题吧
正常开机,串口输出好好的:
hdmi屏幕上的图形桌面,显示有点问题,图形桌面变瘦了:
Hdmi屏幕显示不正常,就把hdmi关了。板子温度低了一点,只连接一个串口,没用其他外部设备的情况下,板子上温度最高的地方是电源芯片和rk3328,都是温温的,温度表现很好。Cpu 占用1%以内,内存占用也很少,系统运行很稳定,很好。
轻负载工作,可以不用散热片,没事。跑比较大的应用,估计芯片发热就明显了。系统编译:下载源码,编译前准备:从官网下载uboot,kernel,build,rkbin源码,然后备份一下:(官方地址:https://github.com/FireflyTeam/)
进入build/board_configs.sh,54行前后,确认一个变量或者改成自己的编译器:
编译-uboot然后输入:build/mk-uboot.sh roc-rk3328-cc 开始编译uboot错误1:我编译过程中出现的:
解决方法:sudo apt-get install device-tree-compiler错误2:
解决方法:sudo apt-get install swig libpython-dev继续编译,然后编译出来了:
在根目录下产生out目录,里面有个uboot目录,uboot目录下是编译出来的文件:
整个过程很顺利,按照官方方法编译,过程中有缺失组件,安装一下。我的编译器和官方使用的不一样,编译前需要确认一下。编译-kernel这个build/mk-kernel.sh文件的34行前后,这个参数原本是-j8,看情况自己改
输入 build/mk-kernel.shroc-rk3328-cc 开始编译kernel错误1:
解决方法:去掉两个地方,继续编译。
编译成功:
产生的目标文件:
文件系统制作:克隆源码到本地:
详细怎么定制文件系统,看自己需要,或者用以往做好的复制过来也行,放到这个 rk-rootfs-build 目录下binary目录中:执行./mk-image.sh
然后这个目录下会产生一个 linaro-rootfs.img镜像,同时那个out目录下也有一份拷贝,都是一样样的东西:
/*=====*/
到此,系统编译全部结束,uboot,kernel,rootfs都做出来了。打包刷机最简单最容易操作就是打包成一体包,再刷机,简单又不会错。多个包单独刷机也可以,但是每一步都要认真操作,一步出错系统就不能启动。打包:输入build/mk-image.sh -c rk3328 -t system -r out/linaro-rootfs.img
/*========*/
然后就生成了 system.img 一体包。刷机:开篇开机用的是windows 刷机软件Win32DiskImager,这次直接linux 系统刷,dd 搞定:
开机检查:
完全搞定了。用我上次不兼容的tf卡烧一下启动试了试:
还是有同样的问题,看来确实tf卡的兼容问题,稍后查查rk3328手册看看怎么回事。总结一下:官网有方法,想参考做出来很容易,基本没啥障碍,但是有个前提是能看懂官网的方法,如果看不懂,完全照搬官网,那还是算了,99%编译不出来,那1%是运气。官网的方法,自己看明白吸收了,做的时候根据自己情况改,编译起来就会容易很多。官方的串口模块,RXD, TXD 两个排针反了,看图:
正确的应该是: 串口模块 TXD 接板子RX2,串口模块RXD接板子TX2。实际如下:看标识,串口模块 RXD 接板子RX2,串口模块TXD接板子TX2。
实际上这个接线是正确的,可以使用。那就错在标识上,标识标反了,正确的应该是下面右边这个标识:
android编译:下载源码,有 gitlab 源码,可以直接克隆,但是网速不好,我试了几次都没成功,使用迅雷下载:换用windows电脑下载,打开这个地址https://gitlab.com/TeeFirefly/RK3328-Nougat,点击file:
点击下载,随便选一个格式下载,或者复制这个链接地址,使用迅雷下载:
解压源码后,更新:git remote rmorigingit remote addgitlab https://gitlab.com/TeeFirefly/RK3328-Nougat.gitgit pull gitlabroc-rk3328-cc:roc-rk3328-cc[报错]Please,commit your changes or stash them before you can merge.[解决方法]git reset --hardgit pull再次执行:git pull gitlabroc-rk3328-cc:roc-rk3328-cc编译环境准备的时候,有两个组件安装不上,一个是名字不对,还有一个是别的原因,忘了,哈哈。我用的ubuntu16.04 64位系统,intel cpu,编译还算顺利编译uboot./FFTools/make.sh-u -j4
编译kernel./FFTools/make.sh-k -j4
源码更新后编译android./FFTools/make.sh-a -j4总共4.5万个文件,编译到 30% 的时候,卡在了这里,
同时电脑上多出来一个 java 进程,占用350%,持续好长时间不动,这个是多次编译截的图:
修改:prebuilts/sdk/tools/jack-admin文件中,添加红圈代码:
执行两个指令,重启服务:./prebuilts/sdk/tools/jack-adminstop-server./prebuilts/sdk/tools/jack-adminstart-server然后接着编译,就成功了:
编译出来的文件:
打包:./FFTools/mkupdate/mkupdate.shupdate
这个目录中的文件,就是最终编译出来的全部东西了:
这个镜像烧录到卡上,查看什么也么有,开机不启动,串口什么也不输出,白卡。打包还是有问题的,linux 系统打包可以,可以参考linux系统的改改再调试。
good {:4_113:}
./FFTools/mkupdate/mkupdate.sh打包的固件,需要使用 SD_Firmware_Tool 工具(RKTOOLS 有),功能模式选择 sd 启动
./FFTools/mkupdate/sd_mkupdate.sh才是和 linux 打包方式一样的 ,直接可以 dd 到 sd 卡后, 启动
自己打包的固件根目录无法利用TF卡剩余空间,有解吗? build/mk-kernel.shroc-rk3328-cc 开始编译kernel 这个是编译 默认的config 文件 内容 ,如果我修改了 内核添加了驱动 应该 如何编译 kernel 呢? 你编译过3328-pc android8.1没? 我怎么下的u-boot中就没见到roc-rk3328-cc_deconfig呢?请问各位下的u-boot中都有roc-rk3328-cc_deconfig吗?
页:
[1]