关于RK3288开发板的学习(1)

一、准备学习Rk3288的一些技术资料和文件工具:

网络学习资源:

(1).入门指南(初学者必看):

http://wiki.t-firefly.com/index.php/Firefly-RK3288/Starter_guide

(2).维基教程(入门教学、驱动开发教程、Android&Linux系统开发教程):

http://wiki.t-firefly.com

(3).资料下载(SDK源代码、升级工具、固件、硬件资料、视频教程、教学文档):

http://www.t-firefly.com/zh/firenow/firefly_rk3288/download/

(4).Firefly-RK3288全部资料下载(源代码、工具、视频、文档、固件):

http://pan.baidu.com/s/1i5NofIl?qq-pf-to=pcqq.c2c#list/path=%2F

(5).开发者社区

http://developer.t-firefly.com

(6).Firefly官方开源技术交流群 二群

586 343 230

文件工具:

开发板,电脑,固件,双公头usb数据线, rkusb驱动,固件升级工具,官方固件,相关产品规格书,ubuntu镜像,优盘等

二、开发板android固件的升级和烧录。

  1. 首先安装驱动程序,直接运行DriverInstall.exe即可。
  2. 将电脑与开发板连接,rk3288连接好电源处于通电状态,用双公口的usb线连接好。按住设备上的 RECOVERY (恢复)键并保持。短按一下 RESET(复位)键。 大约两秒钟后,松开 RECOVERY 键。如果发现按了 RESET 键后还是没有发现设备,请在保持 RECOVERY 键按 下的同时,长按一下 PWRKEY 键,然后才松开 RECOVERY 键。这时候主机会提示新设备的出现。
  3. 正常可以直接先长按recovery键,保持住,在插入电源,保持三秒,松开recovery键。
  4. 连接成功时,开发板上黄灯和蓝灯同时亮起。
  5. 系统正常运行时只有黄灯亮,当进入recovery模式的时候两个灯都亮。
  6. 打开固件升级工具AndroidTool,烧写固件。进入升级固件界面,选择将要烧写的固件,按升级按钮进行升级。

连接成功时软件界面下有“发现一个loader设备”的提示

也可以单独写入分区镜像,多个分区镜像,如 kernel.img, boot.img, recovery.img 等,这些文件在android编译的时候生成。

之后移除连接线,连接屏幕,3288上有两个hdmi接口,选择out口连接,之后按reset重启,正常运行时黄灯亮起。

三、搭建rk3288的android的编译环境。

需预先准备的安装文件:(下载需耗费较长时间)

Ubantu14.04的镜像文件(1.02GB)

Android5.1的SDK文件(6.27GB)

UltraISO 将镜像写入u盘

1.安装 64 位的 Ubuntu 14.04 操作系统

http://mirrors.ustc.edu.cn/ubuntu-releases/14.04/下载合适的版本

需要的环境配置为

64位cpu,16GB物理内存+交换空间,30GB空闲的磁盘空间。

这里要求磁盘空间尽可能的大,因为要在里面存放SDK文件,如果要存放不同版本需要的空间更大,之后还要解压文件,创建git库的空间,占用的更大。

2.安装JDK

sudo apt-get install openjdk-7-jdk

这里就体现出按照官方系统版本搭建环境的优势,之前尝试过最新版本ubantu18的系统,里面不含有openjdk-7-jdk的安装源,设置起来十分麻烦。这样安装好就不需要进行其他配置了。

sudo update-alternatives --config java 

sudo update-alternatives --config javac 

通过这一步选择系统默认的jdk,SDK 在找不到操作系统默认 JDK 的时候会使用内部设定的 JDK 路径

3.安装一些软件包。

sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev \

 libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl \

 libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils \

 xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \

 lib32readline-gplv2-dev gcc-multilib libswitch-perl \

 libssl1.0.0 libssl-dev

4.下载解压android的SDK文件

下载链接:https://pan.baidu.com/s/1V6Gg3Koj2hprToG9ULQ6Dw#list/path=%2F

文件较大,需要提前下好,这里出现过的问题是利用过之前旧版的sdk,导致在解压过后,很多文件夹中缺少该有的配置文件,少的不多,但会在编译的过程中报错,缺少文件。所以要下载官方最新的文件,这样在接下来的更新中也会更新得较快,内容没有错误。

5.将文件转存到ubantu系统中。

出现的问题,我两个系统之间共享的文件夹没有设置好,正常来说除了系统盘之外的磁盘可以两个系统共同访问的,但现在出现的问题是,ubantu系统没有读取其他磁盘文件的权限。解决办法,暂时用优盘在两个系统中传递文件。

6.检测一下md5码,检验文件的正确性

md5sum /path/to/firefly-rk3288_android5.1_git_20180126.tar.gz

7.文件正确,创建工程文件夹proj/firefly-rk3288-lollipop

mkdir -p ~/proj/firefly-rk3288-lollipop

cd ~/proj/firefly-rk3288-lollipop

tar xzf /path/to/firefly-rk3288_android5.1_git_20180126.tar.gz

将压缩文件解压到这个文件夹中,其中path是文件的路径,也可以直接将文件复制到这个文件夹中,右键提取到此。

出现的问题,由于对解压出来的.git文件夹不熟悉,文件夹是隐藏的,这时候如果是在图形界面操作的时候,不要以为没有解压成功,等待解压进度结束就是解压成功了。

8.git reset –hard

彻底回退到需要的版本

git remote add bitbucket https://bitbucket.org/T-Firefly/firenow-lollipop.git

添加远程主机更新源

git pull bitbucket Firefly-RK3288:Firefly-RK3288

从bitbucket处更新git

9.到这里环境就搭建好了,总结的经验就是前提就是要按照官方搭建编译环境的教程一步一步走,不要跳过某一步,或者某个需要安装的文件,还有就是系统配置一定要符合要求,不然会出现存储空间不足的问题,系统的版本也一定要满足条件,不要过分追求最新。

 

 

                                         若非

四、开始编译andorid

1.一种是利用官方的脚本编译:

firefly-rk3288 编译

./FFTools/make.sh -d firefly-rk3288 -j8 -l rk3288_box-userdebug

./FFTools/mkupdate/mkupdate.sh -l rk3288_box-userdebug

这里就是对整个android固件的编译,一般情况不用,编译速度取决于系统内存,整体编译一次需要很长的时间。

一般的编译工作需要下面几条就够

2.编译uboot

cd ~/proj/firefly-rk3288-lollipop/u-boot

make rk3288_defconfig

make -j8

3.使用Firefly-RK3288 编译内核:

cd ~/proj/firefly-rk3288-lollipop/kernel

make firefly_defconfig

make -j8 firefly-rk3288.img

最常用的命令,当修改好系统各项配置文件之后执行者几条命令,会在kernel的文件夹生成kernel.img和resource.img分区映像,然后将其烧写进系统即可,不用对整个系统进行一次编译。

4.编译Android

cd ~/proj/firefly-rk3288-lollipop

source build.sh

lunch rk3288_box-userdebug

make -j8

./mkimage.sh

最后的./mkimage.sh命令会将上面生成的各种分区映像打包到一起,生成一个android的系统固件。

编译效果如

最近一天的编译没有出现警告或者错误,在之前环境没有搭建合理的时候,编译常出问题,目前还没有给出万一出现问题的解决方法,将所有文件做好备份,出现较大的错误重现配置环境,配置环境所需要的时间大概在一个半小时左右。大部分时间用在解压文件,安装git库和更新上,取决于系统性能和网络。

5.这里就需要了解分区映像的文件

boot.img :Android 的初始文件映像,负责初始化并加载 system 分区。

kernel.img :内核映像。

misc.img :misc 分区映像,负责启动模式切换和急救模式的参数传递。

recovery.img :急救模式映像。

resource.img :资源映像,内含开机图片和内核的设备树信息。

system.img :Android 的 system 分区映像,ext4 文件系统格式。

在修改屏幕参数上需要用到的分区映像是kernel.img和resourse.img两个

为了熟悉这些文件的属性。

可以利用官方的连接工具androidttool对已有的固件进行解包处理

解包之后的文件输出在out文件夹中

如下

可以看到各个文件的所占空间大小。

在烧写分区镜像的时候需要

选择好需要下载的部分,文件路径,和下载到的系统地址即可。

 

 

五、配置lvds的相关文件

1.系统中关于LVDS屏幕的文件的位置在

Proj/firefly-rk3288-lollipop/kernel/arch/arm/boot/dts

文件名称lcd-rk3288-86v-LVDS1024x600.dtsi

如果在图形界面编辑的话可以直接在任务栏上进行搜索LVDS出现的文件只有几个很快就能找到。

用文本编辑器打开

显示如下这些代码

 

/*

 * RockChip. LCD_LVDS1024x600 FOR rk3128-86V

 *

 */

 

/

{

 

       disp_timings: display-timings {

                      

 native-mode = <&timing0>;

                       

timing0:

timing0 {

             

screen-type = <SCREEN_LVDS>;

   

           lvds-format = <LVDS_8BIT_2>;

 

              out-face    = <OUT_P888>;

 

             

              /* Min   Typ   Max Unit

               * Clock Frequency fclk  44.9  51.2  63 MHz

               */

      

       clock-frequency = <43000000>;

              hactive = <1024>;       

 /* Horizontal display area thd 1024       DCLK         */

              vactive = <600>;        

  /* Vertical display area tvd   600      H             */

              hback-porch = <100>;        

  /* HS Width +Back Porch   160  160   160  DCLK (Thw+ thbp)*/

              hfront-porch = <60>;    

 /* HS front porch thfp    16   160   216  DCLK          */

              vback-porch = <10>;     

      /* VS front porch tvfp    1    12    127  H                */

              vfront-porch = <8>; 

      /* VS Width+Back Porch    23   23    23   H (Tvw+ tvbp)   */

              hsync-len = <5>;        

  /* HS Pulse Width thw 1     -    140  DCLK         */

              vsync-len = <2>; 

        

/* VS Pulse Width tvw    1     -    20  H            */

              hsync-active = <0>;

   

           vsync-active = <0>;

              de-active = <0>;

             

pixelclk-active = <1>;

   

          

swap-rb = <0>;

             

swap-rg = <0>;

          

   

swap-gb = <0>;

         

              };

    

          }

 

 

};

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_33169543/article/details/81162775