跳转至: 导航, 搜索

“RK3288 Android 5.1 Manual”的版本间的差异

(创建页面,内容为“Category:开发板 == android开发平台的搭建== Android自从升级到4.0以来,相比之前的版本工程更加庞大,编译整套源码对PC机硬...”)
 
第1行: 第1行:
 
[[Category:开发板]]
 
[[Category:开发板]]
== android 开发 平台的搭建==
+
==x3399 开发 板简介==
  
Android自从升级到4.0以来 相比之前 版本工程更加庞大,编译整套源码对PC机 硬件 要求很高 因此不建议采用虚拟机编译,强烈建议直 安装Linux操作系统,充分发挥PC机的性能。我们这里以ubuntu14.04 64位系统机器为例讲解,如果您是新手,建议与我们版本保持一致
+
非常感谢您选择九鼎创展x3399开发平台 本文档讲述x3399开发平台 的硬件 资源 电路原理以及支持的 口等
  
=== 使用U盘安装ubuntu===
+
X3399开发板是基于瑞芯微RK3399的一款高端开发板,它由深圳市九鼎创展科技有限公司自主研发,生产并销售。它是市面上首款基于A53四核,以及A72双核共六核的64位超高性能基于行业控制领域的开发板,主频高达2GHz。
  
使用U盘安装ubuntu系统简单快捷 强烈推荐使 此方法安装
+
RK3399在CPU与GPU方面均堪称怪兽级。双Cortex-A72大核+四Cortex-A53小核结构的CPU,对整数、浮点、内存等作了大幅优化 在整体性能、功耗及核心面积三个方面都具革命性提升。GPU采 四核ARM新一代高端图像处理器Mali-T860,集成更多带宽压缩技术:如智能迭加、ASTC、本地像素存储等,还支持更多的图形和计算接口,总体性能比上一代提升45%
  
  安装工
+
  尽管这些能力均被同类解决芯片方案标榜为“顶级”能力,但对RK3399来讲,这并不是重点。极 看点的是,Type-C接口、内置PCI-e接口、双摄像头支持手势识别三大特性,这对游戏盒子产品的体验将是颠覆性的,还有支持LPDDR4内存等诸多新特性,均领先于目前主流产品。
  
* 2G 上U盘
+
得益于高配置和整体性能的提升, 及全面型布局,使得RK3399天生就是 位多面能手。除了平板电脑、VR、TV-BOX、笔记本之外,RK3399的应用还涵盖了工业及消费领域各类终端 包括智能家电、广告机/ 一体机、金融POS机、车 控制终端、瘦客户机、VOIP视频会议、安防/ 监控/ 警务及IoT物联网等领域。
* lili usb creater 软件 下载地址:http://www.linuxliveusb.com/
 
* ubuntu最新系统,下 地址:[http://www.ubuntu.com/download/ http://www.ubuntu.com/download/]
 
* PC机一台
 
  
安装方法:
+
===Android6.0.1系统===
  
第一步:下载好ubuntu的ISO文件 和lili usb creater这个软件并安装
+
x3399开发板支持android6.0.1操作系统 采用linux4.4内核
  
  第二步:插入usb,并打开usb creater 这个软件,根据软件提示设置,在步骤1中选择安装盘,找到识别出的U盘;在步骤2中找到下载的ubuntu映像文件;步骤3默认,步骤4中选中隐藏优盘上创建的文件,使用FAT32格式化U盘;最后在步骤5中点击闪电图标开始安装,直到提示优盘 安装 完成 为止。
+
 已 测试 完成 模块:
  
http://x.9tripod.com/wiki/zh/images/3/39/USB-MemoryToUbuntu.png
+
* emmc驱动
 +
* WY070ML 7寸MIPI屏(1024x600)
 +
* LP079QXL-SP0V
 +
* 五点触摸电容屏(思立微GSL1680)
 +
* SD卡
 +
* 按键
 +
* ADC
 +
* 蜂鸣器
 +
* 休眠唤醒
 +
* 三路USB HOST2.0
 +
* 一路USB HOST3.0
 +
* 一路TYPEC接口
 +
* 音频解码(ALC5651)
 +
* 3G、4G模块(PCIE接口移远UC20、EC20以及各种3G dongle)
 +
* 录音
 +
* 喇叭
 +
* 光纤音频输出
 +
* 马达
 +
* 四路自定义LED接口
 +
* AP6354 WIFI/BT二合一模块
 +
* G-sensor(LSM330TR)
 +
* 陀螺仪(AK8963N)
 +
* 光感传感器(CM32181)
 +
* MIPI CSI摄相头(OV5645和OV13850)
 +
* 串口
 +
* HDMI
 +
* 千兆以太网RTL8211E
 +
* USB 鼠标键盘
 +
* HS0038B红外一体化接收头
 +
===产品简介===
  
步:重启 电脑, 看清屏幕下方 提示 进入BIOS设置菜单 选择U盘启动 。一 般台式 是按DEL键 笔记本有些是按F2 有些按F10进入。设置完成后保存退出
+
x3399开发板由邮票孔核心板,底板和液晶板 大块组成,核心板采用10层板工艺设计,确保稳定可靠,可以批量用于平板 电脑, 车机,学习机,POS机,游戏 机, 行业监控等多种领域。底板留有丰富的外设,几乎可以演示3399芯片 全部功能,板载千兆以太网接口、板载CSI接口、DSI接口、HDMI接口、EDP接口、TYPEC接口、USB3.0接口、USB2.0接口、板载音频光纤接口、板载红外一体化接收头 支持红外遥控功能;板载双CSI 接口 可支持同时外接两路MIPI摄像头并同时显示 同时硬件电路保持九鼎开发板的 惯风格,支持软件开关 机, 休眠唤醒等。液晶板默认采用7寸MIPI液晶屏,同时可选配7.9寸2K液晶屏,支持MIPI或EDP接口液晶屏 支持背光亮度无级调节
  
第四步:再次重启系统 这时已经 以看到ubuntu的安装界面了 选择中文 继续;
+
x3399开发板上x3399核心板适用于VR、工控 电力,通讯,医疗,媒体,安防,车载,金融,消费电子,手持设备,游戏机,显示控制,教学仪器等多种领域。 广泛用于POS,游戏机,教学实验平台,多媒体终端,PDA 点菜机 广告机等领域。
  
  第五步 :选 择 install 您也可 选择live mode 可以 验下系统),继续
+
===产品功能特性===
 +
* 内核:ARM Cortex-A53四核 + Cortex-A72双核;
 +
* 主频:1.4GHz*4 + 2G*2;
 +
* 内存:2GB LPDDR3;
 +
* Flash 支持4GB/8GB/16GB/32GB/64GB emmc可 ,标配16GB emmc;
 +
* 三路USB HOST2.0接口;
 +
* 一路USB HOST3.0接口;
 +
* 一路TYPEC接口(兼容OTG功能);
 +
* 1路RS232接口,1路TTL串口;
 +
* 1路TF卡接口;
 +
* 复位按钮;
 +
* 4路独立按键;
 +
* 软件开关机按钮;
 +
* 双声道外置扬声器;
 +
* MIC输入;
 +
* 耳机输出接口;
 +
* 音频光纤输出接口;
 +
* 支持背光无级调节;
 +
* 支持HDMI接口;
 +
* 支持5点电容触摸;
 +
* 板载AP6354 WIFI/BT;
 +
* 支持G-sensor;
 +
* 支持光敏传感器(默认空焊);
 +
* 支持陀螺仪 默认空焊);
 +
* 支持MPEG-1, MPEG-2, MPEG-4,H.263, H.264, H.265, VC-1, VP9, VP8, MVC视频解码;
 +
* 支持H.264, MVC 和VP8视频编码;
 +
* 支持2D,3D高性能图形加速;
 +
* 支持RTC时钟实时保存;
 +
* 支持千兆有线 太网RTL8211E;
 +
* 支持BT656/BT601/MIPI摄相头接口;
 +
* 支持GPS接口;
 +
* 支持GPRS接口;
 +
* 支持外置USB 3G模块及PCIE接口模块;
 +
* 支持USB鼠标,键盘;
 +
* 支持红外一 化接收头
 +
<center>==硬件资源==</center>
 +
===硬件接口描述===
  
  第六步:也选择中文,点击继续:再继续;
+
[[image:3399hardwareInterface.png|1,267 × 738px]]
  
第七步:配置网络,可以安装时升级,也可以不升级,等安装完系统后再手动升级;
+
{| class="wikitable"
 +
|-
 +
| colspan="3" |
 +
<center>硬件接口介绍</center>
  
第八步:第一个选项是把以前的系统升级到ubuntu14.04,如果你只要单系统的可以选择第一项,第二项是升级到ubuntu14.04并把其他的资料删除掉,第三项是我们用的最多的,比较灵活,选something else,继续,在这里我分出了两个区给ubuntu,一个 /&nbsp; 和 一个 /home ,分区可以新建,可以对它格式化,具体根据需要选择;
+
|-
 +
|
 +
<center>标号</center>
  
第九步:这是设置区域,选择上海就行了;
+
|
 +
<center>名称</center>
  
第十步:选择键盘布局。选中国;
+
|
 +
<center>说明</center>
  
第十一步:选择用户名和密码,到此配置完毕,点击继续直接安装,喝一会儿咖啡,待安装完毕,重启之后,就可以看到美丽的ubuntu世界了。
+
|-
 +
|
 +
<center>【1】</center>
  
=== 设置XP为开机默认启动===
+
|
 +
CPU
  
ubuntu安装后每次开机都是默认进入ubuntu系统的,对于以windows为主的朋友,每次开机都要守在画面切换到XP启动,可见十分麻烦,通过下面,你可以设置让你的XP系统为第一启动。
+
|
 +
RK3399,A53,4*1.5GHz+A72,2*2GHz
  
修改/boot/grub<nowiki>/grub.cf</nowiki>g文件,可以看到最末尾有如下语句:
+
|-
 +
|
 +
<center> 【2】</center>
  
<pre><nowiki>
+
|
menuentry "Microsoft Windows XP Professional (on /dev/sda1)" {
+
DDR
  
    insmod part_msdos
+
|
 +
K4E8E304EE-EGCF,LPDDR3,2GBytes
  
    insmod ntfs
+
|-
 +
|
 +
<center>【3】</center>
  
    set root='(hd0,msdos1)'
+
|
 +
eMMC
  
    search --no-floppy --fs-uuid --set 0E48A65048A6367D
+
|
 +
KLMAG2GEND,16GB(4G,8G可选)
  
    drivemap -s (hd0) ${root}
+
|-
 +
|
 +
<center>【4】</center>
  
    chainloader +1
+
|
 +
RTC
  
}
+
|
 +
RTC电池座,CR1202
  
### END /etc/grub.d/30_os-prober ###
+
|-
<nowiki></pre>
+
|
 +
<center> 【5】</center>
  
仔细阅读该文件,发现有不少menuentry,这些正是对应了开机启动时的选择项,将上面语句放在第一个menuentry的前面,这样Windows XP就为默认的启动系统了。修改后的部分代码如下:
+
|
 +
UART
  
<pre><nowiki>### BEGIN /etc/grub.d/05_debian_theme ###</nowiki>
+
|
 +
UART4,TTL电平接口
  
set menu_color_normal=white/black
+
|-
 +
|
 +
<center>【6】</center>
  
set menu_color_highlight=black/light-gray
+
|
 +
BEEP
  
<nowiki>### END /etc/grub.d/05_debian_theme ###</nowiki>
+
|
 +
蜂鸣器
  
 +
|-
 +
|
 +
<center>【7】</center>
  
 +
|
 +
UART2
  
<nowiki>### BEGIN /etc/grub.d/30_os-prober ###</nowiki>
+
|
 +
串口2,默认调试串口,RS232电平
  
menuentry "Microsoft Windows XP Professional (on /dev/sda1)" {
+
|-
 +
|
 +
<center>【8】</center>
  
    insmod part_msdos
+
|
 +
SPDIF
  
    insmod ntfs
+
|
 +
光纤输出接口
  
    set root='(hd0,msdos1)'
+
|-
 +
|
 +
<center>【9】</center>
  
    search --no-floppy --fs-uuid --set 0E48A65048A6367D
+
|
 +
DC座
  
    drivemap -s (hd0) ${root}
+
|
 +
5V DC电源输入
  
    chainloader +1
+
|-
 +
|
 +
<center>【10】</center>
  
}
+
|
 +
POWER
  
<nowiki>### END /etc/grub.d/30_os-prober ###</nowiki>
+
|
 +
电源按键
  
 +
|-
 +
|
 +
<center>【11】</center>
  
 +
|
 +
独立按键
  
<nowiki>### BEGIN /etc/grub.d/10_linux ###</nowiki>
+
|
 +
音量加,在升级时用作Recovery键
  
menuentry 'Ubuntu, with Linux 2.6.35-30-generic' --class ubuntu --class gnu-linux --class gnu --class os {
+
|-
 +
|
 +
<center>【12】</center>
  
    recordfail
+
|
 +
独立按键
  
    insmod part_msdos
+
|
 +
音量减
  
    insmod ext2
+
|-
 +
|
 +
<center>【13】</center>
  
    set root='(hd0,msdos9)'
+
|
 +
独立按键
  
    search --no-floppy --fs-uuid --set 4833f619-6388-4dd3-acd7-6fa3eacb9a15
+
|
 +
返回键
  
    linux    /boot/vmlinuz-2.6.35-30-generic root=UUID=4833f619-6388-4dd3-acd7-6fa3eacb9a15 ro  quiet splash
+
|-
 +
|
 +
<center>【14】</center>
  
    initrd    /boot<nowiki>/initrd.im</nowiki>g-2.6.35-30-generic
+
|
 +
独立按键
  
}
+
|
</pre>
+
菜单键
  
=== ubuntu下磁盘格式化 ===
+
|-
 +
|
 +
<center>【15】</center>
  
在做开发时,经常会把SD卡格式化为msdos,ext3等格式。这时,放在windows下将无法格式化,只能借助于Linux。
+
|
 +
MIPI CSI
  
在Linux下使用fdisk和mkfs两个工具实现SD卡的格式化。首先,使用fdisk指令删除里面的所有分区,步骤为:
+
|
 +
MIPI摄像头接口
  
<pre><nowiki>fdisk  /dev/sdb
+
|-
 +
|
 +
<center> 【16】</center>
  
d
+
|
 +
MIPI CSI+DSI
  
w
+
|
</nowiki></pre>
+
MIPI摄像头接口及DSI接口,可接双MIPI屏
  
 +
|-
 +
|
 +
<center>【17】</center>
  
每输一次d,输入一次分区的序号,直到删完,再按w写入,完成分区的删除。再按n,回车,回车,新建一个分区。之后再使用mkfs工具格式化为指定格式的盘,如格式化为fat32格式,则执行如下指令:
+
|
<pre><nowiki>
+
MIPI DSI
mkfs  –t  vfat  /dev/sdb
 
</nowiki></pre>
 
  
=== Ubuntu下通过SSH远程登录服务器===
+
|
 +
接MIPI接口的屏
  
第一步:在服务器上安装ssh的服务器端。
+
|-
 +
|
 +
<center>【18】</center>
  
<pre><nowiki> apt-get install openssh-server </nowiki></pre>
+
|
 +
RESET
  
  第二步:启动ssh-server。
+
|
 +
  复位按键
  
<pre><nowiki> service ssh restart </nowiki></pre>
+
|-
 +
|
 +
<center> 【19】</center>
  
第三步:确认ssh-server已经正常工作。
+
|
 +
HDMI
  
<pre><nowiki> netstat -tlp </nowiki></pre>
+
|
 +
HDMI输出接口
  
有如下打印信息:
+
|-
 +
|
 +
<center>【20】</center>
  
<pre><nowiki> tcp 0 0 *:ssh *:* LISTEN - </nowiki></pre>
+
|
 +
TYPEC
  
看到上面这一行输出说明ssh-server已经在运行了。
+
|
 +
TYPEC接口,兼容OTG功能
  
第四步:在Ubuntu客户端通过ssh登录服务器。假设服务器的IP地址是172.18.0.198,登录的用户名是liuqiming。
+
|-
 +
|
 +
<center>【21】</center>
  
<pre><nowiki> $ ssh -l liuqiming 172.18.0.198 </nowiki></pre>
+
|
 +
USB3.0 接口
  
下来会提示输入密码,然后就能成功登录到服务器上了。可以通过资源管理器浏览的方式登录服务器,点击位置-&gt;连接到服务器,服务器类型选择ssh,服务器一栏填入服务器的IP地址,点击连接即可。
+
|
 +
USB HOST3.0
  
=== ubuntu下使用邮箱===
+
|-
 +
|
 +
<center>【22】</center>
  
ubuntu下默认就有邮箱软件,如在使用时发现无法接受或发送邮件,在发送电子邮件-&gt;身份验证点击检查的类型,再选择没有划斜线的就好了。
+
|
 +
USB HOST
  
===ubuntu下安装五笔 ===
+
|
 +
HOST2.0接口,RK3399自带
  
使用如下指令:
+
|-
 +
|
 +
<center>【23】</center>
  
<pre><nowiki> sudo apt-get install ibus-tables-wubi </nowiki></pre>
+
|
 +
USB HOST
  
然后在系统-&gt;首选项-&gt;键盘输入法的输入法中选择WUBI 添加进去即可。
+
|
 +
HUB芯片扩展 两路HOST2.0接口
  
=== ubuntu下安装chrome浏览器===
+
|-
 +
|
 +
<center>【24】</center>
  
ubuntu10.10默认安装的火狐浏览器,如果用户喜欢该浏览器,可以跳过此节。google出了基于linux的浏览器chrome,用户可以使用如下方式安装。在网上下载安装源文件,[http://tools.google.com/chrome/ http://tools.google.com/chrome/],也可以从光盘中获得,双击即可安装。
+
|
 +
TF卡
  
=== ubuntu下安装VIM===
+
|
 +
TF卡座
  
使用如下命令安装即可:
+
|-
 +
|
 +
<center>【25】</center>
  
<pre><nowiki> sudo apt-get install vim </nowiki></pre>
+
|
 +
EDP
  
===ubuntu打开WINDOWS下记事本乱码问题===
+
|
 +
EDP接口
  
出现这种情况的原因是,gedit 使用一个编码匹配列表,只有在这个列表中的编码才会进行匹配,不在这个列表中的编码将显示为乱码。您要做的就是将 GB18030 加入这个匹配列表。
+
|-
 +
|
 +
<center>【26】</center>
  
您可以遵循以下步骤,使您的gedit正确显示中文编码文件。
+
|
 +
SIM卡槽
  
1. 终端中键入“gconf-editor”,并按下回车键,打开“配置编辑器”。
+
|
 +
3G、4G手机卡槽
  
2. 展开左边的树节点,找到 /apps/gedit-2/preferences/encodings 节点并单击它。
+
|-
 +
|
 +
<center>【27】</center>
  
3. 双击右边的 auto_detected 键,打开“编辑键”对话框。
+
|
 +
LED灯
  
4. 单击列表右边的“添加”按钮,输入“GB18030”,单击确定按钮。
+
|
 +
  四路可编程LED灯
  
5. 列表的最底部新增加了一个“GB18030”。单击右边的向上,将“GB18030”放在第二位;
+
|-
 +
|
 +
<center>【28】</center>
  
6. 单击确定按钮,关闭配置编辑器。
+
|
 +
  耳机座
  
  现在,gedit 应该能够顺利打开 GB18030 编码的文本文件了。如果不放心,可以再增加GBK、GB2312编码。
+
|
 +
  耳机输出
  
=== ubuntu下安装源码比较工具===
+
|-
 +
|
 +
<center>【29】</center>
  
ubuntu下源码比较工具很多,比较常见的是meld工具,使用如下指令安装:
+
|
 +
喇叭接口
  
<pre><nowiki>sudo apt-get install meld </nowiki></pre>
+
|
 +
外置双声道扬声器
  
安装完成后,可以在应用程序-&gt;编程中打开。
+
|-
 +
|
 +
<center>【30】</center>
  
===ubuntu下安装串 终端minicom===
+
|
 +
喇叭接
  
  使用如下指令安装:
+
|
 +
  外置双声道扬声器
  
<pre><nowiki>sudo apt-get install minicom </nowiki></pre>
+
|-
 +
|
 +
<center> 【31】</center>
  
安装完成后,需要设置minicom。如果直接使用串口,通常设置为ttyS0,如果使用USB转串口,通常设置为ttyUSB0。输入如下指令:
+
|
 +
MIC
  
<pre><nowiki> sudo minicom -s </nowiki></pre>
+
|
 +
耳麦,录音输入
  
选择Serial port setup,选择A,输入正确的串口终端,选择E,输入115200 8N1,选择F和G,都设置为No,不使用流控,再回车,选择Save setup as dfl。注意,只有root用户才有权限保存参数。笔记本用户通常使用的USB转串口延长线,目前市面上大多都是pl2303方案,插上USB转串口延长线后,输入如下命令查询驱动是否正常加载:
+
|-
 +
|
 +
<center>【32】</center>
  
<pre><nowiki>lsmod |grep pl2303 </nowiki></pre>
+
|
 +
摄像头接口
  
  正常加载时会提示如下信息:
+
|
 +
  标准 24PIN 摄相头接口
  
<pre><nowiki>lqm@lqm:~$ lsmod |grep pl2303
+
|-
 +
|
 +
<center> 【33】</center>
  
pl2303                11756 1
+
|
 +
  千兆网口
  
usbserial              33100 3 pl2303 </nowiki></pre>
+
|
 +
RT8211E 接口
  
再使用如下命令查询系统的一些信息:
+
|-
 +
|
 +
<center>【34】</center>
  
<pre><nowiki> dmesg | tail -f </nowiki></pre>
+
|
 +
WIFI/BT
  
正常情况下会出现如下提示:
+
|
 +
AP6354 WIFI/BT二合一模块
  
<pre><nowiki>lqm@lqm:~$ dmesg |tail -f
+
|-
 +
|
 +
<center> 【35】</center>
  
<nowiki>[ 383.093851] ERROR! H2M_MAILBOX still hold by MCU. command fail</nowiki>
+
|
 +
  红外接收头
  
<nowiki>[  383.148849] ---&gt; RTMPFreeTxRxRingMemory</nowiki>
+
|
 +
HS0038红外一体化接收头
  
<nowiki>[  383.148903] &lt;--- RTMPFreeTxRxRingMemory</nowiki>
+
|}
 +
===扩展接口定义===
 +
====核心板引脚定义1====
  
<nowiki>[  383.180580]  RTUSB disconnect successfully</nowiki>
+
{| class="wikitable"
 +
|-
 +
| colspan="4" |
 +
<center> 核心板引脚定义1</center>
  
<nowiki>[ 387.762330] usb 2-4: USB disconnect, address 3</nowiki>
+
|-
 +
|
 +
  引脚编号
  
<nowiki>[ 387.762566] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0</nowiki>
+
|
 +
  信号
  
<nowiki>[ 387.762601] pl2303 2-4:1.0: device disconnected</nowiki>
+
|
 +
  类型
  
<nowiki>[ 392.164589] usb 2-4: new full speed USB device using ohci_hcd and address 5</nowiki>
+
|
 +
  描述
  
<nowiki>[  392.379898] pl2303 2-4:1.0: pl2303 converter detected</nowiki>
+
|-
 +
|
 +
1
  
<nowiki>[  392.412998] usb 2-4: pl2303 converter now attached to ttyUSB0</nowiki></nowiki></pre>
+
|
 +
GPIO4_A3/
  
表示串口设备名称为ttyUSB0。有时会提示如下错误:
+
I2S1_SCLK
  
<pre><nowiki>lqm@lqm:~$ dmesg | tail -f
+
|
 +
GPIO或I2S串行时钟
  
<nowiki>[  408.910351] 0x1300 = 00073200</nowiki>
+
|
  
<nowiki>[  413.945752] ===&gt;rt_ioctl_giwscan. 8(8) BSS returned, data-&gt;length = 1177</nowiki>
 
  
<nowiki>[  419.047006] ===&gt;rt_ioctl_giwscan. 7(7) BSS returned, data-&gt;length = 1067</nowiki>
+
|-
 +
|
 +
2
  
<nowiki>[  419.047302] ==&gt;rt_ioctl_siwfreq::SIOCSIWFREQ[cmd=0x8b04] (Channel=1)</nowiki>
+
|
 +
GPIO4_A7/
  
<nowiki>[  419.392535] wlan0: no IPv6 routers present</nowiki>
+
I2S1_SDO0
  
<nowiki>[  433.902136] ===&gt;rt_ioctl_giwscan. 6(6) BSS returned, data-&gt;length = 960</nowiki>
+
|
 +
GPIO或I2S数据输出
  
<nowiki>[  473.902907] ===&gt;rt_ioctl_giwscan. 8(8) BSS returned, data-&gt;length = 1271</nowiki>
+
|
  
<nowiki>[  533.900777] ===&gt;rt_ioctl_giwscan. 8(8) BSS returned, data-&gt;length = 1200</nowiki>
 
  
<nowiki>[  613.904091] ===&gt;rt_ioctl_giwscan. 9(9) BSS returned, data-&gt;length = 1435</nowiki>
+
|-
 +
|
 +
3
  
<nowiki>[  713.904199] ===&gt;rt_ioctl_giwscan. 8(8) BSS returned, data-&gt;length = 1263</nowiki></nowiki></pre>
+
|
 +
GPIO4_A6/
  
一般情况下重插拨一次USB转串口线即可。
+
I2S1_SDI0
  
=== ubuntu卡死的解决办法===
+
|
 +
GPIO或I2S数据输入
  
ubuntu系统有时也会像windows系统一样,卡死不动。这时除了复位系统,我们也可以尝试如下方法:
+
|
  
一:按住ctrl+alt+F2进入tty2;
 
  
二:查看进程:
+
|-
 +
|
 +
4
  
<pre><nowiki>ps -e </nowiki></pre>
+
|
 +
GPIO4_A5/
  
三:kill掉相关进程
+
I2S1_LRCK_TX
  
四:再按住alt+F7返回图形界面
+
|
 +
GPIO或I2S帧时钟
  
== Android开发工具 ==
+
|
=== 代码编辑工具 ===
 
  
在windows下开发时,很多人都习惯使用source insight,但是source insight并没有linux版本,而且自从3.5版本之后,就再也没有更新了。
 
  
在linux下,同样也有很多优秀的代码编辑软件,如Emacs、KVIM、Arachnophilia、Bluefish、Komodo Edit、NEdit、Gedit、Kate、Quanta Plus等等。这里介绍两款比较优秀的代码编辑软件,slickedit和eclipse。
+
|-
 +
|
 +
5
  
==== slickedit====
+
|
 +
GPIO4_A4/
  
安装步骤如下:
+
I2S1_LRCK_RX
  
第一步:解压<nowiki>se_14000202_linux_full.tar.gz</nowiki>:
+
|
 +
GPIO或I2S帧时钟
  
<pre><nowiki>tar -zxvf <nowiki>se_14000202_linux_full.tar.gz</nowiki></nowiki></pre>
+
|
  
第二步:进入解压的目录,运行安装程序vsinst。这里要加上sudo,增加读写访问权限:
 
  
<pre><nowiki> sudo ./vsinst </nowiki></pre>
+
|-
 +
|
 +
6
  
第三步:会弹出安装信息,按住回车不放,直到弹出如下提示:
+
|
 +
GPIO4_A1/
  
<pre><nowiki>
+
I2C1_SDA
<nowiki>Do you agree to the above license terms?[yes or no]</nowiki> </nowiki></pre>
 
  
输入<pre><nowiki>
+
|
yes </nowiki></pre>
+
GPIO或I2C1数据
  
第四步:弹出如下信息:
+
|
  
<pre><nowiki>
 
<nowiki>Install directory [/opt/slickedit]:</nowiki> </nowiki></pre>
 
  
这里提示输入安装路径,默认按回车即可
+
|-
 +
|
 +
7
  
第五步:提示如下信息:
+
|
 +
GPIO4_A2/
  
<pre><nowiki>
+
I2C1_SCL
<nowiki>Directory /opt/slickedit/ does not exist. Create [Y]?</nowiki> </nowiki></pre>
 
  
输入Y,回车, 程序开始安装。
+
|
 +
GPIO或I2C1时钟
  
第六步:安装过程中会弹出一个SlickEdit License Manager的对话框,点退出
+
|
  
再弹出一个对话框,点<pre><nowiki>
 
OK </nowiki></pre>
 
  
第七步:这时会提示:
+
|-
 +
|
 +
8
  
<pre><nowiki>
+
|
INSTALLATION SUCCESSFULLY COMPLETED
+
GPIO4_A0/
  
1.Type "/opt/slickedit/bin/vs" to run SlickEdit.
+
I2S_CLK
  
2.You may want to add "/opt/slickedit/bin/" to your users' PATH.</nowiki></pre>
+
|
 +
GPIO或I2S主时钟
  
第八步:退回原存放安装文件的目录,解压破解文件
+
|
  
<pre><nowiki>
 
<nowiki>slickedit2009-14.0.2.2-linux-cracked.tar.gz</nowiki>:
 
  
tar -xvf <nowiki>slickedit2009-14.0.2.2-linux-cracked.tar.gz</nowiki></nowiki></pre>
+
|-
 +
|
 +
9
  
将解压出的破解文件VS拷备到/opt/slickedit/bin目录下:
+
|
 +
GPIO3_D0/
  
<pre><nowiki>
+
I2S0_SCLK
sudo cp vs /opt/slickedit/bin </nowiki></pre>
 
  
第九步:在/opt/slickedit/bin目录下,执 ./vs命令打开slickedit软件,看看是否大功告成?以下是执行命令:
+
|
 +
GPIO或I2S串 时钟
  
<pre><nowiki>
+
|
cd /
 
  
./opt/slickedit/bin/vs </nowiki></pre>
 
  
第十步:启动方式
+
|-
 +
|
 +
10
  
可以在<nowiki> [</nowiki>终端] 中 ./vs 启动 ,也可以自己创建一个起动器。
+
|
 +
GPIO3_D1/
  
<pre><nowiki>
+
I2S0_LRCK_RX
cd /opt/slickedit/bitmaps </nowiki></pre>
 
  
找到图标文件,slickedit 2010下我选择了<nowiki>vse_profile_256.bm</nowiki>p
+
|
 +
GPIO或I2S帧时钟
  
<pre><nowiki>
+
|
$ sudo cp <nowiki>vse_profile_256.bm</nowiki>p /usr/share/icons </nowiki></pre>
 
  
一般把图标都放在/usr/share/icons下
 
  
<pre><nowiki>
+
|-
$ cd /usr/share/applications
+
|
 +
11
  
$ sudo gedit <nowiki>slickedit.de</nowiki>sktop </nowiki></pre>
+
|
 +
GPIO3_D2/
  
输入如下语句:
+
I2S0_LRCK_TX
  
<pre><nowiki>
+
|
<nowiki>[Desktop Entry]</nowiki>
+
GPIO或I2S帧时钟
  
Name=Slickedit
+
|
  
Comment=Slickedit
 
  
Exec=/opt/slickedit/bin/vs
+
|-
 +
|
 +
12
  
Icon=/usr/share/icons<nowiki>/vse_profile_256.bm</nowiki>p
+
|
 +
GPIO3_D3/
  
Terminal=false
+
I2S0_SDI0
  
Type=Application
+
|
 +
GPIO或I2S数据输入
  
Categories=Development;
+
|
  
StartupNotify=true </nowiki></pre>
 
  
这时,在应用程序-&gt;编程中,就能找到slickedit的图标了。
+
|-
 +
|
 +
13
  
第十一步:如果你实在是用烦了这个软件,那就干掉他吧!进入/opt目录,输入如下指令:
+
|
 +
GPIO3_D4/
  
<pre><nowiki>rm -rf slickedit </nowiki></pre>
+
I2S0_SDI1
  
从此让他滚得越远越好!
+
|
 +
GPIO或I2S数据输入
  
附:slickedit行号显示:
+
|
  
<pre><nowiki>tool-&gt;options-&gt;Languages-&gt;Application Languages-&gt;C/C++-&gt;View-&gt;Line numbers </nowiki></pre>
 
  
=== eclipse ===
+
|-
===== 在ubuntu下安装eclipse=====
+
|
 +
14
  
第一步:进入如下网站下载eclipse:
+
|
 +
GPIO3_D7/
  
http://www.eclipse.org/
+
I2S0_SDO0
  
选择Eclipse IDE for Java Developers,Linux 32 Bit或Linux 64 Bit根 自己的机器而定;
+
|
 +
GPIO或I2S数 输出
  
第二步:将下载的文件解压到用户目录:
+
|
  
<pre><nowiki>cp <nowiki>eclipse-java-indigo-SR1-linux-gtk.tar.gz</nowiki> ~/
 
  
cd ~
+
|-
 +
|
 +
15
  
tar xf <nowiki>eclipse-java-indigo-SR1-linux-gtk.tar.gz</nowiki></nowiki></pre>
+
|
 +
GPIO3_D6/
  
第三步:创建启动图标:
+
I2S0_SDO1
  
<pre><nowiki>sudo cp <nowiki>icon.xp</nowiki>m /usr/share/icons<nowiki>/eclipse.xp</nowiki>m
+
|
 +
GPIO或I2S数据输出
  
sudo gedit /usr/share/applications<nowiki>/eclipse.de</nowiki>sktop </nowiki></pre>
+
|
  
输入如下语句:
 
  
<pre><nowiki><nowiki>[Desktop Entry]</nowiki>
+
|-
 +
|
 +
16
  
Name=eclipse
+
|
 +
GPIO3_D5/
  
Comment=eclipse
+
I2S0_SDO2
  
Exec=/home/lqm/eclipse/eclipse
+
|
 +
GPIO或I2S数据输出
  
Icon=/usr/share/icons<nowiki>/eclipse.xp</nowiki>m
+
|
  
Terminal=false
 
  
Type=Application
+
|-
 +
|
 +
17
  
Categories=Development;
+
|
 +
GPIO4_D4
  
StartupNotify=true  </nowiki></pre>
+
|
 +
GPIO
  
这时,在应用程序-&gt;编程中,就能找到eclipse图标了,点击即可启动eclipse.
+
|
  
第四步:安装CDT插件
 
  
安装eclipse后,还不能建立C/C++工程,需安装插件。进入官网下载:
+
|-
 +
|
 +
18
  
http://www.eclipse.org/downloads/download.php?file=/tools/cdt
+
|
 +
ADC_IN2
  
解压下载的文件<nowiki>cdt-master-8.0.1.zi</nowiki>p,将解压出来的plugins和features目录拷贝到eclipse安装目录,直接合并即可完成安装。
+
|
 +
ADC输入
  
===== 使用eclipse新建一个工程=====
+
|
  
第一步:打开eclipse,首次打开时,会提示选择工作路径,建立自己的路径,确定即可;
 
  
第二步:新建一个工程。点击
+
|-
  File-&gt;New-&gt;Project,
+
|
选择
+
19
  C/C++-&gt;C Project,
 
点击
 
  Next,
 
在Project name一栏输入工程名称,如xboot,在Project name下面有一个Use default location的选择框,去掉前面的勾,
 
点击
 
  Browse,
 
指向我们需要修改的文件的目录。
 
  
在Project type中选择一个工程类型,如Shared Library-&gt;Empty Project,在Toolchains中选择Cross GCC,再点击Next,在Select Configurations中选择配置类型,如Release,点击Finish完成。
+
|
 +
GPIO2_C4/
  
第三步:这时在Project Explorer中有xboot的目录,右击xboot,点击Import,找到General-&gt;File System,双击,弹出Import对话框,在From directory中找到需要加载的文件的目录,点击Select All,将把加载的目录的所有类型文件添加到工程中,点击Finish按钮,提示是否覆盖.cproject,点击Yes To All,这时我们需要编辑的文件就已经全加载到工程中了。
+
SDIO0_D0/
  
=== adb工具===
+
SPI5_RXD
==== 安装adb工具====
 
  
网上下载最新的SDK,下载地址为:
+
|
 +
GPIO或SDIO接口或SPI接口
  
[http://developer.android.com/sdk/index.html http://developer.android.com/sdk/index.html]
+
|
  
对于WINDOWS系统,需下载[http://dl.google.com/android/installer_r12-windows.exe installer_r12-windows.exe],如下图所示:
 
  
http://x.9tripod.com/wiki/zh/images/0/05/Android-sdk-Window.png
+
|-
 +
|
 +
20
  
如果PC机上没有安装JDK,会提示需要先安装,需从java官网下载,如<nowiki>jdk-6u25-windows-i586.ex</nowiki>e,不同的版本名称不一样。安装完JDK后,再安装SDK,默认会装在C盘,建议安装在D盘,这时adb工具在下面的路径:
+
|
 +
GPIO2_C5/
  
<pre><nowiki> D:\Program Files\Android\android-sdk\platform-tools </nowiki></pre>
+
SDIO0_D1/
  
修改系统环境变量,找到Path环境变量,在前面添加
+
SPI5_TXD
  
<pre><nowiki> D:\Program Files\Android\android-sdk\platform-tools;</nowiki></pre>
+
|
 +
GPIO或SDIO接口或SPI接口
  
注意一定要加一个分号隔开。然后在WINDOWS的CMD命令行中输入adb,将会弹出adb的一些参数。如果出现”adb不是内部或外部命令的错误”,表示系统没有找到adb,将上面目录中的<nowiki>adb.ex</nowiki>e和<nowiki>AdbWinApi.dl</nowiki>l拷贝到C:\WINDOWS\system32中即可。
+
|
  
==== 查看设备的连接状态====
 
  
开发板上电,进入 setting,选择“ developer options”,勾选“ USB debugging”进入WINDOWS下的CMD命令行,输入如下命令验证开发板是否连接:
+
|-
 +
|
 +
21
  
<pre><nowiki>adb  devices </nowiki></pre>
+
|
 +
GPIO2_C6/
  
显示下面内容表示成功连接:
+
SDIO0_D2/
  
http://x.9tripod.com/wiki/zh/images/7/70/Adb-device.png
+
SPI5_CLK
  
====进入adb shell====
+
|
 +
GPIO或SDIO接口或SPI接口
  
使用如下命令进入开发板终端:
+
|
  
<pre><nowiki>adb  shell </nowiki></pre>
 
  
如下图所示:
+
|-
 +
|
 +
22
  
http://x.9tripod.com/wiki/zh/images/3/33/Adb-shell.png
+
|
 +
GPIO2_C7/
  
输入exit退回DOS操作界面。注意,有时候,执行adb devices命令时,会提示error: more than one device and emulator,很有可能是播放了USB设备造成的。这时已经无法再通过adb传输数据,解决的办法很简单,如果是使用windows,直接在进程中干掉<nowiki>adb.ex</nowiki>e,再启动adb即可。
+
SDIO0_D3/
  
=== 串口工具secureCRT===
+
SPI5_CSn0
  
安装secureCRT工具,在计算机设备管理器中找到COM 号,点击“快速连 ”,如下图:
+
|
 +
GPIO或SDIO接 或SPI
  
http://x.9tripod.com/wiki/zh/images/8/88/SecureCRT.png
+
|
  
协议选择serial(我的设备是COM2),其他选项按照下图所示选择,'''右侧三个流控制选项不能勾选!'''
 
  
http://x.9tripod.com/wiki/zh/images/3/3c/SecureCRT-set.png
+
|-
 +
|
 +
23
  
接下来用USB转串口线接到开发板的调试串口与PC即可看到调试串口打印的log信息。
+
|
 +
GPIO2_D0/
  
http://x.9tripod.com/wiki/zh/images/0/01/Usb-serial.png
+
SDIO0_CMD
  
http://x.9tripod.com/wiki/zh/images/f/f1/Usb-serial-log.png
+
|
 +
GPIO或SDIO接口
  
== 安装android源码包==
+
|
=== 安装android源码依赖包===
 
  
'''说明:本文档所有开发全部基于ubuntu14.04 64位系统,后续不再声明。'''
 
  
使用如下命令安装所需的软件包(安装前使用<pre><nowiki>sudo apt-get update </nowiki></pre> 获得一下最近的软件包的列表):
+
|-
 +
|
 +
24
  
<pre><nowiki>sudo apt-get install git-core gnupg sun-java6-jdk flex bison gperf libsdl-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev genromfs u-boot-tools libxml2-utils texinfo mercurial subversion whois </nowiki></pre>
+
|
 +
GPIO2_D1/
  
很可能个别软件包会安装失败,比如sun-java6-jdk,这时需要我们手动来安装。下面是在ubuntu下手动安装jdk1.6的详细步骤:
+
SDIO0_CLK
  
第一步:在官网下载最新的jdk1.6的安装源文件<nowiki>jdk-6u27-linux-i586.bi</nowiki>n,下载地址为:
+
|
 +
GPIO或SDIO接口
  
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jdk-6u27-oth-JPR
+
|
  
第二步:将下载的文件复制到/usr/lib/jvm目录,执行如下命令安装:
 
  
<pre><nowiki>
+
|-
chmod +x <nowiki>jdk-6u27-linux-i586.bi</nowiki>n
+
|
 +
25
  
sudo .<nowiki>/jdk-6u27-linux-i586.bi</nowiki>n </nowiki></pre>
+
|
 +
GPIO2_C3/
  
第三步:修改环境变量:
+
UART0_RTS
  
<pre><nowiki>
+
|
sudo gedit /etc/profile</nowiki></pre>
+
GPIO或串口0
  
在最末尾加入如下语句:
+
|
  
<pre><nowiki>
 
<nowiki>#set java environment</nowiki>
 
  
JAVA_HOME=/usr/lib/jvm/jdk1.6.0_27
+
|-
 +
|
 +
26
  
export JRE_HOME=/usr/lib/jvm/jdk1.6.0_27/jre
+
|
 +
GPIO2_C1/
  
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
+
UART0_TXD
  
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH</nowiki></pre>
+
|
 +
GPIO或串口0
  
第四步:重启系统
+
|
  
第五步:查看当前java安装版本:
 
  
<pre><nowiki>
+
|-
root@lqm:/usr/lib/jvm# java -version
+
|
 +
27
  
java version "1.6.0_27"
+
|
 +
GPIO2_C2/
  
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
+
UART0_CTS
  
Java HotSpot(TM) Server VM (build 20.2-b06, mixed mode)
+
|
 +
GPIO或串口0
  
root@lqm:/usr/lib/jvm# </nowiki></pre>
+
|
  
到此,jdk1.6成功安装。
 
  
注意,如果安装了jdk1.5和1.6,很有可能查询版本时,仍然是1.5的,执行如下指令:
+
|-
 +
|
 +
28
  
<pre><nowiki>
+
|
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_27/bin/java 255
+
GPIO2_C0/
  
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_27/bin/javac 255 </nowiki></pre>
+
UART0_RXD
  
这两条指令用于创建符号链接。其中,/usr/bin/java 是不用改动的,为你的原有的jdk路径,/usr/lib/jvm/jdk1.6.0_27/bin/java这个是jdk1.6的java路径255是优先级。
+
|
 +
GPIO或串口0
  
再执行如下命令:
+
|
  
<pre><nowiki>
 
sudo update-alternatives --config java
 
  
sudo update-alternatives --config javac </nowiki></pre>
+
|-
 +
|
 +
29
  
弹出如下对话框:
+
|
 +
PMU_RESET
  
<pre><nowiki>
+
|
root@lqm:/usr/local# update-alternatives --config java
+
复位管脚
  
There are 2 choices for the alternative java (providing /usr/bin/java).
+
|
  
  选择       路径                                    优先级  状态
 
  
<nowiki>------------------------------------------------------------</nowiki>
+
|-
 +
|
 +
30
  
<nowiki>* 0            /usr/lib/jvm/jdk1.6.0_27/bin/java          255      </nowiki>自动模式
+
|
 +
GPIO4_D6
  
  1            /usr/lib/jvm/java-1.5.0-sun/jre/bin/java  53        手动模式
+
|
 +
GPIO
  
  2            /usr/lib/jvm/jdk1.6.0_27/bin/java          255       手动模式 </nowiki></pre>
+
|
  
要维持当前值<nowiki>[*]</nowiki>请按回车键,或者键入选择的编号。这里选择我们需要使用的jdk 版本,回车即可。
 
  
'''说明:jdk1.6也可以使用如下方法安装:'''
+
|-
 +
|
 +
31
  
手动修改下载源,指令如下:
+
|
<pre><nowiki>
+
GPIO4_D1
cd /etc/apt
 
  
cp <nowiki>sources.li</nowiki>st <nowiki>sources.list.ba</nowiki>k
+
|
 +
GPIO
  
vim <nowiki>sources.li</nowiki>st  </nowiki></pre>
+
|
  
在最末行添加如下语句:
 
  
<pre><nowiki> deb <nowiki>http://archive.canonical.com/ubuntu</nowiki> maverick partner </nowiki></pre>
+
|-
 +
|
 +
32
  
然后更新源:
+
|
 +
GPIO4_D3
  
<pre><nowiki> apt-get update </nowiki></pre>
+
|
 +
GPIO
  
再安装java6:
+
|
  
<pre><nowiki>apt-get install sun-java6-jdk </nowiki></pre>
 
  
=== 安装交叉编译工具链===
+
|-
 +
|
 +
33
  
我们已经将交叉编译工具链集成到源码包中,无需再手动安装。交叉编译工具链路径:
+
|
 +
GPIO4_C6/
  
<pre><nowiki>Sourcetree/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8 </nowiki></pre>
+
PWM1_d
  
===安装64位系统必要的一些补丁包===
+
|
 +
GPIO或PWM1
  
<pre><nowiki> apt-get  install  lsb-core  libc6-dev-i386  g++-multilib  lib32z1-dev  lib32ncurses5-dev </nowiki></pre>
+
|
  
=== 指定GCC交叉编译器'''===
 
  
在ubuntu系统上安装最新的GCC交叉编译器时,版本已经超过4.4了,使用如下指令可查询GCC的版本:
+
|-
 +
|
 +
34
  
<pre><nowiki>gcc –version </nowiki></pre>
+
|
 +
PMIC_EXT_EN
  
出现的界面如下:
+
|
 +
PMU使 管脚
  
<pre><nowiki>terry@ubuntu-server:~$ gcc --version 
+
|
  
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
 
  
Copyright © 2011 Free Software Foundation, Inc.
+
|-
 +
|
 +
35
  
terry@ubuntu-server:~$ </nowiki></pre>
+
|
 +
RTC_CLKO_WIFI
  
上面显示4.6.3版本,默认我们给 的包,在4.6.3上编译会提示一些错误,都是新的GCC引出的错误,网上都有解决办法,如果不想修改这些错误,可将GCC版本降至4.4即可。解决办法 :
+
|
 +
32768Hz时钟输
  
<pre><nowiki>sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib </nowiki></pre>
+
|
  
装完后,开始降级gcc ,这不会影响系统,仅仅是改个链接而已,不喜欢的话改回来即可。
 
  
<pre><nowiki>cd /usr/bin
+
|-
 +
|
 +
36
  
sudo mv gcc <nowiki>gcc.bk</nowiki>
+
|
 +
Camera_RST_L
  
sudo ln -s gcc-4.4 gcc
+
|
 +
GPIO2_D3
  
sudo mv g++ g++.bk
+
|
  
sudo ln -s g++-4.4 g++ </nowiki></pre>
 
  
=== 安装android源码包===
+
|-
 +
|
 +
37
  
从网盘中拷贝android源码包,放在自己的用户名目录,光盘中存放着android4.4的源码包,其名称为'''<nowiki>x3288_lollipop_v10.tar.bz</nowiki>2'''。注意最好不要放在文件系统的根目录,这样会出现管理权限问题。
+
|
 +
VCC_RTC
  
示例方法:在用户权限下执行如下命令:
+
|
 +
RTC电源输入
  
<pre><nowiki>cp yourcdromdir/source/ <nowiki>x3288_lollipop_v10.tar.bz</nowiki>2  ~/
+
|
 +
  电源输入2.5到3V
  
cd
+
|-
 +
|
 +
38
  
tar  xvf  <nowiki>x3288_lollipop_v10.tar.bz</nowiki>2 </nowiki></pre>
+
|
 +
GPIO4_C2/
  
这时,整个android文件系统全部都放在了当前解压的目录中。至此,android源码包安装完成。
+
PWM0
  
'''说明:源码包名称可能会因发布日期等有所不同,具体以网盘中实际名称为准。'''
+
|
 +
GPIO或PWM0
  
== android脚本分析配置==
+
|
=== 源码编译脚本分析===
 
  
'''说明:各种版本的源码编译脚本大同小异,原理完全相同,具体脚本以相关源码包中的为准,这里仅用来分析其实现机制。'''
 
  
编译脚本mk内容及注释如下:
+
|-
 +
|
 +
39
  
<pre><nowiki><nowiki>#!/bin/bash</nowiki>
+
|
 +
GPIO2_D4
  
<nowiki>#</nowiki>
+
|
 +
GPIO
  
<nowiki># Description</nowiki>    : Android Build Script.
+
|
  
<nowiki># Authors</nowiki>    : lqm <nowiki>www.9tripod.com</nowiki>
 
  
<nowiki># Version</nowiki>    : 1.0
+
|-
 +
|
 +
40
  
<nowiki># Notes</nowiki>        : None
+
|
 +
GPIO4_D2
  
<nowiki>#</nowiki>
+
|
 +
GPIO
  
 +
|
  
  
<nowiki>#</nowiki>
+
|-
 +
|
 +
41
  
<nowiki># JAVA PATH</nowiki>
+
|
 +
GPIO4_D5
  
<nowiki>#</nowiki>
+
|
 +
GPIO
  
export PATH=/usr/lib/jvm/jdk1.6.0_45/bin:$PATH
+
|
  
  
 +
|-
 +
|
 +
42
  
<nowiki>#</nowiki>
+
|
 +
VCC3V3_S5
  
<nowiki># Some Directories</nowiki>
+
|
 +
副3.3V电源输入
  
<nowiki>#</nowiki>
+
|
 +
3.3V输入,电流不小于300mA
  
BS_DIR_TOP=$(cd `dirname $0` ; pwd)
+
|-
 +
|
 +
43
  
BS_DIR_RELEASE=${BS_DIR_TOP}/out/release
+
|
 +
GPIO4_C5/
  
BS_DIR_UBOOT=${BS_DIR_TOP}/uboot
+
SPDIF_TX
  
BS_DIR_KERNEL=${BS_DIR_TOP}/kernel
+
|
 +
GPIO或光纤输出
  
 +
|
  
  
<nowiki>#</nowiki>
+
|-
 +
|
 +
44
  
<nowiki># Target Config</nowiki>
+
|
 +
GPIO4_C3/
  
<nowiki>#</nowiki>指定uboot,内核以及文件系统配置文件
+
UART2DBG_RX
  
BS_CONFIG_BOOTLOADER_UBOOT=x3288_config
+
|
 +
GPIO或UART2
  
BS_CONFIG_KERNEL=x3288_defconfig
+
|
  
BS_CONFIG_FILESYSTEM=PRODUCT-rk3288-eng
 
  
 +
|-
 +
|
 +
45
  
 +
|
 +
GPIO4_C4/
  
<nowiki># 在编译前,事先设置一些编译环境,保证准确可靠的编译</nowiki>
+
UART2DBG_TX
  
setup_environment()
+
|
 +
GPIO或UART2
  
{
+
|
  
    LANG=C
 
  
    cd ${BS_DIR_TOP};
+
|-
 +
|
 +
46
  
 +
|
 +
GPIO4_C0/
  
 +
I2C3_SDA/
  
    PATH=${BS_DIR_TOP}/out/host/linux-x86/bin:$PATH;
+
UART2_RX
  
 +
|
 +
GPIO或I2C3数据或串口2
  
 +
|
  
    mkdir -p ${BS_DIR_RELEASE} || return 1
 
  
}
+
|-
 +
|
 +
47
  
 +
|
 +
GPIO4_C1/
  
 +
I2C3_SCL/
  
<nowiki># 编译 uboot,编译完后,自动将 </nowiki>bootloader.bin 拷贝到 out/release 目录
+
UART2_TX
  
build_bootloader_uboot()
+
|
 +
GPIO或I2C3时钟或串口2
  
{
+
|
  
    # Compiler uboot
 
  
    cd ${BS_DIR_UBOOT} || return 1
+
|-
 +
|
 +
48
  
    make distclean || return 1
+
|
 +
GPIO4_C7/
  
    make ${BS_CONFIG_BOOTLOADER_UBOOT} || return 1
+
HDMI_CEC
  
    make -j${threads} || return 1
+
|
 +
GPIO或HDMI CEC功能
  
 +
|
  
  
    # Copy bootloader to release directory
+
|-
 +
|
 +
49
  
    cp -v ${BS_DIR_UBOOT}<nowiki>/RK3288UbootLoader_V2.19.09.bi</nowiki>n ${BS_DIR_RELEASE}
+
|
 +
HDMI_HPD
  
 +
|
 +
HDMI热插拨检测管脚
  
 +
|
  
    echo "^_^ uboot path: ${BS_DIR_RELEASE}<nowiki>/RK3288UbootLoader_V2.19.09.bi</nowiki>n"
 
  
    return 0
+
|-
 +
|
 +
50
  
}
+
|
 +
VCC_CHAREG_EN
  
 +
|
 +
PMIC使能
  
 +
|
  
<nowiki># 编译内核,编译完成后,会自动将内核映像 </nowiki><nowiki>kernel.im</nowiki>g & <nowiki>resource.im</nowiki>g拷贝到 out/release 目#录
 
  
build_kernel()
+
|}
 +
====核心板引脚定义2====
  
{
+
{| class="wikitable"
 +
|-
 +
| colspan="4" |
 +
<center>核心板引脚定义2</center>
  
    #export PATH=${BS_DIR_UBOOT}/tools:$PATH
+
|-
 +
|
 +
引脚编号
  
    # Compiler kernel
+
|
 +
信号
  
    cd ${BS_DIR_KERNEL} || return 1
+
|
 +
类型
  
    make ${BS_CONFIG_KERNEL} return 1
+
|
 +
描述
  
    make <nowiki>x3288.im</nowiki>g -j${threads} || return 1
+
|-
 +
|
 +
51
  
 +
|
 +
VCC3V3_SYS
  
 +
|
 +
主3.3V电源输入
  
    # Copy <nowiki>kernel.im</nowiki>g & <nowiki>resource.im</nowiki>g to release directory
+
|
 +
3.3V输入,电源不小于4.3A
  
    cp -v ${BS_DIR_KERNEL}<nowiki>/kernel.im</nowiki>g ${BS_DIR_RELEASE}
+
|-
 +
|
 +
52
  
    cp -v ${BS_DIR_KERNEL}<nowiki>/resource.im</nowiki>g ${BS_DIR_RELEASE}
+
|
 +
VCC3V3_SYS
  
 +
|
 +
主3.3V电源输入
  
 +
|
 +
3.3V输入,电源不小于4.3A
  
    return 0
+
|-
 +
|
 +
53
  
}
+
|
 +
GND
  
<nowiki># 编译 android 文件系统</nowiki>
+
|
 +
  参考地
  
build_system()
+
|
  
{
 
  
    cd ${BS_DIR_TOP} || return 1
+
|-
 +
|
 +
54
  
    source build<nowiki>/envsetup.sh</nowiki> || return 1
+
|
 +
MIPI_TX1/RX1_D0N
  
    make -j${threads} ${BS_CONFIG_FILESYSTEM} || return 1
+
|
 +
DSI/CSI接口
  
 +
|
  
  
    # create <nowiki>boot.im</nowiki>g
+
|-
 +
|
 +
55
  
    echo -n "create <nowiki>boot.im</nowiki>g without kernel... "
+
|
 +
MIPI_TX1/RX1_D0P
  
    <nowiki>[ -d $OUT/root ] && \</nowiki>
+
|
 +
DSI/CSI接口
  
    mkbootfs $OUT/root | minigzip &gt; $OUT<nowiki>/ramdisk.im</nowiki>g && \
+
|
  
        truncate -s "%4" $OUT<nowiki>/ramdisk.im</nowiki>g && \
 
  
    rkst/mkkrnlimg $OUT<nowiki>/ramdisk.im</nowiki>g $BS_DIR_RELEASE<nowiki>/boot.im</nowiki>g &gt;/dev/null
+
|-
 +
|
 +
56
  
    echo "done."
+
|
 +
MIPI_TX1/RX1_D1N
  
 +
|
 +
DSI/CSI接口
  
 +
|
  
    # create <nowiki>recovery.im</nowiki>g
 
  
    echo -n "create <nowiki>recovery.im</nowiki>g with kernel and with out resource... "
+
|-
 +
|
 +
57
  
    <nowiki>[ -d $OUT/recovery/root ] && \</nowiki>
+
|
 +
MIPI_TX1/RX1_D1P
  
    mkbootfs $OUT/recovery/root | minigzip &gt; $OUT<nowiki>/ramdisk-recovery.im</nowiki>g && \
+
|
 +
DSI/CSI接口
  
        truncate -s "%4" $OUT<nowiki>/ramdisk-recovery.im</nowiki>g && \
+
|
  
    mkbootimg --kernel $OUT/kernel --ramdisk $OUT<nowiki>/ramdisk-recovery.im</nowiki>g --output $OUT<nowiki>/recovery.im</nowiki>g && \
 
  
    cp -a $OUT<nowiki>/recovery.im</nowiki>g $BS_DIR_RELEASE/
+
|-
 +
|
 +
58
  
    echo "done."
+
|
 +
MIPI_TX1/RX1_CLKN
  
 +
|
 +
DSI/CSI接口
  
 +
|
  
    # create <nowiki>misc.im</nowiki>g
 
  
    echo -n "create <nowiki>misc.im</nowiki>g.... "
+
|-
 +
|
 +
59
  
    cp -a rkst/Image<nowiki>/misc.im</nowiki>g $BS_DIR_RELEASE<nowiki>/misc.im</nowiki>g
+
|
 +
MIPI_TX1/RX1_CLKP
  
    cp -a rkst/Image<nowiki>/pcba_small_misc.im</nowiki>g $BS_DIR_RELEASE<nowiki>/pcba_small_misc.im</nowiki>g
+
|
 +
DSI/CSI接口
  
    cp -a rkst/Image<nowiki>/pcba_whole_misc.im</nowiki>g $BS_DIR_RELEASE<nowiki>/pcba_whole_misc.im</nowiki>g
+
|
  
    echo "done."
 
  
 +
|-
 +
|
 +
60
  
 +
|
 +
MIPI_TX1/RX1_D2N
  
    # create <nowiki>system.im</nowiki>g
+
|
 +
DSI/CSI接口
  
    <nowiki>if [ -d $OUT/system ]</nowiki>
+
|
  
    then
 
  
        echo -n "create <nowiki>system.im</nowiki>g... "
+
|-
 +
|
 +
61
  
        system_size=`ls -l $OUT<nowiki>/system.im</nowiki>g | awk '{print $5;}'`
+
|
 +
MIPI_TX1/RX1_D2P
  
        <nowiki>[ $system_size -gt "0" ] || { echo "Please make first!!!" && exit 1; }</nowiki>
+
|
 +
DSI/CSI接口
  
        MAKE_EXT4FS_ARGS=" -L system -S $OUT/root/file_contexts -a system $BS_DIR_RELEASE<nowiki>/system.im</nowiki>g $OUT/system"
+
|
  
        ok=0
 
  
        <nowiki>while [ "$ok" = "0" ]; do</nowiki>
+
|-
 +
|
 +
62
  
            make_ext4fs -l $system_size $MAKE_EXT4FS_ARGS &gt;/dev/null 2&gt;&1 &&
+
|
 +
MIPI_TX1/RX1_D3N
  
            tune2fs -c -1 -i 0 $BS_DIR_RELEASE<nowiki>/system.im</nowiki>g &gt;/dev/null 2&gt;&1 &&
+
|
 +
DSI/CSI接口
  
            ok=1 || system_size=$(($system_size + 5242880))
+
|
  
        done
 
  
        e2fsck -fyD $BS_DIR_RELEASE<nowiki>/system.im</nowiki>g &gt;/dev/null 2&gt;&1 || true
+
|-
 +
|
 +
63
  
        echo "done."
+
|
 +
MIPI_TX1/RX1_D3P
  
    fi
+
|
 +
DSI/CSI接口
  
 +
|
  
  
    chmod a+r -R $BS_DIR_RELEASE/
+
|-
 +
|
 +
64
  
 +
|
 +
MIPI_RX0_D3N
  
 +
|
 +
CSI接口
  
    return 0
+
|
  
}
 
  
 +
|-
 +
|
 +
65
  
 +
|
 +
MIPI_RX0_D3P
  
threads=1
+
|
 +
CSI接口
  
uboot=no
+
|
  
kernel=no
 
  
system=no
+
|-
 +
|
 +
66
  
 +
|
 +
MIPI_RX0_D2N
  
 +
|
 +
CSI接口
  
<nowiki>if [ -z $1 ]; then</nowiki>
+
|
  
    uboot=yes
 
  
    kernel=yes
+
|-
 +
|
 +
67
  
    system=yes
+
|
 +
MIPI_RX0_D2P
  
fi
+
|
 +
CSI接口
  
 +
|
  
  
<nowiki>while [ "$1" ]; do</nowiki>
+
|-
 +
|
 +
68
  
    case "$1" in
+
|
 +
MIPI_RX0_CLKN
  
    -j=*)
+
|
 +
CSI接口
  
        x=$1
+
|
  
        threads=${x#-j=}
 
  
        ;;
+
|-
 +
|
 +
69
  
    -u|--uboot)
+
|
 +
MIPI_RX0_CLKP
  
        uboot=yes
+
|
 +
CSI接口
  
        ;;
+
|
  
    -k|--kernel)
 
  
            kernel=yes
+
|-
 +
|
 +
70
  
        ;;
+
|
 +
MIPI_RX0_D1N
  
    -s|--system)
+
|
 +
CSI接口
  
        system=yes
+
|
  
        ;;
 
  
    -a|--all)
+
|-
 +
|
 +
71
  
        uboot=yes
+
|
 +
MIPI_RX0_D1P
  
        kernel=yes
+
|
 +
CSI接口
  
        system=yes
+
|
  
        ;;
 
  
    -h|--help)
+
|-
 +
|
 +
72
  
        cat &gt;&2 &lt;&lt;EOF
+
|
 +
MIPI_RX0_D0N
  
<nowiki>Usage: build.sh [OPTION]</nowiki>
+
|
 +
CSI接口
  
Build script for compile the source of telechips project.
+
|
  
  
 +
|-
 +
|
 +
73
  
  -j=n                using n threads when building source project (example: -j=16)
+
|
 +
MIPI_RX0_D0P
  
  -u, --uboot          build bootloader uboot from source
+
|
 +
CSI接口
  
  -k, --kernel        build kernel from source
+
|
  
  -s, --system        build android file system from source
 
  
  -a, --all            build all, include anything
+
|-
 +
|
 +
74
  
  -h, --help          display this help and exit
+
|
 +
MIPI_TX0_D3N
  
EOF
+
|
 +
DSI接口
  
        exit 0
+
|
  
        ;;
 
  
    *)
+
|-
 +
|
 +
75
  
        echo "<nowiki>build.sh</nowiki>: Unrecognised option $1" &gt;&2
+
|
 +
MIPI_TX0_D3P
  
        exit 1
+
|
 +
DSI接口
  
        ;;
+
|
  
    esac
 
  
    shift
+
|-
 +
|
 +
76
  
done
+
|
 +
MIPI_TX0_D2N
  
 +
|
 +
DSI接口
  
 +
|
  
setup_environment || exit 1
 
  
 +
|-
 +
|
 +
77
  
 +
|
 +
MIPI_TX0_D2P
  
<nowiki>if [ "${uboot}" = yes ]; then</nowiki>
+
|
 +
DSI接口
  
    build_bootloader_uboot || exit 1
+
|
  
fi
 
  
 +
|-
 +
|
 +
78
  
 +
|
 +
MIPI_TX0_CLKN
  
<nowiki>if [ "${kernel}" = yes ]; then</nowiki>
+
|
 +
DSI接口
  
    build_kernel || exit 1
+
|
  
fi
 
  
 +
|-
 +
|
 +
79
  
 +
|
 +
MIPI_TX0_CLKP
  
<nowiki>if [ "${system}" = yes ]; then</nowiki>
+
|
 +
DSI接口
  
    build_system || exit 1
+
|
  
fi
 
  
 +
|-
 +
|
 +
80
  
 +
|
 +
MIPI_TX0_D1N
  
exit 0  </nowiki></pre>
+
|
 +
DSI接口
  
 +
|
  
  
=== '''配置使用MIPI屏'''===
+
|-
 +
|
 +
81
  
在kernel/arch/arm/boot/dts目录下存放了多个已经调试好的液晶屏的配置文件,7寸RGB屏的配置文件为
+
|
  <nowiki>x3288_lcd070hdr.dt</nowiki>si,
+
MIPI_TX0_D1P
7寸MIPI屏的配置文件为
 
  <nowiki>x3288_lcd070hdm.dt</nowiki>si。
 
 
  kernel/arch/arm/boot/dts<nowiki>/x3288.dt</nowiki>s
 
中选择配置使用的液晶模组即可,如需要使用7寸MIPI屏,示例代码如下:
 
<pre><nowiki>
 
//#include "<nowiki>x3288_lcd070hdr.dt</nowiki>si"
 
  
<nowiki>#include "x3288_lcd070hdm.dtsi"</nowiki> </nowiki></pre>
+
|
 +
DSI接口
  
== 编译android源码包 ==
+
|
  
说明:编译映像时一定要使用普通权限编译。编译完成后,生成的映像文件<nowiki>RK3288UbootLoader_V2.19.09.bi</nowiki>n,<nowiki>boot.im</nowiki>g, <nowiki>system.im</nowiki>g, <nowiki>kernel.im</nowiki>g, <nowiki>misc.im</nowiki>g, <nowiki>recovery.im</nowiki>g, <nowiki>resource.im</nowiki>g,<nowiki>update.im</nowiki>g。
 
  
=== 编译uboot===
+
|-
 +
|
 +
82
  
在android源码目录下执行如下命令编译uboot,编译完成后映像文件<nowiki>RK3288UbootLoader_V2.30.10.bi</nowiki>n(因版本不同,名称不一定相同)会释放到out/release目录。
+
|
<pre><nowiki>
+
MIPI_TX0_D0N
./mk    -u </nowiki></pre>
 
  
===编译android内核===
+
|
 +
DSI接口
  
在android源码目录下执行如下命令编译android内核,编译完成后映像文件<nowiki>kernel.im</nowiki>g、<nowiki>resource.im</nowiki>g会释放到out/release目录。
+
|
<pre><nowiki>
 
./mk    -k </nowiki></pre>
 
  
=== 编译android文件系统===
 
  
在android源码目录下执行如下命令编译android映像文件,编译完成后映像文件会释放到out/release目录。
+
|-
<pre><nowiki>
+
|
./mk    -s </nowiki></pre>
+
83
  
编译完文件系统,在out/release目录下会生成如下文件:
+
|
 +
MIPI_TX0_D0P
  
* <nowiki>RK3288UbootLoader_V2.19.09.bi</nowiki>n: uboot映像文件
+
|
* <nowiki>Kernel.im</nowiki>g:内核映像
+
DSI接口
* <nowiki>Resource.im</nowiki>g:资源映像,内含开机图片和内核的设备树信息。
 
* <nowiki>Boot.im</nowiki>g: Android的初始文件映像,负责初始化并加载system分区。
 
* <nowiki>System.im</nowiki>g:android的system分区映像,ext4文件格式系统。
 
* <nowiki>Recovery.im</nowiki>g:急救模式映像。
 
* <nowiki>Misc.im</nowiki>g:分区映像,负责启动模式切换和急救模式的参数传递。
 
* <nowiki>update.im</nowiki>g:整个升级文件的单一映像,包括了uboot,内核,文件系统等。
 
===查看编译帮助===
 
  
执行如下指令可查询mk脚本使用方法:
+
|
<pre><nowiki>
 
./mk  -h </nowiki></pre>
 
  
  
== 烧写android映像文件 ==
+
|-
=== Windows系统映像烧写 ===
+
|
==== RKTool驱动安装====
+
84
  
解压<nowiki>RKTools.ra</nowiki>r,工具路径:<pre><nowiki>SDK\RKTools\windows\Release_DriverAssitant</nowiki></pre>打开“<nowiki>DriverInstall.ex</nowiki>e”,点击“驱动安装”,提示安装驱动成功即可。
+
|
 +
GND
  
http://x.9tripod.com/wiki/zh/images/7/7a/Rktools-driver.png
+
|
 +
参考地
  
http://x.9tripod.com/wiki/zh/images/4/4d/Rktool-driver-ok.png
+
|
  
注意事项:
 
  
1.目前支持的操作系统包括:XP,Win7_32,Win7_64,Win8_32,Win8_64。
+
|-
 +
|
 +
85
  
2.XP系统在驱动安装完后,若还提示“发现新设备”, 安装驱动时选择“自动安装”。
+
|
 +
HDMI_TXCN
  
3.若之前已经安装过老版本驱动,请先点击“驱动卸载”后再进行“驱动安装”。
+
|
 +
HDMI输出接口
  
====烧录方法一:单个升级固件<nowiki>update.im</nowiki>g====
+
|
===== 生成统一固件<nowiki>update.im</nowiki>g =====
 
  
我们已经在mk脚本中集成了生成统一固件的方法,在编译android文件系统时(./mk -s),会自动生成<nowiki>update.im</nowiki>g,并释放到out/release目录。
 
  
===== 烧录固件<nowiki>update.im</nowiki>g =====
+
|-
 +
|
 +
86
  
打开
+
|
  RKTools\windows\AndroidTool_Release_v2.3\AndroidTool_Release_v2.3\AndroidTool.exe
+
HDMI_TXCP
选择“升级固件”选项卡,点击“固件”,在弹出窗口中选择已经生成的<nowiki>update.im</nowiki>g 文件,如下图所示。
 
  
http://x.9tripod.com/wiki/zh/images/1/16/Update-fireware.png
+
|
 +
HDMI输出接口
  
http://x.9tripod.com/wiki/zh/images/c/cd/Update-fireware1.png
+
|
  
工具配置好后,连接开发板(如下图):
 
  
按下RECOVERY键,然后插上microUSB线与5V DC电源线
+
|-
http://x.9tripod.com/wiki/zh/images/3/32/Update-fireware2.png
+
|
 +
87
  
烧录工具界面会提示发现一个LOADER设备,然后点击升级,即可开始升级过程(注:如果提示发现一个ADB设备,点击切换按钮切换成LOADER设备即可)。
+
|
 +
HDMI_TX0N
  
http://x.9tripod.com/wiki/zh/images/6/60/Update-fireware3.png
+
|
 +
HDMI输出接口
  
http://x.9tripod.com/wiki/zh/images/f/f1/Update-fireware4.png
+
|
  
上图为升级完成截图。
 
  
==== 烧录方法二:多设备升级固件<nowiki>update.im</nowiki>g ====
+
|-
 +
|
 +
88
  
该工具适合用户批量刷机,可以同时给多台开发板刷机。
+
|
 +
HDMI_TX0P
  
打开路径:
+
|
  SDK\RKTools\windows\FactoryTool_v1.33
+
HDMI输出接口
下的“<nowiki>FactoryTool.ex</nowiki>e”,点击“固件”选择<nowiki>update.im</nowiki>g,勾选“升级”,点击“启动”,如下图所示:
 
  
步骤1:点击固件,选择<nowiki>update.im</nowiki>g;
+
|
  
步骤2:点击启动(选择升级按钮);
 
  
步骤3:连接开发板USB、DC电源,按下recovery键,对应USB口发现设备,并实现自动升级;然后重复步骤3即可同时升级第二台、第三台设备,升级成功或者失败的设备会在两边的列表中列出,移除成功或者失败的设备后可以继续连接需要升级的设备。
+
|-
 +
|
 +
89
  
http://x.9tripod.com/wiki/zh/images/3/3a/Update-fireware-multi-device.png
+
|
 +
HDMI_TX1N
  
=== Linux系统烧写映像===
+
|
==== 生成固件<nowiki>update.im</nowiki>g====
+
HDMI输出接口
  
我们已经在mk脚本中集成了生成统一固件的方法,在编译android文件系统时(./mk -s),会自动生成<nowiki>update.im</nowiki>g,并释放到out/release目录。
+
|
  
==== 烧录固件<nowiki>update.im</nowiki>g====
 
  
工具路径:
+
|-
  RKTools\linux\Linux_Upgrade_Tool_v1.2
+
|
 +
90
  
在升级之前将<nowiki>update.im</nowiki>g拷贝到upgrade_tool相同目录下,运行upgrade_tool('''需要sudo''')
+
|
 +
HDMI_TX1P
  
<pre><nowiki>work@ubuntu:~/3288/Linux_Upgrade_Tool_v1.2/cp rockdev<nowiki>/update.im</nowiki>g .
+
|
 +
HDMI输出接口
  
work@ubuntu:~/3288/Linux_Upgrade_Tool_v1.2$ sudo ./upgrade_tool  </nowiki></pre>
+
|
  
执行结果如下图,发现设备列表,输入要升级的DevNo(设备号)选择设备
 
http://x.9tripod.com/wiki/zh/images/8/82/DevNo.png
 
  
选择设备后弹出工具使用菜单如下图,左侧是功能描述,右侧是命令语法,升级相关操作都在upgrade command列表下,忘记命令语法可以输入H进行查看,清屏输入CS,退出按Q。
+
|-
 +
|
 +
91
  
http://x.9tripod.com/wiki/zh/images/6/68/DevNo1.png
+
|
 +
HDMI_TX2N
  
* CD命令: 选择设备, 当执行的命令有包含设备重启操作时, 需重新选择设备,当改变操作设备时需重新选择
+
|
* SD命令:msc切换到rockusb升级模式。 当切换执行成功后, 需要重新选择设备
+
HDMI输出
* UF命令:升级完整<nowiki>update.im</nowiki>g固件,当执行成功后需要重新选择设备
 
* UL命令:升级loader功能,当执行成功后需要重新选择设备
 
* DI命令:下载单独image镜像到指定扇区,例如升级<nowiki>kernel.im</nowiki>g或者<nowiki>system.im</nowiki>g都可以直 使用此功能.例如下载<nowiki>kernel.im</nowiki>g: DI -k <nowiki>kernel.im</nowiki>g parameter //如果之前通过DI下载过parameter,则再下载<nowiki>kernel.im</nowiki>g时就可以不用指定最后的parameter参数
 
* DB命令:下载boot,在maskrom状态下,可以通过此功能, 让maskrom设备进行Rockusb协议通讯
 
* EF命令:擦除整个nandflash
 
* LF命令:低格保留块后面区域,只有在loader模式下使用
 
  
执行uf <nowiki>update.im</nowiki>g 开始更新固件,下图为更新完成截图。   
+
|
  
<pre><nowiki>Rockusb&gt;uf  <nowiki>update.im</nowiki>g </nowiki></pre>
 
  
http://x.9tripod.com/wiki/zh/images/0/03/DevNo2.png
+
|-
 +
|
 +
92
  
备注:也可通过配置<nowiki>config.in</nowiki>i文件配置升级映像文件,只需输入UF即可升级,请用户自行尝试。
+
|
 +
HDMI_TX2P
  
==== 使用upgrade_tool指令烧写映像 ====
+
|
 +
HDMI输出接口
  
上一节我们介绍了通过upgrade_tool烧写统一固件<nowiki>update.im</nowiki>g的方法,熟悉三星平台的开发者会发现,这种方法并不是很高效,真正操作起来,它远没有fastboot工具来的迅速。其实,upgrade_tool工具同样支持类似于fastboot的烧写方式。
+
|
  
为了烧写方便,在mk脚本中,默认在编译系统时,已经将烧写工具upgrade_tool拷贝到out/release目录了。
 
  
第一步:打开串口终端,并打开minicom,用于适时监控串口调试信息;
+
|-
 +
|
 +
93
  
第二步:按住RECOVERY键,连接USB OTG线和电源线,这时uboot打印信息将会提示已经进入USB下载模式。如果接通电源后没来得及按住RECOVERY键,在按住RECOVERY键的同时,再按下复位键即可。注意,使用
+
|
 +
TYPEC0_SBU1_DC
  
第二步:打开第二个串 终端,进入out/release目录;
+
|
 +
TYPEC接
  
第三步:在out/release目录下敲击如下指令,烧写相应的映像。
+
|
<pre><nowiki>
 
  
sudo upgrade_tool  di  –k  <nowiki>kernel.im</nowiki>g(烧写内核)
 
  
sudo upgrade_tool  di  –s  <nowiki>system.im</nowiki>g(烧写文件系统)
+
|-
 +
|
 +
94
  
sudo upgrade_tool  di  resource  <nowiki>resource.im</nowiki>g(烧写资源文件)
+
|
 +
TYPEC0_SBU2_DC
  
sudo upgrade_tool  di  –r <nowiki>recovery.im</nowiki>g(烧写急救文件)
+
|
 +
TYPEC接口
  
sudo upgrade_tool  ul  <nowiki>RK3288UbootLoader_V2.30.10.bi</nowiki>n(烧写bootloader)
+
|
  
sudo upgrade_tool  uf  <nowiki>update.im</nowiki>g(烧写统一固件) </nowiki></pre>
 
  
==== 使用Rkflashkit烧写映像 ====
+
|-
 +
|
 +
95
  
rkflashkit 有图形界面,后加了命令行支持,更是好用。
+
|
<pre><nowiki>
+
TYPEC0_SBU2
  
work@ubuntu:~/rktool$ sudo apt-get install build-essential fakeroot
+
|
 +
TYPEC接口
  
work@ubuntu:~/rktool$ git clone <nowiki>https://github.com/linuxerwang/rkflashkit</nowiki>
+
|
  
work@ubuntu:~/rktool$ cd rkflashkit
 
  
work@ubuntu:~/rktool$ ./waf debian
+
|-
 +
|
 +
96
  
work@ubuntu:~/rktool$ sudo apt-get install python-gtk2
+
|
 +
TYPEC0_SBU1
  
work@ubuntu:~/rktool$ sudo dpkg -i <nowiki>rkflashkit_0.1.4_all.de</nowiki>b  </nowiki></pre>
+
|
 +
TYPEC接口
  
注意:<nowiki>rkflashkit_0.1.4_all.de</nowiki>b会因版本更新,版本数字可能会有所变化,如果执行失败,执行ls命令查看下即可。
+
|
  
<pre><nowiki>work@ubuntu:~/rktool/$ sudo rkflashkit </nowiki></pre>
 
  
如下是图形界面,在Devices下选择设备,选择要烧写的分区和对应的映像文件,点击Flash image即可。
+
|-
 +
|
 +
97
  
http://x.9tripod.com/wiki/zh/images/0/08/Rkflashkit.png
+
|
 +
TYPEC0_RX1N
  
该工具也支持命令行,使用help命令查看使用方法
+
|
 +
TYPEC接口
  
<pre><nowiki>work@ubuntu:~/rktool/rkflashkit$ rkflashkit --help
+
|
  
<nowiki>Usage: &lt;cmd&gt; [args] [&lt;cmd&gt; [args]...]</nowiki>
 
  
 +
|-
 +
|
 +
98
  
 +
|
 +
TYPEC0_RX1P
  
part                              List partition
+
|
 +
TYPEC接口
  
flash @&lt;PARTITION&gt; &lt;IMAGE FILE&gt;  Flash partition with image file
+
|
  
cmp @&lt;PARTITION&gt; &lt;IMAGE FILE&gt;    Compare partition with image file
 
  
backup @&lt;PARTITION&gt; &lt;IMAGE FILE&gt;  Backup partition to image file
+
|-
 +
|
 +
99
  
erase  @&lt;PARTITION&gt;              Erase partition
+
|
 +
TYPEC0_TX1P
  
reboot                            Reboot device
+
|
 +
TYPEC接口
  
 +
|
  
  
For example, flash device with <nowiki>boot.im</nowiki>g and <nowiki>kernel.im</nowiki>g, then reboot:
+
|-
 +
|
 +
100
  
 +
|
 +
TYPEC0_TX1N
  
 +
|
 +
TYPEC接口
  
  sudo rkflashkit flash @boot <nowiki>boot.im</nowiki>g @<nowiki>kernel.im</nowiki>g <nowiki>kernel.im</nowiki>g reboot
+
|
  
work@ubuntu:~/rktool/rkflashkit$  </nowiki></pre>
 
  
=== 使用TF卡升级固件 ===
+
|}
==== 功能说明 ====
+
==== 核心板引脚定义3====
  
SD Card Boot功能是主控在上电时,优先从SD卡上查找启动代码,然后加载 导,从而实现特 功能。目前SD Card Boot已经实现两个功能:SD卡升级和SD卡运行。
+
{| class="wikitable"
 +
|-
 +
| colspan="4" |
 +
<center>核心板 义3</center>
  
SD卡升级功能,将SD卡启动代码写到SD卡的保留区,然后将固件拷贝到SD卡可见分区上,主控从SD卡启动时,SD卡启动代码和升级代码将固件升级到本地主存储中,并支持PCBA测试和Demo文件的拷贝。可以完全做到脱离PC机进行固件升级,提高生产效率。
+
|-
 +
|
 +
引脚编号
  
SD卡运行功能,将固件升级到SD卡保留区中,把SD卡当作主存储使用。主控从SD 卡启动时,固件已经存放在SD卡上,有没有本地主存储都可以正常工作。目前主要应用是板卡厂做PCBA测试,而不会破坏flash数据。
+
|
 +
  信号
  
==== 软件说明====
+
|
 +
  类型
  
  工具目录有如下文件:
+
|
 +
  描述
  
http://x.9tripod.com/wiki/zh/images/f/f3/SD_Fireware_Tool.png
+
|-
 +
|
 +
101
  
<nowiki>SD_Firmware_Tool.ex</nowiki>e:制卡工具
+
|
 +
TYPEC0_RX2N
  
<nowiki>Config.in</nowiki>i:配置文件
+
|
 +
TYPEC接口
  
<nowiki>SDBoot.bi</nowiki>n:SDRK2926、RK2928、RK3166和RK3188使用<nowiki>SDBoot.bi</nowiki>n支持SD卡升级和启动功能;RK3288使用<nowiki>RK3288Loader_uboot_V2.16.bi</nowiki>n及以后版本。
+
|
  
==== 制作前软件配置 ====
 
  
编辑<nowiki>config.in</nowiki>i配置文件以下项目设置为TRUE
+
|-
 +
|
 +
102
  
  * <nowiki>#</nowiki>当值为TRUE时,新卡格式适用3288项目
+
|
  * USE_FW_LOADER=TRUE
+
TYPEC0_RX2P
  
工具界面如下:
+
|
 +
TYPEC接口
  
http://x.9tripod.com/wiki/zh/images/4/4d/SD_Fireware_Tool-interface.png
+
|
  
==== 制作 ====
 
  
注意:制作启动卡会格式化SD卡,用户需要注意备份重要数据,防止误删。
+
|-
 +
|
 +
103
  
第一步,选择对应的可移动磁盘设备;
+
|
 +
TYPEC0_TX2P
  
第二步,选择功能模式:固件升级、PCBA测试、SD启动;
+
|
 +
TYPEC接口
  
  * 默认会勾选“固件升级”,即只升级固件。
+
|
  * 如果在升级固件前需要做 “PCBA 测试”,则同时勾选“固件升级”、“PCBA测试”。
 
  * 如果不升级固件,只需要测试PCBA,则单选“PCBA测试”,不选择“固件升级”。
 
  * “SD启动”会把固件烧写到SD中,所有分区都分配在SD卡上,运行时不会修改内部存储的数据(相当于SD卡做主存储设备)。
 
  
注意:SD卡运行模式,对kernel的编译有要求,需要把kernel的SD卡驱动配置去掉,不参与编译。
 
  
http://x.9tripod.com/wiki/zh/images/5/5b/SD-runMode.png
+
|-
 +
|
 +
104
  
修改为:
+
|
 +
TYPEC0_TX2N
  
http://x.9tripod.com/wiki/zh/images/c/c9/SD-runMode-change.png
+
|
 +
TYPEC接口
  
第三步,选择对应平台的<nowiki>update.im</nowiki>g固件;
+
|
  
第四步(可选),如果需要拷贝demo文件到用户盘根目录,点击选择Demo按钮,选择需要拷贝的文件目录。选择的目录下所有文件会拷贝到SD根目录下的Demo目录中,在SD引导固件升级后,Demo目录下的文件会拷贝到样机用户盘的根目录下。
 
  
第五步,点击开始创建即可。
+
|-
 +
|
 +
105
  
 +
|
 +
TYPEC0_DM
  
 +
|
 +
TYPEC接口
  
 +
|
  
  
 +
|-
 +
|
 +
106
  
 +
|
 +
TYPEC0_DP
  
 +
|
 +
TYPEC接口
  
 +
|
  
  
 +
|-
 +
|
 +
107
  
 +
|
 +
USB3_SSTXP
  
 +
|
 +
USB3.0接口
  
 +
|
 +
TYPEC、USB3.0复用脚
  
 +
|-
 +
|
 +
108
  
 +
|
 +
USB3_SSTXN
  
 +
|
 +
USB3.0接口
  
 +
|
 +
TYPEC、USB3.0复用脚
  
 +
|-
 +
|
 +
109
  
 +
|
 +
USB3_SSRXP
  
 +
|
 +
USB3.0接口
  
 +
|
 +
TYPEC、USB3.0复用脚
  
 +
|-
 +
|
 +
110
  
 +
|
 +
USB3_SSRXN
  
 +
|
 +
USB3.0接口
  
== android开发指南 ==
+
|
=== 命令终端 ===
+
TYPEC、USB3.0复用脚
  
将串口连接开发板上调试串口,进入android系统后,会自动进入android终端,如下图所示:
+
|-
 +
|
 +
111
  
http://x.9tripod.com/wiki/zh/images/9/94/Command.png
+
|
 +
TYPEC0_U2VBUSDET
  
=== 播放mp3 ===
+
|
==== android命令行播放mp3 ====
+
TYPEC接口
  
在android的在命令行下,可以使用强大的am指令做很多事情。在android终端输入am,正常情况下会有如下提示信息:
+
|
  
<pre><nowiki># am</nowiki>
 
  
<nowiki>usage: am [subcommand] [options]</nowiki>
+
|-
 +
|
 +
112
  
 +
|
 +
ADC_IN1
  
 +
|
 +
ADC1输入管脚
  
<nowiki>    start an Activity: am start [-D] [-W] &lt;INTENT&gt;</nowiki>
+
|
 +
参考电平为1.8V
  
        -D: enable debugging
+
|-
 +
|
 +
113
  
        -W: wait for launch to complete
+
|
 +
ADC_IN0
  
 +
|
 +
ADC0输入管脚
  
 +
|
 +
参考电平为1.8V
  
    start a Service: am startservice &lt;INTENT&gt;
+
|-
 +
|
 +
114
  
 +
|
 +
USB3_DM
  
 +
|
 +
USB3.0接口
  
    send a broadcast Intent: am broadcast &lt;INTENT&gt;
+
|
 +
TYPEC、USB3.0复用脚
  
 +
|-
 +
|
 +
115
  
 +
|
 +
USB3_DP
  
<nowiki>    start an Instrumentation: am instrument [flags] &lt;COMPONENT&gt;</nowiki>
+
|
 +
USB3.0接口
  
        -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
+
|
 +
TYPEC、USB3.0复用脚
  
        -e &lt;NAME&gt;&lt;VALUE&gt;: set argument &lt;NAME&gt; to &lt;VALUE&gt;
+
|-
 +
|
 +
116
  
        -p &lt;FILE&gt;: write profiling data to &lt;FILE&gt;
+
|
 +
HOST0_DM
  
        -w: wait for instrumentation to finish before returning
+
|
 +
USB2.0接口
  
 +
|
  
  
    start profiling: am profile &lt;PROCESS&gt; start &lt;FILE&gt;
+
|-
 +
|
 +
117
  
    stop profiling: am profile &lt;PROCESS&gt; stop
+
|
 +
HOST0_DP
  
 +
|
 +
USB2.0接口
  
 +
|
  
&lt;INTENT&gt; specifications include these flags:
 
  
<nowiki>        [-a &lt;ACTION&gt;] [-d &lt;DATA_URI&gt;] [-t &lt;MIME_TYPE&gt;]</nowiki>
+
|-
 +
|
 +
118
  
<nowiki>        [-c &lt;CATEGORY&gt; [-c &lt;CATEGORY&gt;] ...]</nowiki>
+
|
 +
HOST1_DM
  
<nowiki>        [-e|--es &lt;EXTRA_KEY&gt;&lt;EXTRA_STRING_VALUE&gt; ...]</nowiki>
+
|
 +
USB2.0接口
  
<nowiki>        [--esn &lt;EXTRA_KEY&gt; ...]</nowiki>
+
|
  
<nowiki>        [--ez &lt;EXTRA_KEY&gt;&lt;EXTRA_BOOLEAN_VALUE&gt; ...]</nowiki>
 
  
<nowiki>        [-e|--ei &lt;EXTRA_KEY&gt;&lt;EXTRA_INT_VALUE&gt; ...]</nowiki>
+
|-
 +
|
 +
119
  
<nowiki>        [-n &lt;COMPONENT&gt;] [-f &lt;FLAGS&gt;]</nowiki>
+
|
 +
HOST1_DP
  
<nowiki>        [--grant-read-uri-permission] [--grant-write-uri-permission]</nowiki>
+
|
 +
USB2.0接口
  
<nowiki>        [--debug-log-resolution]</nowiki>
+
|
  
<nowiki>        [--activity-brought-to-front] [--activity-clear-top]</nowiki>
 
  
<nowiki>        [--activity-clear-when-task-reset] [--activity-exclude-from-recents]</nowiki>
+
|-
 +
|
 +
120
  
<nowiki>        [--activity-launched-from-history] [--activity-multiple-task]</nowiki>
+
|
 +
VCC1V8_S3
  
<nowiki>        [--activity-no-animation] [--activity-no-history]</nowiki>
+
|
 +
1.8V电源输出
  
<nowiki>        [--activity-no-user-action] [--activity-previous-is-top]</nowiki>
+
|
 +
休眠时电压为0
  
<nowiki>        [--activity-reorder-to-front] [--activity-reset-task-if-needed]</nowiki>
+
|-
 +
|
 +
121
  
<nowiki>        [--activity-single-top]</nowiki>
+
|
 +
POWER_KEY
  
<nowiki>        [--receiver-registered-only] [--receiver-replace-pending]</nowiki>
+
|
 +
PMU使能管脚
  
<nowiki>        [&lt;URI&gt;]</nowiki> </nowiki></pre>
+
|
 +
低电平使能
  
启动的方法为:
+
|-
 +
|
 +
122
  
<pre><nowiki><nowiki># am start -n </nowiki>包(package)名/包名.活动(activity)名称 </nowiki></pre>
+
|
 +
GPIO2_D2
  
启动的方法可以从每个应用的<nowiki>AndroidManifest.xm</nowiki>l的文件中得到,以计算器(calculator)为例,
+
|
 +
GPIO
  
<pre><nowiki>&lt;?xml version="1.0" encoding=""?&gt;
+
|
  
  
 +
|-
 +
|
 +
123
  
&lt;manifestxmlns:android="<nowiki>http://schemas.android.com/apk/res/android</nowiki>"
+
|
 +
GPIO0_A4
  
 +
|
 +
GPIO
  
 +
|
  
package="<nowiki>com.android.ca</nowiki>lculator2"&gt;
 
  
 +
|-
 +
|
 +
124
  
 +
|
 +
GPIO0_B2
  
&lt;applicationandroid:label="@string/app_name"android:icon="@drawable/icon"&gt;
+
|
 +
GPIO
  
 +
|
  
  
&lt;activity android:name="Calculator"
+
|-
 +
|
 +
125
  
 +
|
 +
GPIO0_B1
  
 +
|
 +
GPIO
  
android:theme="@android:style/Theme.Black"&gt;
+
|
  
  
 +
|-
 +
|
 +
126
  
&lt;intent-filter&gt;
+
|
 +
GPIO0_A3
  
 +
|
 +
GPIO
  
 +
|
  
&lt;action android:name="<nowiki>android.intent.ac</nowiki>tion.MAIN" /&gt;
 
  
 +
|-
 +
|
 +
127
  
 +
|
 +
GPIO4_B4/
  
&lt;categoryandroid:name="<nowiki>android.intent.ca</nowiki>tegory.LAUNCHER"/&gt;
+
SDMMC0_CLK
  
 +
|
 +
GPIO或SDIO接口
  
 +
|
  
&lt;/intent-filter&gt;
 
  
 +
|-
 +
|
 +
128
  
 +
|
 +
GPIO4_B3/
  
&lt;/activity&gt;
+
SDMMC0_D3
  
 +
|
 +
GPIO或SDIO接口
  
 +
|
  
&lt;/application&gt;
 
  
 +
|-
 +
|
 +
129
  
 +
|
 +
GPIO4_B2/
  
&lt;/manifest&gt; </nowiki></pre>
+
SDMMC0_D2
  
由此计算器(calculator)的启动方法为:
+
|
 +
GPIO或SDIO接口
  
<pre><nowiki><nowiki># am start-ncom.android.calculator2/com.android.calculator2.Calculator</nowiki></nowiki></pre>
+
|
  
Music的启动方法为:
 
  
<pre><nowiki><nowiki># </nowiki>am <nowiki>start-ncom.android.mu</nowiki>sic<nowiki>/com.android.mu</nowiki>sic.MusicBrowserActivity</nowiki></pre>
+
|-
 +
|
 +
130
  
这时,屏幕上会有music的播放列表,但是并没有播放。如果需要播放,得执行下面的指令:
+
|
 +
GPIO4_B1/
  
<pre><nowiki>am start -n <nowiki>com.android.mu</nowiki>sic<nowiki>/com.android.mu</nowiki>sic.MediaPlaybackActivity -d /mnt/extsd<nowiki>/liangliangxianwang.mp</nowiki>3 </nowiki></pre>
+
SDMMC0_D1
  
==== 使用android默认音频播放器 ====
+
|
 +
GPIO或SDIO接口
  
确保外置的SD卡中存在mp3文件,点击音乐,播放器会自动识别音频文件,如下图:
+
|
  
http://x.9tripod.com/wiki/zh/images/9/9a/Mp3.png
 
  
点击相应的音频文件即可播放。播放时界面如下:
+
|-
 +
|
 +
131
  
http://x.9tripod.com/wiki/zh/images/3/33/Mp3-1.png
+
|
 +
GPIO4_B0/
  
=== 播放视频===
+
SDMMC0_D0
  
&nbsp;    android自带视频处理功能,在android应用界面显示为图库。点击图库按钮,会在外置SD卡中自动寻找能够识别的视频和图片文件,如下图:
+
|
 +
GPIO或SDIO接口
  
http://x.9tripod.com/wiki/zh/images/8/8f/Mp4.png
+
|
  
点击中间的按钮:
 
  
http://x.9tripod.com/wiki/zh/images/6/6b/Mp4-1.png
+
|-
 +
|
 +
132
  
上图中,带有播放符号的即为视频文件,不带的为图片文件。点击带播放符号的文件:
+
|
 +
GPIO4_B5/
  
http://x.9tripod.com/wiki/zh/images/7/76/Mp4-2.png
+
SDMMC0_CMD
  
再点击播放按钮:
+
|
 +
GPIO或SDIO接口
  
http://x.9tripod.com/wiki/zh/images/3/3d/Mp4-3.png
+
|
  
X3288 android5.1系统还带一款4k视频播放器,播放器会自动关联视频文件,点击需要播放的视频即可播放
 
  
http://x.9tripod.com/wiki/zh/images/4/46/Mp4-4.png
+
|-
 +
|
 +
133
  
 +
|
 +
GPIO0_A7/
  
 +
SDMMC0_DET
  
http://x.9tripod.com/wiki/zh/images/6/60/Mp4-5.png
+
|
 +
GPIO或SDIO接口
  
如果遇到图库无法支持的视频文件,可以采用第三方播放器如RockPlayer进行播放,如网络上最为流行的rmvb和rm文件。这时,机器俨然成为了一个具有支持rm/rmvb等格式视频的超强mp4了。如对屏幕尺寸有更高要求,可以使用VGA或HDMI方式,直接将视频文件显示到显示器或电视机上。
+
|
  
使用RockPlayer播放视频时,会弹出一个硬解和软解的对话框,如果属于3288硬解码的视频文件,选择硬解模式,否则选择软解模式。如播放rm/rmvb文件,选择软解模式才能播放,如下图所示:
 
  
http://x.9tripod.com/wiki/zh/images/f/ff/Mp4-6.png
+
|-
 +
|
 +
134
  
=== 图片浏览 ===
+
|
 +
GPIO0_A1
  
浏览图片时,同样使用上面的图库浏览。点击图库图标,点击要浏览的图片即可浏览。滑动可以浏览下一张图片,如下图所示:
+
|
 +
GPIO
  
http://x.9tripod.com/wiki/zh/images/c/ce/Image-view.png
+
|
  
=== 语言设置 ===
 
  
点击设置中的语言和输入法一栏,再点击选择语言,会弹出多种语言,选择需要的语言即可,如下图:
+
|-
 +
|
 +
135
  
http://x.9tripod.com/wiki/zh/images/3/39/Language.png
+
|
 +
EDP_TX3P
  
===使用WIFI上网 ===
+
|
 +
EDP接口
  
X3288开发板自带wifi/BT二合一模组,无需额外USBwifi即可无线上网。启动开发板,点击设置,在Wi-Fi一栏的方框中有个关闭按钮,将他拨到右边,即打开状态,如下图:
+
|
  
http://x.9tripod.com/wiki/zh/images/5/52/Wifi-default.png
 
  
再点击Wi-Fi一栏,进入wifi界面,找到属于自己的无线网络信号并点击,输入密码后,点击连接即可上网。
+
|-
 +
|
 +
136
  
http://x.9tripod.com/wiki/zh/images/3/3b/Wifi-default1.png
+
|
 +
EDP_TX3N
  
===使用蓝牙传输数据 ===
+
|
 +
EDP接口
  
x3288开发板支持AP6335芯片的WIFI/BT二合一模块。点击设置-&gt;蓝牙,将蓝牙开关打开,如下图所示:
+
|
  
http://x.9tripod.com/wiki/zh/images/5/5a/Blutooth.png
 
  
点击蓝牙,进入设置界面,找到一个支持蓝牙设备的安卓手机,并打开蓝牙,且可被发现。在x3288开发板的蓝牙设置界面的右上脚点击搜索设备,在可用设备一栏中将会显示出所有找到的蓝牙设备。找到需要匹配的蓝牙设备并点击,在开发板上弹出配对请求:
+
|-
 +
|
 +
137
  
http://x.9tripod.com/wiki/zh/images/5/5f/Blutooth1.png
+
|
 +
EDP_TX2P
  
点击配对,同时,在手机端也会弹出类似的画面,也点击配对即可。成功配对后的界面如下:
+
|
 +
EDP接口
  
http://x.9tripod.com/wiki/zh/images/9/95/Blutooth2.png
+
|
  
这时,配对的设备间就可以通过蓝牙共享文件了。点击开发板的图库,找到一张图片并选中:
 
http://x.9tripod.com/wiki/zh/images/d/d6/Blutooth3.png
 
  
点击右上脚的分享按钮,选择蓝牙,弹出如下界面:
+
|-
 +
|
 +
138
  
http://x.9tripod.com/wiki/zh/images/6/6f/Blutooth4.png
+
|
 +
EDP_TX2N
  
选择配对成功的蓝牙设备,这时在配对设备上将会弹出一个 收文件的对话框,点击接收即可。
+
|
 +
EDP
  
===使用蓝牙播放音乐 ===
+
|
  
x3288开发板可支持通过蓝牙连接蓝牙音箱,并播放音乐。准备一个蓝牙音箱,并切换到蓝牙模式,进入开发板的蓝牙界面并打开,点击右上脚的搜索设备,将会找到蓝牙音箱,下图中的GS805即是蓝牙音箱:
 
  
http://x.9tripod.com/wiki/zh/images/0/0d/Blutooth-mp3.png
+
|-
 +
|
 +
139
  
点击GS805,稍等几秒,将会配对成功,无需任何确认动作。这时,随意在开发板上播放音视频,音乐将会通过蓝牙音箱播放出来。
+
|
 +
EDP_TX1P
  
===使用USB鼠标键盘 ===
+
|
 +
EDP接口
  
启动开发板,将USB鼠标或者USB无线鼠标键盘接到USB HOST接口,即可使用鼠标键盘操作android界面了。
+
|
  
=== APK应用安装 ===
 
  
Android系统下有很多种APK的安装方法,这里介绍四种。
+
|-
 +
|
 +
140
  
==== 使用SD卡安装 ====
+
|
 +
EDP_TX1N
  
将拷贝有APK安装包的SD卡插到开发板,打开开发板的“文件管理”应用程序,界面如下:
+
|
 +
EDP接口
  
http://x.9tripod.com/wiki/zh/images/6/67/SD-APK.png
+
|
  
可以看到,安装包一栏找到了3个安装包。点击进去,会列出安装列表:
 
  
点击要安装的APK文件:
+
|-
 +
|
 +
141
  
http://x.9tripod.com/wiki/zh/images/2/2f/SD-APK1.png
+
|
 +
EDP_TX0P
  
依次点击下一步,直到安装完成即可。
+
|
 +
EDP接口
  
==== 使用ApkInstaller安装 ====
+
|
  
使用ApkInstaller安装APK,需要将开发板与PC机同步起来。
 
  
第一步:启动开发板,并进入android系统。
+
|-
 +
|
 +
142
  
第二步:将光盘中的<nowiki>ApkInstaller.ra</nowiki>r解压到PC机的任意目录,如D盘;
+
|
 +
EDP_TX0N
  
第三步:双击<nowiki>ApkInstaller.ex</nowiki>e应用程序,如下图所示:
+
|
 +
EDP接口
  
http://x.9tripod.com/wiki/zh/images/2/25/Apkinstaller.png
+
|
  
在解压目录下默认有一个名为<nowiki>mVideoPlayer.ap</nowiki>k的APK文件,安装软件已经将它列出来了。我们需要将安装的APK软件放在该目录。
 
  
第四步:点击安装-&gt;开始安装,或者点击快捷方式http://x.9tripod.com/wiki/zh/images/b/b0/Triangle-Shortcuts.png开始安装。安装完成后,界面上会有相应提示。
+
|-
 +
|
 +
143
  
'''说明:此方法适合批量安装APK文件。'''
+
|
 +
EDPAUXP
  
==== 使用adb工具安装 ====
+
|
 +
EDP接口
  
在上一章节,<nowiki>ApkInstaller.ra</nowiki>r的解压目录中已经存在有adb工具了,我们在命令行下进入该目录,执行如下指令安装APK:
+
|
  
<pre><nowiki>adb  install  *.apk </nowiki></pre>
 
  
正常安装的界面如下:
+
|-
 +
|
 +
144
  
http://x.9tripod.com/wiki/zh/images/5/5d/Adb-apk.png
+
|
 +
EDPAUXN
  
==== 在线安装 ====
+
|
 +
EDP接口
  
用户可以通过91助手,百度应用中心、360手机助手等第三方软件直接在线安装,这里就不详细说明了。
+
|
  
=== 屏幕抓图===
 
==== 使用eclipse抓图 ====
 
  
android有很多截图工具,但是很多都需要root权限,在平时做开发时,我们可以使用eclipse自带的插件进行截图,非常的方便。
+
|-
 +
|
 +
145
  
启动开发板,并进入android系统。使用USB延长线将x3288开发板与PC机连接,第一次连接时会提示需要安装软件,如下图:
+
|
 +
GPIO4_D0
  
http://x.9tripod.com/wiki/zh/images/7/7d/Android-driver1.png
+
|
 +
GPIO
  
选择否,点下一步:
+
|
  
http://x.9tripod.com/wiki/zh/images/e/e3/Android-driver2.png
 
  
选择自动安装软件,点下一步,直至安装完成。
+
|-
 +
|
 +
146
  
http://x.9tripod.com/wiki/zh/images/b/b5/Android-driver3.png
+
|
 +
GPIO0_B3
  
安装完成之后,打开eclipse软件,如果没有安装,需先安装该软件。然后点击Window-&gt;Show view-&gt;Devices,如下图:
+
|
 +
GPIO
  
http://x.9tripod.com/wiki/zh/images/9/9d/Eclipse-device.png
+
|
  
确保机器处于开机状态,这时Devices会找到机器的设备号,如下图:
 
  
http://x.9tripod.com/wiki/zh/images/0/06/Eclipse-device1.png
+
|-
 +
|
 +
147
  
点击上图右上脚的摄相头标志,就会弹出要保存的图像,点击save保存即可,如下图所示:
+
|
 +
GPIO0_B0
  
http://x.9tripod.com/wiki/zh/images/3/38/Camera-save.png
+
|
 +
GPIO
  
==== 使用360手机助手抓图 ====
+
|
  
在PC机上安装360手机助手手,启动开发板,通过USB延长线将开发板连接到PC机的USB口,打开360手机助手,360手机助手将会找到x3288开发板。如果找不到,将USB线拨掉重插,在开发板上会弹出一个授权界面,点击确认即可。正常连接后的360手机助手界面如下:
 
  
http://x.9tripod.com/wiki/zh/images/f/f0/360-screenshot.png
+
|-
 +
|
 +
148
  
点击左下脚的截屏按钮即可。
+
|
 +
GPIO1_A1
  
=== 挂载TF卡 ===
+
|
 +
GPIO
  
系统启动后,会自动挂载右侧卡槽中的TF卡到/mnt/external_sd/目录,如下图所示:
+
|
  
http://x.9tripod.com/wiki/zh/images/1/16/Mount-tf.png
 
  
 +
|-
 +
|
 +
149
  
 +
|
 +
GPIO1_A0
  
=== 挂载U盘===
+
|
 +
GPIO
  
启动开发板,并进入android系统。插入U盘后,系统会将U盘自动挂载到/mnt/usb_storage*(*表示0到4)目录。
+
|
  
=== 计算器 ===
 
  
点击android应用的计算器即可使用计算器功能,如下图所示:
+
|-
 +
|
 +
150
  
http://x.9tripod.com/wiki/zh/images/c/cc/Counter.png
+
|
 +
GPIO1_B4/
  
=== 输入法 ===
+
I2C4_SCL
  
推荐安装讯飞输入法,测试界面如下:
+
|
 +
GPIO或I2C接口
  
http://x.9tripod.com/wiki/zh/images/0/0b/Xunfei-input.png
+
|
  
=== 浏览器 ===
 
  
android默认自带一个浏览器,该浏览器功能已经非常完善了,如果用户仍然觉得不够要求,可以下载安装第三方浏览器,如UC浏览器等。
+
|}
 +
====核心板引脚定义4====
  
http://x.9tripod.com/wiki/zh/images/4/43/Brower.png
+
{| class="wikitable"
 +
|-
 +
| colspan="4" |
 +
<center>核心板引脚定义4</center>
  
=== 屏幕旋转 ===
+
|-
 +
|
 +
  引脚编号
  
  重力传感器已经集成到开发板上,将开发板移动到四周任一方向,界面会随之改变。当然并不是所有应用程序都会随之改变,有部分应用程序不支持屏幕旋转。旋转后示例图片如下:
+
|
 +
  信号
  
http://x.9tripod.com/wiki/zh/images/d/d8/Screen-rotation.png
+
|
 +
类型
  
http://x.9tripod.com/wiki/zh/images/1/17/Screen-rotation1.png
+
|
 +
描述
  
=== 时间设置 ===
+
|-
 +
|
 +
151
  
点击android应用中的设置,可以看到有日期和时间一栏,点击进去,选择相应的栏目设置即可。
+
|
 +
GPIO1_B3/
  
http://x.9tripod.com/wiki/zh/images/d/d2/Date-set.png
+
I2C4_SDA
  
===拍照摄相 ===
+
|
 +
GPIO或I2C接口
  
点击android应用中的相机,会进入图像预览模式。点击右下脚的拍照按钮即可拍照,如下图所示:
+
|
  
http://x.9tripod.com/wiki/zh/images/b/bb/Shot-picture.png
 
  
右下脚可以切换拍照和录像功能。
+
|-
 +
|
 +
152
  
=== 使用有线以太网上网===
+
|
 +
GPIO0_A2/
  
将可以正常上网的网线连接到开发板的网口座上,网口座的指示灯会正常闪烁,正常上网界面如下:
+
RK3399_26M_OUT
  
http://x.9tripod.com/wiki/zh/images/6/61/Wired-internet.png
+
|
 +
GPIO口或26M时钟输出管脚
  
=== 优酷 ===
+
|
  
将优酷的APK软件安装到开发板,连接网线就可以看视频了。
 
  
http://x.9tripod.com/wiki/zh/images/1/17/Youku.png
+
|-
 +
|
 +
153
  
=== 播放电视===
+
|
 +
GPIO0_B4
  
安装龙龙直播,泰捷视频等网络播放器,插上网线即可播放。
+
|
 +
GPIO
  
http://x.9tripod.com/wiki/zh/images/3/30/Live-tv.png
+
|
  
=== 使用遥控器操作开发板 ===
 
  
默认x3288开发板硬件支持红外遥控器,我们可以通过遥控器操作android界面,在泰捷视频等电视界面通过遥控器操作,开发板就完全变成了一个机顶盒。
+
|-
 +
|
 +
154
  
=== 1080P视频播放 ===
+
|
 +
GPIO0_B5
  
3288相对4412,支持更多种全高清视频的硬解码,可以流畅的播放这些格式的1080P视频文件。
+
|
 +
GPIO
  
通常情况下,使用RockPlayer或者自带的播放器都可播放。如果遇到自带播放器无法播放,可选择RockPlayer。播放界面如下:
+
|
  
http://x.9tripod.com/wiki/zh/images/a/a1/RockPlayer.png
 
  
===QQ ===
+
|-
 +
|
 +
155
  
使用91助手或从QQ官网下载针对android版本的QQ软件,安装到x3288开发板,即可使用QQ了。
+
|
 +
GPIO0_A6/
  
http://x.9tripod.com/wiki/zh/images/8/8c/Qq-login.png
+
PWM3A
  
http://x.9tripod.com/wiki/zh/images/3/37/Qq-login1.png
+
|
 +
GPIO或PWM接口
  
=== QQ斗地主 ===
+
|
 +
默认为红外接收口
  
用户可自己下载安装测试。
+
|-
 +
|
 +
156
  
=== 愤怒的小鸟 ===
+
|
 +
GPIO1_C7
  
用户可自己下载安装测试。
+
|
 +
GPIO
  
=== 赛车 ===
+
|
  
用户可自己下载安装测试。
 
  
=== VGA显示 ===
+
|-
 +
|
 +
157
  
注意,x3288开发板本身不带VGA电路,如需使用VGA,需另加VGA转接板。
+
|
 +
GPIO1_A4
  
=== HDMI显示===
+
|
 +
GPIO
  
HDMI显示支持直接将LCD上显示的视频还原到带有HDMI接口的电视机上,支持1080P高清视频,兼容720P,576P以及480P的视频。同时还将音频也一并传送到电视机上。
+
|
  
http://x.9tripod.com/wiki/zh/images/b/b4/HDMIshow.jpg
 
  
===开关机 ===
+
|-
 +
|
 +
158
  
x3288开发板使用了PMU进行电源管理。当外接上5V的电源适配器后,x3288开发板将会被自动点亮,进入系统后,长按开机键,会弹出一个选择对话框,点击关机按钮将会弹出确认关机的对话框,点击确认即可关机。
+
|
 +
GPIO1_A3
  
http://x.9tripod.com/wiki/zh/images/e/e1/ON-OFF.png
+
|
 +
GPIO
  
 +
|
  
  
=== 休眠唤醒 ===
+
|-
 +
|
 +
159
  
进入android文件系统后,轻按开关机键,屏幕将会熄灭,然后进入深度休眠状态。可以通过串口查看进入休眠的打印信息。再次轻按开关机键,开发板将会唤醒。
+
|
 +
GPIO1_B5
  
== Android测试程序 ==
+
|
 +
GPIO
  
我们在x4418,x6818开发板上开发了强大的安卓测试软件,基本上可以测试开发板的所有硬件功能,它在产品量产,程序开发上有很大的参考价值。在x3288开发平台上,我们将尽快提供。在APP界面点击安卓测试,即可进入测试界面,使用触摸屏左右滑动,或者用鼠标滑动可切换测试的硬件。
+
|
  
=== 液晶屏测试 ===
 
  
http://x.9tripod.com/wiki/zh/images/5/57/Lcd-test.png
+
|-
 +
|
 +
160
  
在液晶屏测试界面,点击中间的任意纯色位置,会有不同的颜色变化,我们可以观察LCD是否有丢色,坏点等。
+
|
 +
GPIO1_A2
  
=== 触摸屏测试 ===
+
|
 +
GPIO
  
http://x.9tripod.com/wiki/zh/images/e/e6/Touch-test.png
+
|
  
在触摸屏测试界面,点击开始测试,即可在屏幕上任意手写,在批量生产时,我们通常通过画对角线测试触摸电路是否正常。
 
  
=== 发光二极管测试 ===
+
|-
 +
|
 +
161
  
http://x.9tripod.com/wiki/zh/images/6/66/Led-test.png
+
|
 +
GPIO1_B0/
  
点击图片上任意的灯,为红色时,对应开发板上的LED灯亮,为灰色时,对应LED灯灭。
+
SPI1_TXD
  
===蜂鸣器测试 ===
+
|
 +
GPIO或SPI接口
  
http://x.9tripod.com/wiki/zh/images/2/2b/Beep-test.png
+
|
  
按住开始测试键,蜂鸣器会鸣叫,松开开始测试键,蜂鸣器停止鸣叫。
 
  
=== 背光测试 ===
+
|-
 +
|
 +
162
  
http://x.9tripod.com/wiki/zh/images/e/e5/Backlight-test.png
+
|
 +
GPIO1_B2/
  
划动中间的圆圈,背光亮度会随之发生变化。
+
SPI1_CSn0
  
=== 按键测试 ===
+
|
 +
GPIO或SPI接口
  
http://x.9tripod.com/wiki/zh/images/d/d0/Key-test.png
+
|
  
按下或抬起开发板上四个独立按键的任意一个,界面上将会提示对应的按键的按下和抬起动作。
 
  
=== 电池测试 ===
+
|-
 +
|
 +
163
  
http://x.9tripod.com/wiki/zh/images/2/29/Battery-test.png
+
|
 +
GPIO1_B1/
  
该界面反应了接在开发板上的电池电量信息。
+
SPI1_CLK
  
=== 数模转换测试 ===
+
|
 +
GPIO或SPI接口
  
http://x.9tripod.com/wiki/zh/images/e/e4/Adc-test.png
+
|
  
监测四路ADC的电压。我们可以通过调节开发板上的精密可调电位器,观察上面对应通道的电压是否变化。
 
  
=== 重力传感器测试 ===
+
|-
 +
|
 +
164
  
http://x.9tripod.com/wiki/zh/images/6/6f/Gsensor-test.png
+
|
 +
GPIO1_A7/
  
旋转开发板时,上面的X,Y,Z轴的值会随之发生变化。
+
SPI1_RXD
  
=== 音频测试 ===
+
|
 +
GPIO或SPI接口
  
http://x.9tripod.com/wiki/zh/images/c/cb/Audio-test.png
+
|
  
点击开始测试,会听到有清脆的声音出来。
 
  
=== 摄像头测试 ===
+
|-
 +
|
 +
165
  
http://x.9tripod.com/wiki/zh/images/d/dd/Camera-test.png
+
|
 +
GPIO1_C2/
  
装上摄相头,点击开始测试,会看到摄像头抓到的预览界面显示出来。
+
SPI3_CSn0
  
=== 无线网络测试 ===
+
|
 +
GPIO或SPI接口
  
http://x.9tripod.com/wiki/zh/images/5/54/Wireless-test.png
+
|
  
使用WIFI连上无线网络后,无线网络测试界面会搜索到附近的网络并列出来。
 
  
===  网络连接测试 ===
+
|-
 +
|
 +
166
  
http://x.9tripod.com/wiki/zh/images/5/54/Internet-test.png
+
|
 +
GPIO1_C4/
  
当有线或无线网络正常连接时,网络连接测试界面可以浏览网页。
+
I2C8_SDA
  
=== 串 测试 ===
+
|
 +
GPIO或I2C接
  
http://x.9tripod.com/wiki/zh/images/a/a9/TtyAMA-test.png
+
|
  
将需要测试的串口的TXD和RXD短路,再点击开始测试,界面上会提示对应串口会自发自收0123456789。如果不能自发自收,说明对应的串口硬件有问题。
 
  
=== 外部存储器测试 ===
+
|-
 +
|
 +
167
  
http://x.9tripod.com/wiki/zh/images/f/f3/Sdcard-test.png
+
|
 +
GPIO1_D0
  
将TF卡插到开发板上,点击开始测试,界面上会显示TF卡的相关信息。
+
|
 +
GPIO
  
===  优盘测试 ===
+
|
  
http://x.9tripod.com/wiki/zh/images/d/d0/Udisk-test.png
 
  
将U盘插到开发板上,点击开始测试,界面上会显示U盘的相关信息。
+
|-
 +
|
 +
168
  
 +
|
 +
GPIO1_C6
  
 +
|
 +
GPIO
  
== android内核驱动 ==
+
|
=== G-sensor驱动 ===
 
  
路径:<pre><nowiki>kernel/drivers/input/sensors/accel/mma8452.c
 
  
      hardware/rockchip/sensor/st
+
|-
 +
|
 +
169
  
文件:mma8452.c及st目录</nowiki></pre>
+
|
 +
GPIO2_B3/
  
=== 电容触摸屏驱动 ===
+
SPI2_CLK/
<pre><nowiki>
 
路径:kernel/drivers/input/touchscreen/
 
源码:gslX680.c
 
</nowiki></pre>
 
  
=== 液晶屏驱动 ===
+
CIF_CLKO
<pre><nowiki>
 
路径:kernel/drivers/video/rockchip/lcdc/
 
源码:rk3288_lcdc.c
 
</nowiki></pre>
 
=== 按键驱动 ===
 
<pre><nowiki>
 
路径:kernel/drivers/input/keyboard
 
源码:rk_keys.c
 
</nowiki></pre>
 
=== WIFI/BT模块驱动 ===
 
<pre><nowiki>
 
路径:kernel/drivers/net/wireless/rockchip_wlan
 
源码:该目录下所有源码文件
 
</nowiki></pre>
 
=== 摄像头驱动 ===
 
<pre><nowiki>
 
路径:hardware/rockchip/camera/SiliconImage/isi/drv
 
源码:该目录下
 
</nowiki></pre>
 
=== VGA驱动 ===
 
<pre><nowiki>
 
路径:kernel/drivers/video/rockchip
 
</nowiki></pre>
 
=== HDMI驱动===
 
<pre><nowiki>
 
路径:kernel/drivers/video/rockchip/hdmi
 
</nowiki></pre>
 
=== proc文件系统 ===
 
==== 启动环境变量查询 ====
 
  
使用如下指令查询启动环境变量配置:
+
|
 +
GPIO或SPI接口或并口摄像头接口
  
<pre><nowiki>cat  /proc/cmdline </nowiki></pre>
+
|
  
会有如下类似打印信息:
 
  
<pre><nowiki>vmalloc=496M console=ttyFIQ0 <nowiki>androidboot.se</nowiki>linux=permissive <nowiki>androidboot.ha</nowiki>rdware=rk30board <nowiki>androidboot.co</nowiki>nsole=ttyFIQ0 init=/init  mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(misc),0x00008000@0x00006000(resource),0x00008000@0x0000e000(kernel),0x00010000@0x00016000(boot),0x00010000@0x00026000(recovery),0x0001a000@0x00036000(backup),0x00040000@0x00050000(cache),0x00002000@0x00090000(kpanic),0x00300000@0x00092000(system),0x00008000@0x00392000(metadata),0x00200000@0x0039A000(userdata),0x00020000@0x0059A000(radical_update),-@0x005BA000(user) storagemedia=emmc uboot_logo=0x02000000@0x7dc00000:0x01000000 <nowiki>loader.ti</nowiki>mestamp=2016-02-19_17:53:13 <nowiki>androidboot.mo</nowiki>de=emmc
+
|-
</nowiki></pre>
+
|
==== CPU信息查询 ====
+
170
  
使用如下指令查询CPU信息:
+
|
 +
GPIO2_B0/
  
<pre><nowiki>cat  /proc/cpuinfo </nowiki></pre>
+
I2C7_SCL/
  
会有如下类似打印信息:
+
CIF_VSYNC
<pre><nowiki>
 
shell@rk3288:/ # cat /proc/cpuinfo
 
  
Processor      : ARMv7 Processor rev 1 (v7l)
+
|
 +
GPIO或I2C接口或并口摄像头接口
  
processor      : 0
+
|
  
model name      : ARMv7 Processor rev 1 (v7l)
 
  
BogoMIPS        : 48.00
+
|-
 +
|
 +
171
  
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm
+
|
 +
GPIO2_A7/
  
CPU implementer : 0x41
+
I2C7_SDA/
  
CPU architecture: 7
+
CIF_D7
  
CPU variant    : 0x0
+
|
 +
GPIO或I2C接口或并口摄像头接口
  
CPU part        : 0xc0d
+
|
  
CPU revision    : 1
 
  
 +
|-
 +
|
 +
172
  
 +
|
 +
GPIO2_A6/
  
processor      : 1
+
CIF_D6
  
model name      : ARMv7 Processor rev 1 (v7l)
+
|
 +
GPIO或并口摄像头接口
  
BogoMIPS        : 48.00
+
|
  
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm
 
  
CPU implementer : 0x41
+
|-
 +
|
 +
173
  
CPU architecture: 7
+
|
 +
GPIO2_A5/
  
CPU variant    : 0x0
+
CIF_D5
  
CPU part        : 0xc0d
+
|
 +
GPIO或并口摄像头接口
  
CPU revision    : 1
+
|
  
  
 +
|-
 +
|
 +
174
  
processor      : 2
+
|
 +
GPIO2_A4/
  
model name      : ARMv7 Processor rev 1 (v7l)
+
CIF_D4
  
BogoMIPS        : 48.00
+
|
 +
GPIO或并口摄像头接口
  
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm
+
|
  
CPU implementer : 0x41
 
  
CPU architecture: 7
+
|-
 +
|
 +
175
  
CPU variant    : 0x0
+
|
 +
GPIO2_A3/
  
CPU part        : 0xc0d
+
CIF_D3
  
CPU revision    : 1
+
|
 +
GPIO或并口摄像头接口
  
 +
|
  
  
processor      : 3
+
|-
 +
|
 +
176
  
model name      : ARMv7 Processor rev 1 (v7l)
+
|
 +
GPIO2_A2/
  
BogoMIPS        : 48.00
+
CIF_D2
  
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm
+
|
 +
GPIO或并口摄像头接口
  
CPU implementer : 0x41
+
|
  
CPU architecture: 7
 
  
CPU variant    : 0x0
+
|-
 +
|
 +
177
  
CPU part        : 0xc0d
+
|
 +
GPIO2_A1/
  
CPU revision    : 1
+
I2C2_SCL/
  
 +
CIF_D1
  
 +
|
 +
GPIO或I2C接口或并口摄像头接口
  
Hardware        : Rockchip RK3288 (Flattened Device Tree)
+
|
  
Revision        : 0000
 
  
Serial          : e3d650362e219fe2 </nowiki></pre>
+
|-
 +
|
 +
178
  
==== 内存信息查询 ====
+
|
 +
GPIO2_A0/
  
使用如下指令查询内存使用信息:
+
I2C2_SDA/
  cat  /proc/meminfo
 
  
会有如下类似打印信息:
+
CIF_D0
<pre><nowiki>
 
shell@rk3288:/ # cat  /proc/meminfo
 
  
MemTotal:        2062080 kB
+
|
 +
GPIO或I2C接口或并口摄像头接口
  
MemFree:        1573408 kB
+
|
  
Buffers:          11140 kB
 
  
Cached:          206416 kB
+
|-
 +
|
 +
179
  
SwapCached:            0 kB
+
|
 +
GPIO2_B4/
  
Active:          165880 kB
+
SPI2_CSn0
  
Inactive:        156828 kB
+
|
 +
GPIO或SPI接口
  
Active(anon):    105176 kB
+
|
  
Inactive(anon):      268 kB
 
  
Active(file):      60704 kB
+
|-
 +
|
 +
180
  
Inactive(file):  156560 kB
+
|
 +
GPIO2_B1/
  
Unevictable:          0 kB
+
I2C6_SDA/
  
Mlocked:              0 kB
+
CIF_HREF
  
HighTotal:      1540096 kB
+
|
 +
GPIO或I2C接口或并口摄像头接口
  
HighFree:        1141180 kB
+
|
  
LowTotal:        521984 kB
 
  
LowFree:          432228 kB
+
|-
 +
|
 +
181
  
SwapTotal:            0 kB
+
|
 +
GPIO2_B2/
  
SwapFree:              0 kB
+
I2C6_SCL/
  
Dirty:                0 kB
+
CIF_CLKI
  
Writeback:            0 kB
+
|
 +
GPIO或I2C接口或并口摄像头接口
  
AnonPages:        105152 kB
+
|
  
Mapped:            58948 kB
 
  
Shmem:              308 kB
+
|-
 +
|
 +
182
  
Slab:              24800 kB
+
|
 +
GND
  
SReclaimable:      12056 kB
+
|
 +
参考地
  
SUnreclaim:        12744 kB
+
|
  
KernelStack:        4160 kB
 
  
PageTables:        5844 kB
+
|-
 +
|
 +
183
  
NFS_Unstable:          0 kB
+
|
 +
GPIO3_B6/
  
Bounce:                0 kB
+
MAC_RXCLK/
  
WritebackTmp:          0 kB
+
UART3_RX
  
CommitLimit:    1031040 kB
+
|
 +
GPIO或千兆以太网接口或串口
  
Committed_AS:  19085052 kB
+
|
  
VmallocTotal:    499712 kB
 
  
VmallocUsed:      45004 kB
+
|-
 +
|
 +
184
  
VmallocChunk:    361448 kB </nowiki></pre>
+
|
 +
GPIO3_B3/
  
==== 磁盘分区信息查询 ====
+
MAC_MCLK/
  
使用如下命令查询磁盘分区信息:
+
I2C5_SCL
  
<pre><nowiki>
+
|
cat  /proc/partitions </nowiki></pre>
+
GPIO或千兆以太网接口或I2C接口
  
会有如下类似打印信息:
+
|
  
<pre><nowiki>
 
shell@rk3288:/ # cat  /proc/partitions
 
  
major minor  #blocks  name
+
|-
 +
|
 +
185
  
 +
|
 +
GPIO3_B0/
  
 +
MAC_MDC/
  
254        0    520912 zram0
+
SPI0_CSn1
  
179        0  15267840 mmcblk0
+
|
 +
GPIO或千兆以太网接口或SPI接口
  
179        1      4096 mmcblk0p1
+
|
  
179        2      4096 mmcblk0p2
 
  
179        3      16384 mmcblk0p3
+
|-
 +
|
 +
186
  
179        4      16384 mmcblk0p4
+
|
 +
GPIO3_A3/
  
179        5      32768 mmcblk0p5
+
MAC_RXD3/
  
179        6      32768 mmcblk0p6
+
SPI4_CSn0
  
179        7      53248 mmcblk0p7
+
|
 +
GPIO或千兆以太网接口或SPI接口
  
179        8    131072 mmcblk0p8
+
|
  
179        9      4096 mmcblk0p9
 
  
179      10    1572864 mmcblk0p10
+
|-
 +
|
 +
187
  
179      11      16384 mmcblk0p11
+
|
 +
GPIO3_A2/
  
179      12    1048576 mmcblk0p12
+
MAC_RXD2/
  
179      13      65536 mmcblk0p13
+
SPI4_CLK
  
179      14  12261376 mmcblk0p14          </nowiki></pre>         
+
|
 +
GPIO或千兆以太网接口或SPI接口
  
==== 内核版本查询 ====
+
|
  
使用如下命令查询内核版本:
 
<pre><nowiki>
 
cat  /proc/version </nowiki></pre>
 
  
会有如下类似打印信息:
+
|-
<pre><nowiki>
+
|
shell@rk3288:/ # cat  /proc/version
+
188
  
Linux version 3.10.0 (lqm@lqm) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #42 SMP PREEMPT Fri May 27 11:50:10 CST 2016 </nowiki></pre>
+
|
 +
GPIO3_A7/
  
==== 网络设备查询 ====
+
MAC_RXD1/
  
使用如下命令查询网络设备信息:
+
SPI0_CSn0
<pre><nowiki>
 
cat  /proc/net/dev </nowiki></pre>
 
  
会有如下类似打印信息:
+
|
<pre><nowiki>
+
GPIO或千兆以太网接口或SPI接口
shell@rk3288:/ #  cat /proc/net/dev
 
  
Inter-|   Receive                                                |  Transmit
+
|
  
face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
 
  
  sit0:      0      0    0    0    0    0          0        0        0      0    0    0    0    0      0          0
+
|-
 +
|
 +
189
  
    lo:      0      0    0    0    0    0          0        0        0      0    0    0    0    0      0          0
+
|
 +
GPIO3_A6/
  
  eth0:      0      0    0    0    0    0          0        0      992      6    0    0    0    0      0          0 </nowiki></pre>
+
MAC_RXD0/
  
==== 查看内核启动信息 ====
+
SPI0_CLK
  
使用如下命令查询内核启动信息:
+
|
<pre><nowiki>
+
GPIO或千兆以太网接口或SPI接口
cat  /proc/kmsg </nowiki></pre>
 
  
== android开发项目实战==
+
|
  
'''说明:以下为实际项目实例,用户可参考x210开发文档练习,后续我们会陆续发布。在进行下面的任一个实验之前,请确保前面的环境已经搭建完毕。'''
 
  
=== 实战1:创建hello x3288工程 ===
+
|-
 +
|
 +
190
  
参考《x4418 android平台用户手册》。
+
|
 +
GPIO3_C0/
  
=== 实战2:在x3288开发板上运行hello x3288测试程序 ===
+
MAC_COL/
  
参考《x4418 android平台用户手册》。
+
UART3_CTSn/
  
=== 实战3:从零开始编写LED测试程序 ===
+
SPDIF_TX
  
参考《x4418 android平台用户手册》。
+
|
 +
GPIO或千兆以太网接口或串口或光纤接口
  
=== 实战4:建立第一个APK应用程序,通过JNI+NDK调用底层驱动 ===
+
|
  
参考《x4418 android平台用户手册》。
 
  
=== 实战5:修改VGA分辨率 ===
+
|-
 +
|
 +
191
  
参考《x4418 android平台用户手册》。
+
|
 +
GPIO3_C1/
  
===实战6:如何修改<nowiki>init.rc</nowiki>文件 ===
+
MAC_TXCLK/
==== 永久修改 ====
 
  
+
UART3_RTSn
  system/core/rootdir
 
目录下找到<nowiki>init.rc</nowiki>文件,修改后执行
 
  ./mk –s,
 
将会生成新的<nowiki>system.im</nowiki>g文件,重新烧写<nowiki>system.im</nowiki>g即可更新<nowiki>init.rc</nowiki>。注意,在编译时,首先需要先将out目录下的
 
  <nowiki>init.rc</nowiki>
 
删除后再编译,否则可能不会生效。
 
  
==== 临时修改 ====
+
|
 +
GPIO或千兆以太网接口或串口
  
默认<nowiki>init.rc</nowiki>在<nowiki>ramdisk.im</nowiki>g中,<nowiki>ramdisk.im</nowiki>g又被打包到<nowiki>boot.im</nowiki>g中,因此,如果我们需要临时修改<nowiki>boot.im</nowiki>g,首先需要解压<nowiki>boot.im</nowiki>g,再手动修改我们需要修改的内容,再打包即可。为此,我们特别编写了解压和压缩的脚本文件。
+
|
  
在android根目录下,新建脚本文件<nowiki>ramdisk.sh</nowiki>,编辑内容如下:
 
<pre><nowiki>
 
<nowiki>#!/bin/bash</nowiki>
 
  
<nowiki># create: liuqiming</nowiki>
+
|-
 +
|
 +
192
  
<nowiki># date:  2016-11-22</nowiki>
+
|
 +
GPIO3_B2/
  
<nowiki># mail:  liuqiming@9tripod.com</nowiki>
+
MAC_RXER/
  
 +
I2C5_SDA
  
 +
|
 +
GPIO或千兆以太网接口或I2C接口
  
echo "Modify <nowiki>boot.im</nowiki>g"
+
|
  
echo "<nowiki>1.un</nowiki>zip <nowiki>boot.im</nowiki>g"
 
  
echo "2.Create <nowiki>boot.im</nowiki>g"
+
|-
 +
|
 +
193
  
echo "<nowiki>3.de</nowiki>lete cache files"
+
|
 +
GPIO3_B7/
  
echo "<nowiki>4.ex</nowiki>it"
+
MAC_CRS/
  
 +
UART3_TX
  
 +
|
 +
GPIO或千兆以太网接口或串口
  
<nowiki>#</nowiki>准备工作,环境变量的声明
+
|
  
SOURCE_DIR=$(cd `dirname $0` ; pwd)
 
  
TOOLS_DIR=${SOURCE_DIR}/tools
+
|-
 +
|
 +
194
  
TARGET_DIR=${SOURCE_DIR}/out/release
+
|
 +
GPIO3_A4/
  
OUT=${SOURCE_DIR}/out/target/product/rk3288
+
MAC_TXD0
  
 +
SPI0_TXD
  
 +
|
 +
GPIO或千兆以太网接口或SPI接口
  
PATH=${SOURCE_DIR}/out/host/linux-x86/bin:$PATH;
+
|
  
  
 +
|-
 +
|
 +
195
  
<nowiki>#</nowiki>读取要执行的操作索引
+
|
 +
GPIO3_A5/
  
read -p "Choose:" CHOOSE
+
MAC_TXD1/
  
 +
SPI0_TXD
  
 +
|
 +
GPIO或千兆以太网接口或SPI接口
  
<nowiki>#</nowiki>解压<nowiki>boot.im</nowiki>g
+
|
  
<nowiki>if [ "1" = ${CHOOSE} ];then</nowiki>
 
  
    echo "unzip <nowiki>boot.im</nowiki>g"
+
|-
 +
|
 +
196
  
    cd $TARGET_DIR
+
|
 +
GPIO3_A0/
  
<nowiki>#</nowiki>第一步:新建ramdisk目录
+
MAC_TXD2/
  
    <nowiki>[ -e "ramdisk" ] ||{ echo "mkdir ramdisk"; mkdir ramdisk;}</nowiki>
+
SPI4_RXD
  
<nowiki>#</nowiki>第二步:判断是否存在<nowiki>boot.im</nowiki>g文件
+
|
 +
GPIO或千兆以太网接口或SPI接口
  
    <nowiki>[ -f "$TARGET_DIR/boot.img" ] || { echo "error! can't find boot.img!"; rm -rf ramdisk;exit; }</nowiki>
+
|
  
    cd ramdisk
 
  
<nowiki>#</nowiki>第三步:拷贝<nowiki>boot.im</nowiki>g
+
|-
 +
|
 +
197
  
        cp ..<nowiki>/boot.im</nowiki>g .
+
|
 +
GPIO3_A1/
  
<nowiki>#</nowiki>第四步:解压<nowiki>boot.im</nowiki>g文件,得到<nowiki>boot.img-ramdisk.gz</nowiki>文件
+
MAC_TXD3/
  
    <nowiki>[ -f "/bin/split_bootimg.pl" ] || { cp $TOOLS_DIR/split_bootimg.pl /bin; }</nowiki>
+
SPI4_TXD
  
        <nowiki>split_bootimg.pl</nowiki> <nowiki>boot.im</nowiki>g
+
|
 +
GPIO或千兆以太网接口或SPI接口
  
    rm -f <nowiki>boot.im</nowiki>g
+
|
  
<nowiki>#</nowiki>第五步:解压<nowiki>boot.img-ramdisk.gz</nowiki>文件
 
  
    gzip -dc <nowiki>boot.img-ramdisk.gz</nowiki> | cpio -i
+
|-
 +
|
 +
198
  
    echo "^_^ unzip <nowiki>boot.im</nowiki>g finished!"
+
|
 +
GPIO3_B4/
  
    rm -f <nowiki>boot.img-ramdisk.gz</nowiki>
+
MAC_TXEN/
  
    rm -f <nowiki>boot.img-second.gz</nowiki>
+
UART1_RX
  
    rm -f <nowiki>boot.im</nowiki>g-kernel
+
|
 +
GPIO或千兆以太网接口或串口
  
    exit
+
|
  
  
 +
|-
 +
|
 +
199
  
<nowiki>#</nowiki>打包<nowiki>boot.im</nowiki>g
+
|
 +
GPIO3_B5/
  
<nowiki>elif [ "2" = ${CHOOSE} ];then</nowiki>
+
MAC_MDIO/
  
    echo "create <nowiki>boot.im</nowiki>g with kernel..."
+
UART1_TX
  
<nowiki>#</nowiki>第一步:判断是否存在ramdisk目录
+
|
 +
GPIO或千兆以太网接口或串口
  
    <nowiki>[ -e "$TARGET_DIR/ramdisk" ] || { echo "can't find [ramdisk],please unzip boot.img first!"; exit; }</nowiki>
+
|
  
<nowiki>#</nowiki>第二步:去除默认的<nowiki>root.im</nowiki>g文件
 
  
    rm -f $TARGET_DIR<nowiki>/boot.im</nowiki>g
+
|-
 +
|
 +
200
  
    cd $TARGET_DIR
+
|
 +
GPIO3_B1/
  
<nowiki>#</nowiki>第三步:将当前目录所有文件打包到<nowiki>boot.im</nowiki>g
+
MAC_RXDV
  
    <nowiki>[ -d $TARGET_DIR/ramdisk ] && \</nowiki>
+
|
 +
GPIO或千兆以太网接口
  
    mkbootfs $TARGET_DIR/ramdisk | minigzip &gt; $TARGET_DIR<nowiki>/ramdisk.im</nowiki>g && \
+
|
  
    truncate -s "%4" $OUT<nowiki>/ramdisk.im</nowiki>g && \
 
  
    mkbootimg --kernel ${OUT}/kernel --ramdisk ${OUT}<nowiki>/ramdisk.im</nowiki>g --second $TARGET_DIR<nowiki>/resource.im</nowiki>g --output $TARGET_DIR<nowiki>/boot.im</nowiki>g
+
|}
 +
===硬件接口===
 +
====电源开关和插座====
  
    rm -rf ramdisk
+
<center>[[image:3399on-off.png|171 × 133]]</center>
  
    exit
+
x3399采用5V直流电源供电,图中插座为5V直流电源输入插座,注意不要超过5.5V,虽然底板上的电源芯片NB680GD支持5到24V输入,但是底板上其他外设也是直接从这里取电,因此如果电压过大,会烧坏底板上一堆外设芯片。
  
 +
====调试串口====
  
 +
<center>[[image:3399uart.png|265 × 242px]]</center>
  
<nowiki>#</nowiki>清除残余文件
+
x3399预留一个RS232串口UART2用于调试,还有一个普通TTL的串口UART4如下:
  
<nowiki>elif [ "3" = ${CHOOSE} ];then</nowiki>
+
<center>[[image:3399uart2.png|239 × 124px]]</center>
  
    cd ${TARGET_DIR}
 
  
    rm -rf ramdisk
 
  
    echo "^_^ delete cache files ok!"
+
注意,默认使用UART2作为调试串口,用户可以通过修改程序调节调试串口。
  
 +
====HDMI接口====
  
 +
<center>[[image:3399hdmi.png|147 × 133px]]</center>
  
<nowiki>#</nowiki>退出脚本
+
x3399开发板采用miniHDMI接口,配合miniHDMI的延长线,可以将音视频信号完美的呈现在支持HDMI2.0协议的监控终端,如电视机,显示器等。
  
<nowiki>elif [ "4" = ${CHOOSE} ];then</nowiki>
+
====camera接口====
  
    exit
+
<center>[[image:3399camera-ov.png|204 × 84px]]</center>
  
fi
+
该接口为通用的24PIN摄相头接口,支持OV全系列摄相头,省去camera转接板。针对不同型号的摄相头,只需按照摄相头的规格,调整一下输出电压就行了。
  
    执行.<nowiki>/ramdisk.sh</nowiki>,输入1,回车,将会自动解压out/release目录下的<nowiki>boot.im</nowiki>g,并存放到out/release/ramdisk目录。
+
<center>[[image:3399camera-mipi.png|218 × 98px]]</center>
  
    执行.<nowiki>/ramdisk.sh</nowiki> 输入2 回车,将会自动将out/release/ramdisk目录下 文件打包成<nowiki>boot.im</nowiki>g
+
该接口为通用的30PIN MIPI摄相头接口 如果摄像头上接有闪光灯 可支持闪光灯 功能
</nowiki></pre>
 
=== 实战7:如何修改开机动画 ===
 
  
默认android启动时,会有android的英文字母不断高亮滚动显示,构成了一幅美丽的开机动画。其实这个开机动画是可 定制的,有兴趣的读者可以自行尝试。
+
==== 太网接口====
  
=== 实战8:如何修改uboot中的开机LOGO ===
+
<center>[[image:3399ethernet.png|230 × 245px]]</center>
  
瑞芯微官方提供的uboot会读取kernel根目录下的<nowiki>logo.bm</nowiki>p和<nowiki>logo_kernel.bm</nowiki>p两个文件 分别用于做uboot和内核的开机LOGO,uboot和内核的LOGO显示全部是由uboot完成的。其中<nowiki>logo.bm</nowiki>p用作uboot的开机LOGO <nowiki>logo_kernel.bm</nowiki>p 作内核的开机LOGO。值得注意的是,如果我们要将uboot和内核显示的LOGO设置得相同,并不能简单的复制,因为他们的图片格式是 区别的。<nowiki>logo.bm</nowiki>p支持8b的bmp格式图片,而<nowiki>logo_kernel.bm</nowiki>p只支持压缩后的8b的bmp格式图片,因此<nowiki>logo_kernel.bm</nowiki>p实际 要比<nowiki>logo.bm</nowiki>p的尺寸要小得多。而且在实际显示时,很明显的看到显示内核LOGO时 如果颜色比较丰富,就会失真。为了只显示一幅图片,我们直接将kernel目录下的<nowiki>logo_kernel.bm</nowiki>p删除即可
+
x3399支持千兆有线以太网接口 板载RTL8211E ,用 户可以通过 线以太网 体验极速网络
  
如果我们需要换uboot的开机LOGO,找一张分辨率不是太大的图片,转换成BMP格式,然后使用WINDOWS的图库编辑功能,转换成8b模式,保存并替换kernel目录下的<nowiki>logo.bm</nowiki>p即可。注意,如果LOGO的分辨率设置得过大,也可能导致无法显示。如果需要全屏开机LOGO,默认的uboot代码就不适用了,需要重新移植。
+
====耳机接口====
  
=== 实战9:如何修改内核中的LOGO ===
+
<center>[[image:3399earphone.png|117 × 216px]]</center>
  
  同上,找一张分辨率不是太大的图片,转换成BMP格式,在WINDOWS的图片编辑软件下转换成8b模式后,还需要借助于linux下强大的gimp工具, 图片压缩 内核LOGO才能显示 默认瑞芯微提供 这套方案 内核LOGO分辨率不够大,而且会明显失真,无法显示真彩图片,如果 开发的 工程师一定要显示完美的内核LOGO,建议使用linux下标准的开机LOGO方案
+
 将 耳机接入该接口 可以实现耳机输 出。 当然也可以直接通过该接口送到功放输入,如家庭影院 音频输入口 实现将 开发 音源信号通过家庭影院展现出来
  
=== 实战11:使用git管理源代码 ===
+
====喇叭接口====
  
  在我们最开始编码时,就应该养成使用git等工具管理源码的好习惯。这里简单介绍git的一些常用操作,具体更深入的学习,需要读者深入研究。
+
<center>[[image:3399speaker.png|201 × 84px]]</center>
  
====git指令 ====
+
开发板直接支持双声道2W扬声器输出,将喇叭接到上图接口,可实扬声器输出。
  
1).初始化仓库
+
====录音接口====
  
  git init
+
<center>[[image:3399recording.png|94 × 63px]]</center>
  
2).查看版本库 状态
+
开发板支持录音输入。耳麦已经直接载载到开发板上,无须通过外置 耳麦输入了。
  
  git status
+
====TF卡槽====
  
3). 查看版本库的状态
+
<center>[[image:3399tf.png|175 × 193px]]</center>
  
  git log
+
x3399引出一个外置TF卡,可以通过该通道进行TF卡升级,或是存放一些多媒体文件。
  
4).提交文件到仓库索引中
+
====独立按键====
  
  git add .                                 ---提交当前目录所有修改
+
<center>[[image:3399key.png|845 × 110px]]</center>
  
  git add hello.c example.c                ---提交两 文件到仓库索引
+
X3399共有六 按键,其中包括四个独立的按键,一个POWER键和一个复位键。独立按键通过ADC采样的方式获取键值。在原理图中,对应关系如下:
  
5).提交内容到仓库:
+
{| class="wikitable"
 +
|-
 +
|
 +
开关
  
  git commit -a -m "yx modify some files"
+
|
 +
功能
  
6).比较当前的工作目录和仓库数据库中的差异
+
|-
 +
|
 +
VOL+
  
  git diff                                  ---建议使用windows 客户端
+
|
   
+
  音量加键
7).恢复到某个版本
 
  
  git reset --hard 8f097e                  ---恢复到某个历史版本
+
|-
 +
|
 +
VOL-
  
8).打标签
+
|
 +
音量减键
  
  git tag V1.01 8f097e -m "20100101发布"    ---给某个版本打上标签
+
|-
 +
|
 +
ESC
  
  git tag -d V1.01                          ---删除标签
+
|
 +
返回键
  
9).clone仓库
+
|-
 +
|
 +
MENU
  
  git clone git@172.18.0.198:boot          ---clone仓库到当前目录
+
|
 +
菜单键
  
  git clone git@172.18.0.198:boot temp        ---clone仓库到temp目录
+
|-
 +
|
 +
POWER
  
10)服务器仓库同步到本地
+
|
 +
电源键
  
  git pull                                  ---将服务器最新内容同步到本地
+
|-
 +
|
 +
RESET
  
11).将本地仓库中的内容同步到服务器中
+
|
 +
复位键
  
  git push                                  ---提交当前目录修改记录到服务器(服务器已存在此目录)
+
|}
 +
====TYPEC接口====
  
  git push git@172.18.0.198:FCR/K660/app master  ---提交当前目录修改到服务器(服务器不存在此目录)
+
<center>[[image:3399typec.png|118 × 157px]]</center>
  
12).查看项目版本更 细节
+
TYPEC接口属于一种全 标准的接口,它具有传输速率快,输出电压大,双向插入,双向传输的功能。该接口不仅仅支持传统的USB OTG用于程序烧写,同步的功能,同时它还能驱动HDMI,EDP,MIPI屏,最大电压可以达到20V,实现快充的功能。可以预见,它将会是未来USB接口的主流。
  
  git show 18183e                            ---显示当前分支的最新版本的更新细节
+
====USB HOST接口====
  
==== '''初始化git仓库''' ====
+
<center>[[image:3399usb.png|284 × 317px]]</center>
  
次解压android源码后 进入android根目录 更新本地Git仓库:
+
RK3399自带有两路USB HOST2.0接口,两路TYPEC接口,其中一路TYPEC,在x3399上用作了USB3.0接口,上图最左侧接口对应USB3.0。USB3.0右侧的竖插USB座为RK3399自带的一路USB HOST2.0接口, 右边还有 个双层USB HOST接口 它是RK3399自带的另一路USB HOST2.0经过一个HUB芯片转换而来。如此丰富的HOST接口 相信已经满足了绝大多数应用场景。
  
  cd android_gingerbread    #进入工作目录
+
====开机按钮====
  
  git init-db        #初始化工作目录
+
<center>[[image:3399powerOn.png|97 × 131px]]</center>
  
  git add .        #将工作目录的所有文件添加 来以便跟踪管理
+
接上外部电源适配器后,长按POWER键开机。 入android系统后,轻触POWER键休眠,再次按POWER键实现唤醒。长按POWER键实现出现关机界面,按照屏幕提示关机。
  
  git commit -a        #将所监视的文件提交到仓库
+
====复位按钮====
  
  sudo apt-get install qgit
+
<center>[[image:3399reset.png|95 × 110px]]</center>
  
  第一次建立仓库后 给出第一次提交:
+
  在系统运行时 轻按RESET键开发板重启,实现硬复位的功能。
  
  git commit -m "初始化工程"
+
====Recovery按钮====
  
  否则,输入git log时,会提示如下错误:
+
<center>[[image:3399recovery.png|98 × 126px]]</center>
  
  fatal: bad default revision 'HEAD'
+
音量加按键在烧录时被用作Recovery键,刷机时需要按下该键进入recovery模式。
  
==== 恢复到上一版本 ====
+
====LCD接口====
  
  首先,使用git log命令查询修改记录:
+
<center>[[image:3399rgb.png|213 × 104px]]</center>
  
<pre><nowiki>lqm@lqm:~/android_gingerbread$ git log
+
x3399开发板默认留有一个30PIN的DSI接口,通过软排线将MIPI相关信号连接到LCD控制板上,进而控制LCD。同时,这个30PIN接口的第12管脚为PWM脚,用于控制LCD的背光,通过PWM实现多级背光亮度调节。同时,它上面还引出了用于电容触摸的I2C以及中断,唤醒信号。
  
commit d5fd5223fd354c0a9c63057a7b8fe9a6870bdd7e
+
默认RK3399支持双MIPI LCD控制输出功能,它能驱动2K甚至4K屏。在x3399上,同样预留了一个双屏MIPI接口如下:
  
Author: lqm &lt;lqm@lqm.(none)&gt;
+
<center>[[image:3399mipi.png|342 × 84px]]</center>
  
Date:  Wed Dec 14 10:34:34 2011 +0800 </nowiki></pre>
+
当需要驱动双MIPI接口的屏时,接该接口即可。另外,x3399开发板上还预留了一路EDP接口,通过它同样可以驱动高分辨率的屏。
  
  删除不必要的处理器文件
+
<center>[[image:3399edp.png|118 × 224px]]</center>
  
<pre><nowiki>commit 1af4b99d582bf33cc2f37a0529554426b30a168d
+
====后备电池====
  
Author: lqm &lt;lqm@lqm.(none)&gt;
+
<center>[[image:3399battery.png|186 × 225px]]</center>
  
Date:  Wed Dec 14 10:14:39 2011 +0800 </nowiki></pre>
+
后备电池用于保证断电后RTC仍然能够工作,确保系统时间不丢失。
  
初始化工程
+
====蜂鸣器====
  lqm@lqm:~/android_gingerbread$
 
  
  再使用git reset指令恢复到某个提交状态:
+
<center>[[image:3399beep.png|141 × 160px]]</center>
  
  lqm@lqm:~/android_gingerbread$ git reset --hard 1af4b
+
该蜂鸣器为有源蜂鸣器,有直流电时会鸣叫,通过三极管控制电源的导通与截止。硬件电路通过一路PWM控制三极管,即可以用于PWM测试,也可以用于适当场合的声音提示。
  
Checking out files: 100% (12517/12517), done.
+
====红外一体化接收头====
  
  HEAD is now at 1af4b99 初始化工程
+
<center>[[image:3399infrared.png|130 × 90px]]</center>
  
  lqm@lqm:~/android_gingerbread$
+
  这里采用HS0038B一体化接收头,它具有灵敏度高,使用方便等优点。利用它我们可以实现无线遥控,将x3399开发板作为一个高性能的四核机顶盒。
  
==== 修改源码后,提交修改记录 ====
+
==== 光纤接口====
  
  修改了某些文件,需要提交到服务器,具体操作如下:
+
<center>[[image:3399fibre-optical.png|180 × 129px]]</center>
  
第一步:使用git pull 服务器仓库提交 本地
+
X3399开发板上的声音不仅能通过喇叭、耳机、HDMI输出,还能通过光纤输出, 最真实的声音还原出来。通过光纤连接线连接 带有光纤输入接口的高保真音箱,即可聆听最真实的声音。
  
http://x.9tripod.com/wiki/zh/images/c/c6/Git-pull.png
+
====SIM卡接口====
  
提示出错,有两种解决办法,第一种,先将drivers/mtd/nand/nand_base.c备份,比如:mv drivers/mtd/nand/nand_base.c drivers/mtd/nand<nowiki>/nand_base.c.ba</nowiki>k
+
<center>[[image:3399sim.png|274 × 190px]]</center>
  
后再执行git pull。第二种 执行git checkout –f,然后再执行git pull
+
X3399开发板的背面有一个PCIE座,它用于接PCIE接口的3G、4G通讯模块。当 在使用3G和4G时 需要在这个SIM卡槽内插入对应的手机卡
  
正常的操作如下:
+
====WIFI蓝牙模块====
http://x.9tripod.com/wiki/zh/images/9/9f/Git-pull-ok.png
 
  
  上面的提示文件为服务器上已经更新的文件,执行git pull后,已经同步到本地了。
+
<center>[[image:3399wifi-bluetooth.jpg|245 × 254px]]</center>
  
第二步:使用git status,查看修改的文件:
+
X3399 开发板标 配具有2.4G和5G双频WIFI的SDIO 口WIFI/BT模块 ,上 图左侧和上侧 模块对应的PCB天线
 
 
http://x.9tripod.com/wiki/zh/images/f/ff/Git-status.png
 
 
 
上图表示本地修改了build/mk和common/env_common.c两个文件。
 
 
 
第三步:使用git add指令将指定的文件提交到仓库索引
 
 
 
  git  add  .  #将当前目录所有修改的文件提交到仓库索引
 
 
 
或者使用下面的指令:
 
 
 
  git  add  build/mk  #将指定的文件提交到仓库索引,env_common.c并未提交。
 
 
 
第四步:使用
 
  git commit #命令注释修改的内容到仓库
 
http://x.9tripod.com/wiki/zh/images/2/29/Git-commit.png
 
 
 
第五步:使用
 
  git push  #指令将修改的文件提交到服务器
 
 
 
http://x.9tripod.com/wiki/zh/images/f/fd/Git-push.png
 
 
 
'''        '''说明:如果源码保存在本机上,不用操作第一步和第五步。'''
 
 
 
===实战13:如何打包整个android bsp包 ===
 
 
 
这里推荐两种常用的打包方法。
 
 
 
==== 使用tar指令 ====
 
 
 
通常在编译完android源码包后,在android源码目录中会生成各种释放文件,它统统被汇集到源码根目录的out目录,打包时我们需要将它排除在外。另外,使用git管理工具管理源码时,在android源码根目录会生成.git目录,随着修改次数的增加,该目录内容会越来越多,打包时也需要将它排除在外。
 
 
 
由于在整个android源码中,存在其他的out目录,为了在使用tar指令打包时,防止将这些目录也排除在外,因此我们可以首先将源码根目录的out目录重命名,如out_x3288,再执行打包指令。打包完成后,再将out_x3288还原成out即可。
 
 
 
另外,如果编译了uboot,内核等,在源码包中会存在很多*.o,*.cmd的临时文件,这些也是我们所不需要的,在打包时也一并排除在外。
 
 
 
在android源码总目录的同级目录下执行如下指令完成打包:
 
 
 
  mv    x3288_kitkat\out    x3288_kitkat\out_x3288
 
 
 
  tar  jcvf  <nowiki>x3288_kitkat.tar.bz</nowiki>2  x3288_kitkat  –exclude=”.git” –exclude=”out_x3288” –exclude=”*.o” –exclude=”*.cmd”
 
 
 
  mv x3288_kitkat \out_x3288  x3288_kitkat\out
 
 
 
==== 使用git指令 ====
 
 
 
使用git指令打包源码的前提是整个android源码包已经由git管理起来。在android源码包的根目录下(包含有uboot,kernel等目录的同一级目录)使用如下指令打包整个源码包:
 
 
 
  git  archive  --format=tar  HEAD  &gt;  x3288<nowiki>_kitkat.ta</nowiki>r
 
 
 
  bzip2  x3288<nowiki>_kitkat.ta</nowiki>r
 
 
 
=== 实战15:android调试技巧之mm指令 ===
 
 
 
在Android SDK源码工程下,如果编译整个工程可能需要两三个小时,即使二次编译也要二十多分钟。如果只想单独编译某个APK应用,那么可以这样做:
 
 
 
1)在build目录下执行
 
 
 
    . <nowiki>envsetup.sh</nowiki>  (注意,命令前面有一个点,然后接一个“空格”键)
 
 
 
执行完后,就会多出以下几个命令:
 
<pre><nowiki>
 
- croot:  Changes directory to the top of the tree.
 
 
 
- m:      Makes from the top of the tree.
 
 
 
- mm:      Builds all of the modules in the current directory.
 
 
 
- mmm:    Builds all of the modules in the supplied directories.
 
 
 
- cgrep:  Greps on all local C/C++ files.
 
 
 
- jgrep:  Greps on all local Java files.
 
 
 
- resgrep: Greps on all local res/*.xml files.    /*???*/
 
 
 
- godir:  Go to the directory containing a file.
 
 
 
- printconfig: 当前build的配置情况
 
</nowiki></pre>
 
 
 
2)mm命令
 
 
 
用于当前目录下的工程
 
 
 
3)mmm命令
 
 
 
用于编译指定目录,如:mmm Settings  表示编译Settings这个目录,之后会生成新的apk
 
 
 
 
 
=== 实战16:ubuntu下minicom的设置 ===
 
 
 
在做项目 开发 时,串口调试已经成为我们开发的必备工具。但是现在很多主 ,或是笔记本上都已经省掉了串口,这对我们开发人员来说,无疑会带来些不必要的麻烦。为此,我们可能会通过PCI转串口,USB转串口等来开发。值得庆幸的是,在windows下使用的人多,我们很容易就能够安装PCI转串口驱动或是USB转串口驱动。如果我们使用纯的linux系统开发,安装驱动可能就没这么简单了。因此,这里分享一些我们实际开发中总结的一些经验,避免新人多走弯路。
 
 
 
====通用串口的minicom设置方法 ====
 
 
 
通常情况下,PC机上自带的串口,在windows和ubuntu下都自带驱动了,这时安装就比较简单了。
 
 
 
第一步:安装minicom
 
 
 
  sudo apt-get install minicom
 
 
 
第二步:设置minicom的端口
 
 
 
  sudo minicom -s
 
 
 
界面如下:
 
<pre><nowiki>
 
<nowiki> +-----[configuration]------+</nowiki>
 
 
 
            | Filenames and paths      |
 
 
 
            | File transfer protocols  |
 
 
 
            | Serial port setup        |
 
 
 
            | Modem and dialing        |
 
 
 
            | Screen and keyboard      |
 
 
 
            | Save setup as dfl        |
 
 
 
            | Save setup as..          |
 
 
 
            | Exit                    |
 
 
 
            | Exit from Minicom        |
 
 
 
            +--------------------------+ </nowiki></pre>
 
 
 
通过键盘的上下键盘选择到Serial port setup,回车
 
 
 
  <pre><nowiki>+-----------------------------------------------------------------------+
 
 
 
    | A -    Serial Device      : /dev/ttyWCH1                              |
 
 
 
    | B - Lockfile Location    : /var/lock                                |
 
 
 
    | C -  Callin Program      :                                          |
 
 
 
    | D -  Callout Program      :                                          |
 
 
 
    | E -    Bps/Par/Bits      : 115200 8N1                                |
 
 
 
    | F - Hardware Flow Control : No                                        |
 
 
 
    | G - Software Flow Control : No                                        |
 
 
 
    |                                                                      |
 
 
 
    |    Change which setting?                                              |
 
 
 
    +-----------------------------------------------------------------------+ </nowiki></pre>
 
 
 
输入A,光 会停留到Serial Device的界面,将设备节点设置为/dev/ttyS0;输入F,关闭硬流控;再回车,退出当前设置,回到上一界面,选择Save setup as dfl,再选择Exit退出设置。到此,minicom安装完成。
 
 
 
==== USB转串口安装方法 ====
 
 
 
这里以PL2303的驱动IC为例。默认ubuntu10.10系统已经自带有PL2303的驱动了。因此,这个安装比较简单。
 
 
 
第一步:将USB转串口延长线连 到PC机的USB口,启动ubuntu系统;
 
 
 
第二步:执行如下指令检查是否有USB转串口的设备节点:
 
 
 
  lqm@lqm:~$ ls /dev/ttyU*
 
 
 
  /dev/ttyUSB0
 
 
 
第三步:重新设置minicom的设备节点 方法同
 
 
 
第四步:打开minicom,测试USB转串口是否能正常使用。
 
 
 
====PCI转串口安装方法 ====
 
 
 
PCI转串口的芯片比较多,这里以CH35X 例,讲述在ubuntu下的安装方法。
 
 
 
第一步:下载最新的安装包CH35XDRV.ZIP,或者从光盘里面获得;
 
 
 
第二步:将CH35XDRV.ZIP拷贝到ubuntu的任意目录并解压,得到CH35XDRV目录,使用命令终端进入该目录,示例如下:
 
<pre><nowiki>
 
lqm@lqm:~/下载/CH35XDRV/CH35XDRV$ pwd
 
 
 
/home/lqm/下载/CH35XDRV/CH35XDRV
 
 
 
lqm@lqm:~/下载/CH35XDRV/CH35XDRV$ ls
 
 
 
CH35X??-???+?-??+-?+?.chm  DRV_16S  DRV_1P  DRV_1S  DRV_1S1P  DRV_2S  DRV_2S1P  DRV_2S1P_RA  DRV_4S  DRV_4S1P  DRV_6S  DRV_8S  <nowiki>PCISETUP.ex</nowiki>e  README.TXT  SETUPX64  TOOLS
 
 
 
lqm@lqm:~/下载/CH35XDRV/CH35XDRV$ cd DRV_2S
 
 
 
lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S$ ls
 
 
 
DOS  LINUX  WINDOWS
 
 
 
lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S$ cd LINUX/
 
 
 
lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$ ls
 
 
 
driver  Makefile  README  wchdump  wchmknod  wchterm
 
 
 
lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$ </nowiki></pre>
 
 
 
第三步:在LINUX目录下执行如下命令安装:
 
 
 
  sudo make clean
 
 
 
  sudo make install
 
 
 
实际操作时发现有如下错误提示:
 
 
 
<pre><nowiki>cd wchmknod;\
 
 
 
    ./wchmknod
 
 
 
/bin/sh: line 1: ./wchmknod: 权限不够
 
 
 
<nowiki>make: *** [wchmknod_install] </nowiki>错误 126
 
 
 
root@lqm:/home/lqm/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX#
 
 
 
进入./wchmknod目录,更改wchmknod文件权限,再编译即可:
 
 
 
root@lqm:/home/lqm/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX# cd wchmknod/
 
 
 
root@lqm:/home/lqm/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX/wchmknod# ls
 
 
 
wchmknod
 
 
 
root@lqm:/home/lqm/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX/wchmknod# ls -la
 
 
 
总计 12
 
 
 
drwxrwxrwx 2 lqm lqm 4096 2011-04-29 16:55 .
 
 
 
drwxrwxrwx 6 lqm lqm 4096 2011-04-29 16:55 ..
 
 
 
-r--r--r-- 1 lqm lqm  936 2010-09-20 04:48 wchmknod
 
 
 
root@lqm:/home/lqm/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX/wchmknod# chmod 777 wchmknod </nowiki></pre>
 
 
 
 
  make install
 
即可安装成功。
 
 
 
第四步:执行如下指令加载驱动
 
 
 
  modprobe wch
 
 
 
或者
 
 
 
  insmod driver<nowiki>/wch.ko</nowiki>
 
 
 
第五步:使用如下指令查询驱动是否正常加载:
 
 
 
  lsmod | grep wch
 
 
 
示例如下:
 
 
 
  lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$ lsmod |grep wch
 
 
 
  wch                    58933  1
 
 
 
  lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$
 
 
 
这里查找到了已经加载的驱动,表明驱动加载成功。
 
 
 
第六步:查看/dev下生成的相关节点:
 
 
 
  lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$ ls /dev/ttyWCH*
 
 
 
  /dev/ttyWCH0  /dev/ttyWCH11  /dev/ttyWCH14  /dev/ttyWCH17  /dev/ttyWCH2  /dev/ttyWCH22  /dev/ttyWCH25  /dev/ttyWCH28  /dev/ttyWCH30  /dev/ttyWCH4  /dev/ttyWCH7
 
 
 
  /dev/ttyWCH1  /dev/ttyWCH12  /dev/ttyWCH15  /dev/ttyWCH18  /dev/ttyWCH20  /dev/ttyWCH23  /dev/ttyWCH26  /dev/ttyWCH29  /dev/ttyWCH31  /dev/ttyWCH5  /dev/ttyWCH8
 
 
 
  /dev/ttyWCH10  /dev/ttyWCH13  /dev/ttyWCH16  /dev/ttyWCH19  /dev/ttyWCH21  /dev/ttyWCH24  /dev/ttyWCH27  /dev/ttyWCH3  /dev/ttyWCH32  /dev/ttyWCH6  /dev/ttyWCH9
 
 
 
  lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$
 
 
 
表明节点已经成功生成。
 
 
 
第七步:使用minicom设置节点
 
 
 
  sudo minicom -s
 
 
 
选择Serial port setup,回车,再选择A,将设备节点设置为/dev/ttyWCH0或/dev/ttyWCH1
 
 
 
保存退出,再开启minicom:
 
 
 
<pre><nowiki>Welcome to minicom 2.4
 
 
 
 
 
 
 
OPTIONS: I18n                                                               
 
 
 
Compiled on Jun  3 2010, 13:46:31.                                         
 
 
 
Port /dev/ttyWCH1                                                           
 
 
 
 
 
 
 
Press CTRL-A Z for help on special keys                                                             
 
 
 
 
 
 
 
OK                                                                                                 
 
 
 
 
 
 
 
U-Boot 1.3.4-dirty (Apr 20 2012 - 09:02:38) for SMDKV210                                           
 
 
 
 
 
 
 
 
 
 
 
CPU:  S5PV210@1000MHz(OK)             
 
 
 
        APLL = 1000MHz, HclkMsys = 200MHz, PclkMsys = 100MHz
 
 
 
        MPLL = 667MHz, EPLL = 96MHz   
 
 
 
                      HclkDsys = 166MHz, PclkDsys = 83MHz
 
 
 
                      HclkPsys = 133MHz, PclkPsys = 66MHz
 
 
 
                      SCLKA2M  = 200MHz </nowiki></pre>
 
 
 
可见,PCI转串口驱动已经能够正常使用了。
 
 
 
第八步:以上步骤,仅仅是临时加载了驱动,ubuntu系统重启后,<nowiki>wch.ko</nowiki>文件并没有自动加载。因此,需要在ubuntu的启动脚本里面添加自动加载的命令。
 
 
 
编辑/etc/rc.d<nowiki>/rc.lo</nowiki>cal文件,在最末尾添加如下语句:
 
 
 
  modprobe wch
 
 
 
第九步:重启ubuntu系统,再次尝试串口是否能正常使用
 

2017年3月2日 (四) 12:34的版本

x3399开发板简介

非常感谢您选择九鼎创展x3399开发平台,本文档讲述x3399开发平台的硬件资源,电路原理以及支持的接口等。

X3399开发板是基于瑞芯微RK3399的一款高端开发板,它由深圳市九鼎创展科技有限公司自主研发,生产并销售。它是市面上首款基于A53四核,以及A72双核共六核的64位超高性能基于行业控制领域的开发板,主频高达2GHz。

RK3399在CPU与GPU方面均堪称怪兽级。双Cortex-A72大核+四Cortex-A53小核结构的CPU,对整数、浮点、内存等作了大幅优化,在整体性能、功耗及核心面积三个方面都具革命性提升。GPU采用四核ARM新一代高端图像处理器Mali-T860,集成更多带宽压缩技术:如智能迭加、ASTC、本地像素存储等,还支持更多的图形和计算接口,总体性能比上一代提升45%。

尽管这些能力均被同类解决芯片方案标榜为“顶级”能力,但对RK3399来讲,这并不是重点。极具看点的是,Type-C接口、内置PCI-e接口、双摄像头支持手势识别三大特性,这对游戏盒子产品的体验将是颠覆性的,还有支持LPDDR4内存等诸多新特性,均领先于目前主流产品。

得益于高配置和整体性能的提升,以及全面型布局,使得RK3399天生就是一位多面能手。除了平板电脑、VR、TV-BOX、笔记本之外,RK3399的应用还涵盖了工业及消费领域各类终端,包括智能家电、广告机/一体机、金融POS机、车载控制终端、瘦客户机、VOIP视频会议、安防/监控/警务及IoT物联网等领域。

Android6.0.1系统

x3399开发板支持android6.0.1操作系统,采用linux4.4内核。

已测试完成模块:

  • emmc驱动
  • WY070ML 7寸MIPI屏(1024x600)
  • LP079QXL-SP0V
  • 五点触摸电容屏(思立微GSL1680)
  • SD卡
  • 按键
  • ADC
  • 蜂鸣器
  • 休眠唤醒
  • 三路USB HOST2.0
  • 一路USB HOST3.0
  • 一路TYPEC接口
  • 音频解码(ALC5651)
  • 3G、4G模块(PCIE接口移远UC20、EC20以及各种3G dongle)
  • 录音
  • 喇叭
  • 光纤音频输出
  • 马达
  • 四路自定义LED接口
  • AP6354 WIFI/BT二合一模块
  • G-sensor(LSM330TR)
  • 陀螺仪(AK8963N)
  • 光感传感器(CM32181)
  • MIPI CSI摄相头(OV5645和OV13850)
  • 串口
  • HDMI
  • 千兆以太网RTL8211E
  • USB鼠标键盘
  • HS0038B红外一体化接收头

产品简介

x3399开发板由邮票孔核心板,底板和液晶板三大块组成,核心板采用10层板工艺设计,确保稳定可靠,可以批量用于平板电脑,车机,学习机,POS机,游戏机,行业监控等多种领域。底板留有丰富的外设,几乎可以演示3399芯片的全部功能,板载千兆以太网接口、板载CSI接口、DSI接口、HDMI接口、EDP接口、TYPEC接口、USB3.0接口、USB2.0接口、板载音频光纤接口、板载红外一体化接收头,支持红外遥控功能;板载双CSI 接口,可支持同时外接两路MIPI摄像头并同时显示。同时硬件电路保持九鼎开发板的一惯风格,支持软件开关机,休眠唤醒等。液晶板默认采用7寸MIPI液晶屏,同时可选配7.9寸2K液晶屏,支持MIPI或EDP接口液晶屏,支持背光亮度无级调节。

x3399开发板上x3399核心板适用于VR、工控,电力,通讯,医疗,媒体,安防,车载,金融,消费电子,手持设备,游戏机,显示控制,教学仪器等多种领域。可广泛用于POS,游戏机,教学实验平台,多媒体终端,PDA,点菜机,广告机等领域。

产品功能特性

  • 内核:ARM Cortex-A53四核 + Cortex-A72双核;
  • 主频:1.4GHz*4 + 2G*2;
  • 内存:2GB LPDDR3;
  • Flash:支持4GB/8GB/16GB/32GB/64GB emmc可选,标配16GB emmc;
  • 三路USB HOST2.0接口;
  • 一路USB HOST3.0接口;
  • 一路TYPEC接口(兼容OTG功能);
  • 1路RS232接口,1路TTL串口;
  • 1路TF卡接口;
  • 复位按钮;
  • 4路独立按键;
  • 软件开关机按钮;
  • 双声道外置扬声器;
  • MIC输入;
  • 耳机输出接口;
  • 音频光纤输出接口;
  • 支持背光无级调节;
  • 支持HDMI接口;
  • 支持5点电容触摸;
  • 板载AP6354 WIFI/BT;
  • 支持G-sensor;
  • 支持光敏传感器(默认空焊);
  • 支持陀螺仪(默认空焊);
  • 支持MPEG-1, MPEG-2, MPEG-4,H.263, H.264, H.265, VC-1, VP9, VP8, MVC视频解码;
  • 支持H.264, MVC 和VP8视频编码;
  • 支持2D,3D高性能图形加速;
  • 支持RTC时钟实时保存;
  • 支持千兆有线以太网RTL8211E;
  • 支持BT656/BT601/MIPI摄相头接口;
  • 支持GPS接口;
  • 支持GPRS接口;
  • 支持外置USB 3G模块及PCIE接口模块;
  • 支持USB鼠标,键盘;
  • 支持红外一体化接收头;
==硬件资源==

硬件接口描述

1,267 × 738px

硬件接口介绍
标号
名称
说明
【1】

CPU

RK3399,A53,4*1.5GHz+A72,2*2GHz

【2】

DDR

K4E8E304EE-EGCF,LPDDR3,2GBytes

【3】

eMMC

KLMAG2GEND,16GB(4G,8G可选)

【4】

RTC

RTC电池座,CR1202

【5】

UART

UART4,TTL电平接口

【6】

BEEP

蜂鸣器

【7】

UART2

串口2,默认调试串口,RS232电平

【8】

SPDIF

光纤输出接口

【9】

DC座

5V DC电源输入

【10】

POWER

电源按键

【11】

独立按键

音量加,在升级时用作Recovery键

【12】

独立按键

音量减

【13】

独立按键

返回键

【14】

独立按键

菜单键

【15】

MIPI CSI

MIPI摄像头接口

【16】

MIPI CSI+DSI

MIPI摄像头接口及DSI接口,可接双MIPI屏

【17】

MIPI DSI

接MIPI接口的屏

【18】

RESET

复位按键

【19】

HDMI

HDMI输出接口

【20】

TYPEC

TYPEC接口,兼容OTG功能

【21】

USB3.0接口

USB HOST3.0接口

【22】

USB HOST

HOST2.0接口,RK3399自带

【23】

USB HOST

HUB芯片扩展,两路HOST2.0接口

【24】

TF卡

TF卡座

【25】

EDP

EDP接口

【26】

SIM卡槽

3G、4G手机卡槽

【27】

LED灯

四路可编程LED灯

【28】

耳机座

耳机输出

【29】

喇叭接口

外置双声道扬声器

【30】

喇叭接口

外置双声道扬声器

【31】

MIC

耳麦,录音输入

【32】

摄像头接口

标准 24PIN 摄相头接口

【33】

千兆网口

RT8211E 接口

【34】

WIFI/BT

AP6354 WIFI/BT二合一模块

【35】

红外接收头

HS0038红外一体化接收头

扩展接口定义

核心板引脚定义1

核心板引脚定义1

引脚编号

信号

类型

描述

1

GPIO4_A3/

I2S1_SCLK

GPIO或I2S串行时钟


2

GPIO4_A7/

I2S1_SDO0

GPIO或I2S数据输出


3

GPIO4_A6/

I2S1_SDI0

GPIO或I2S数据输入


4

GPIO4_A5/

I2S1_LRCK_TX

GPIO或I2S帧时钟


5

GPIO4_A4/

I2S1_LRCK_RX

GPIO或I2S帧时钟


6

GPIO4_A1/

I2C1_SDA

GPIO或I2C1数据


7

GPIO4_A2/

I2C1_SCL

GPIO或I2C1时钟


8

GPIO4_A0/

I2S_CLK

GPIO或I2S主时钟


9

GPIO3_D0/

I2S0_SCLK

GPIO或I2S串行时钟


10

GPIO3_D1/

I2S0_LRCK_RX

GPIO或I2S帧时钟


11

GPIO3_D2/

I2S0_LRCK_TX

GPIO或I2S帧时钟


12

GPIO3_D3/

I2S0_SDI0

GPIO或I2S数据输入


13

GPIO3_D4/

I2S0_SDI1

GPIO或I2S数据输入


14

GPIO3_D7/

I2S0_SDO0

GPIO或I2S数据输出


15

GPIO3_D6/

I2S0_SDO1

GPIO或I2S数据输出


16

GPIO3_D5/

I2S0_SDO2

GPIO或I2S数据输出


17

GPIO4_D4

GPIO


18

ADC_IN2

ADC输入


19

GPIO2_C4/

SDIO0_D0/

SPI5_RXD

GPIO或SDIO接口或SPI接口


20

GPIO2_C5/

SDIO0_D1/

SPI5_TXD

GPIO或SDIO接口或SPI接口


21

GPIO2_C6/

SDIO0_D2/

SPI5_CLK

GPIO或SDIO接口或SPI接口


22

GPIO2_C7/

SDIO0_D3/

SPI5_CSn0

GPIO或SDIO接口或SPI接口


23

GPIO2_D0/

SDIO0_CMD

GPIO或SDIO接口


24

GPIO2_D1/

SDIO0_CLK

GPIO或SDIO接口


25

GPIO2_C3/

UART0_RTS

GPIO或串口0


26

GPIO2_C1/

UART0_TXD

GPIO或串口0


27

GPIO2_C2/

UART0_CTS

GPIO或串口0


28

GPIO2_C0/

UART0_RXD

GPIO或串口0


29

PMU_RESET

复位管脚


30

GPIO4_D6

GPIO


31

GPIO4_D1

GPIO


32

GPIO4_D3

GPIO


33

GPIO4_C6/

PWM1_d

GPIO或PWM1


34

PMIC_EXT_EN

PMU使能管脚


35

RTC_CLKO_WIFI

32768Hz时钟输出


36

Camera_RST_L

GPIO2_D3


37

VCC_RTC

RTC电源输入

电源输入2.5到3V

38

GPIO4_C2/

PWM0

GPIO或PWM0


39

GPIO2_D4

GPIO


40

GPIO4_D2

GPIO


41

GPIO4_D5

GPIO


42

VCC3V3_S5

副3.3V电源输入

3.3V输入,电流不小于300mA

43

GPIO4_C5/

SPDIF_TX

GPIO或光纤输出


44

GPIO4_C3/

UART2DBG_RX

GPIO或UART2


45

GPIO4_C4/

UART2DBG_TX

GPIO或UART2


46

GPIO4_C0/

I2C3_SDA/

UART2_RX

GPIO或I2C3数据或串口2


47

GPIO4_C1/

I2C3_SCL/

UART2_TX

GPIO或I2C3时钟或串口2


48

GPIO4_C7/

HDMI_CEC

GPIO或HDMI CEC功能


49

HDMI_HPD

HDMI热插拨检测管脚


50

VCC_CHAREG_EN

PMIC使能


核心板引脚定义2

核心板引脚定义2

引脚编号

信号

类型

描述

51

VCC3V3_SYS

主3.3V电源输入

3.3V输入,电源不小于4.3A

52

VCC3V3_SYS

主3.3V电源输入

3.3V输入,电源不小于4.3A

53

GND

参考地


54

MIPI_TX1/RX1_D0N

DSI/CSI接口


55

MIPI_TX1/RX1_D0P

DSI/CSI接口


56

MIPI_TX1/RX1_D1N

DSI/CSI接口


57

MIPI_TX1/RX1_D1P

DSI/CSI接口


58

MIPI_TX1/RX1_CLKN

DSI/CSI接口


59

MIPI_TX1/RX1_CLKP

DSI/CSI接口


60

MIPI_TX1/RX1_D2N

DSI/CSI接口


61

MIPI_TX1/RX1_D2P

DSI/CSI接口


62

MIPI_TX1/RX1_D3N

DSI/CSI接口


63

MIPI_TX1/RX1_D3P

DSI/CSI接口


64

MIPI_RX0_D3N

CSI接口


65

MIPI_RX0_D3P

CSI接口


66

MIPI_RX0_D2N

CSI接口


67

MIPI_RX0_D2P

CSI接口


68

MIPI_RX0_CLKN

CSI接口


69

MIPI_RX0_CLKP

CSI接口


70

MIPI_RX0_D1N

CSI接口


71

MIPI_RX0_D1P

CSI接口


72

MIPI_RX0_D0N

CSI接口


73

MIPI_RX0_D0P

CSI接口


74

MIPI_TX0_D3N

DSI接口


75

MIPI_TX0_D3P

DSI接口


76

MIPI_TX0_D2N

DSI接口


77

MIPI_TX0_D2P

DSI接口


78

MIPI_TX0_CLKN

DSI接口


79

MIPI_TX0_CLKP

DSI接口


80

MIPI_TX0_D1N

DSI接口


81

MIPI_TX0_D1P

DSI接口


82

MIPI_TX0_D0N

DSI接口


83

MIPI_TX0_D0P

DSI接口


84

GND

参考地


85

HDMI_TXCN

HDMI输出接口


86

HDMI_TXCP

HDMI输出接口


87

HDMI_TX0N

HDMI输出接口


88

HDMI_TX0P

HDMI输出接口


89

HDMI_TX1N

HDMI输出接口


90

HDMI_TX1P

HDMI输出接口


91

HDMI_TX2N

HDMI输出接口


92

HDMI_TX2P

HDMI输出接口


93

TYPEC0_SBU1_DC

TYPEC接口


94

TYPEC0_SBU2_DC

TYPEC接口


95

TYPEC0_SBU2

TYPEC接口


96

TYPEC0_SBU1

TYPEC接口


97

TYPEC0_RX1N

TYPEC接口


98

TYPEC0_RX1P

TYPEC接口


99

TYPEC0_TX1P

TYPEC接口


100

TYPEC0_TX1N

TYPEC接口


核心板引脚定义3

核心板引脚定义3

引脚编号

信号

类型

描述

101

TYPEC0_RX2N

TYPEC接口


102

TYPEC0_RX2P

TYPEC接口


103

TYPEC0_TX2P

TYPEC接口


104

TYPEC0_TX2N

TYPEC接口


105

TYPEC0_DM

TYPEC接口


106

TYPEC0_DP

TYPEC接口


107

USB3_SSTXP

USB3.0接口

TYPEC、USB3.0复用脚

108

USB3_SSTXN

USB3.0接口

TYPEC、USB3.0复用脚

109

USB3_SSRXP

USB3.0接口

TYPEC、USB3.0复用脚

110

USB3_SSRXN

USB3.0接口

TYPEC、USB3.0复用脚

111

TYPEC0_U2VBUSDET

TYPEC接口


112

ADC_IN1

ADC1输入管脚

参考电平为1.8V

113

ADC_IN0

ADC0输入管脚

参考电平为1.8V

114

USB3_DM

USB3.0接口

TYPEC、USB3.0复用脚

115

USB3_DP

USB3.0接口

TYPEC、USB3.0复用脚

116

HOST0_DM

USB2.0接口


117

HOST0_DP

USB2.0接口


118

HOST1_DM

USB2.0接口


119

HOST1_DP

USB2.0接口


120

VCC1V8_S3

1.8V电源输出

休眠时电压为0

121

POWER_KEY

PMU使能管脚

低电平使能

122

GPIO2_D2

GPIO


123

GPIO0_A4

GPIO


124

GPIO0_B2

GPIO


125

GPIO0_B1

GPIO


126

GPIO0_A3

GPIO


127

GPIO4_B4/

SDMMC0_CLK

GPIO或SDIO接口


128

GPIO4_B3/

SDMMC0_D3

GPIO或SDIO接口


129

GPIO4_B2/

SDMMC0_D2

GPIO或SDIO接口


130

GPIO4_B1/

SDMMC0_D1

GPIO或SDIO接口


131

GPIO4_B0/

SDMMC0_D0

GPIO或SDIO接口


132

GPIO4_B5/

SDMMC0_CMD

GPIO或SDIO接口


133

GPIO0_A7/

SDMMC0_DET

GPIO或SDIO接口


134

GPIO0_A1

GPIO


135

EDP_TX3P

EDP接口


136

EDP_TX3N

EDP接口


137

EDP_TX2P

EDP接口


138

EDP_TX2N

EDP接口


139

EDP_TX1P

EDP接口


140

EDP_TX1N

EDP接口


141

EDP_TX0P

EDP接口


142

EDP_TX0N

EDP接口


143

EDPAUXP

EDP接口


144

EDPAUXN

EDP接口


145

GPIO4_D0

GPIO


146

GPIO0_B3

GPIO


147

GPIO0_B0

GPIO


148

GPIO1_A1

GPIO


149

GPIO1_A0

GPIO


150

GPIO1_B4/

I2C4_SCL

GPIO或I2C接口


核心板引脚定义4

核心板引脚定义4

引脚编号

信号

类型

描述

151

GPIO1_B3/

I2C4_SDA

GPIO或I2C接口


152

GPIO0_A2/

RK3399_26M_OUT

GPIO口或26M时钟输出管脚


153

GPIO0_B4

GPIO


154

GPIO0_B5

GPIO


155

GPIO0_A6/

PWM3A

GPIO或PWM接口

默认为红外接收口

156

GPIO1_C7

GPIO


157

GPIO1_A4

GPIO


158

GPIO1_A3

GPIO


159

GPIO1_B5

GPIO


160

GPIO1_A2

GPIO


161

GPIO1_B0/

SPI1_TXD

GPIO或SPI接口


162

GPIO1_B2/

SPI1_CSn0

GPIO或SPI接口


163

GPIO1_B1/

SPI1_CLK

GPIO或SPI接口


164

GPIO1_A7/

SPI1_RXD

GPIO或SPI接口


165

GPIO1_C2/

SPI3_CSn0

GPIO或SPI接口


166

GPIO1_C4/

I2C8_SDA

GPIO或I2C接口


167

GPIO1_D0

GPIO


168

GPIO1_C6

GPIO


169

GPIO2_B3/

SPI2_CLK/

CIF_CLKO

GPIO或SPI接口或并口摄像头接口


170

GPIO2_B0/

I2C7_SCL/

CIF_VSYNC

GPIO或I2C接口或并口摄像头接口


171

GPIO2_A7/

I2C7_SDA/

CIF_D7

GPIO或I2C接口或并口摄像头接口


172

GPIO2_A6/

CIF_D6

GPIO或并口摄像头接口


173

GPIO2_A5/

CIF_D5

GPIO或并口摄像头接口


174

GPIO2_A4/

CIF_D4

GPIO或并口摄像头接口


175

GPIO2_A3/

CIF_D3

GPIO或并口摄像头接口


176

GPIO2_A2/

CIF_D2

GPIO或并口摄像头接口


177

GPIO2_A1/

I2C2_SCL/

CIF_D1

GPIO或I2C接口或并口摄像头接口


178

GPIO2_A0/

I2C2_SDA/

CIF_D0

GPIO或I2C接口或并口摄像头接口


179

GPIO2_B4/

SPI2_CSn0

GPIO或SPI接口


180

GPIO2_B1/

I2C6_SDA/

CIF_HREF

GPIO或I2C接口或并口摄像头接口


181

GPIO2_B2/

I2C6_SCL/

CIF_CLKI

GPIO或I2C接口或并口摄像头接口


182

GND

参考地


183

GPIO3_B6/

MAC_RXCLK/

UART3_RX

GPIO或千兆以太网接口或串口


184

GPIO3_B3/

MAC_MCLK/

I2C5_SCL

GPIO或千兆以太网接口或I2C接口


185

GPIO3_B0/

MAC_MDC/

SPI0_CSn1

GPIO或千兆以太网接口或SPI接口


186

GPIO3_A3/

MAC_RXD3/

SPI4_CSn0

GPIO或千兆以太网接口或SPI接口


187

GPIO3_A2/

MAC_RXD2/

SPI4_CLK

GPIO或千兆以太网接口或SPI接口


188

GPIO3_A7/

MAC_RXD1/

SPI0_CSn0

GPIO或千兆以太网接口或SPI接口


189

GPIO3_A6/

MAC_RXD0/

SPI0_CLK

GPIO或千兆以太网接口或SPI接口


190

GPIO3_C0/

MAC_COL/

UART3_CTSn/

SPDIF_TX

GPIO或千兆以太网接口或串口或光纤接口


191

GPIO3_C1/

MAC_TXCLK/

UART3_RTSn

GPIO或千兆以太网接口或串口


192

GPIO3_B2/

MAC_RXER/

I2C5_SDA

GPIO或千兆以太网接口或I2C接口


193

GPIO3_B7/

MAC_CRS/

UART3_TX

GPIO或千兆以太网接口或串口


194

GPIO3_A4/

MAC_TXD0

SPI0_TXD

GPIO或千兆以太网接口或SPI接口


195

GPIO3_A5/

MAC_TXD1/

SPI0_TXD

GPIO或千兆以太网接口或SPI接口


196

GPIO3_A0/

MAC_TXD2/

SPI4_RXD

GPIO或千兆以太网接口或SPI接口


197

GPIO3_A1/

MAC_TXD3/

SPI4_TXD

GPIO或千兆以太网接口或SPI接口


198

GPIO3_B4/

MAC_TXEN/

UART1_RX

GPIO或千兆以太网接口或串口


199

GPIO3_B5/

MAC_MDIO/

UART1_TX

GPIO或千兆以太网接口或串口


200

GPIO3_B1/

MAC_RXDV

GPIO或千兆以太网接口


硬件接口

电源开关和插座

171 × 133

x3399采用5V直流电源供电,图中插座为5V直流电源输入插座,注意不要超过5.5V,虽然底板上的电源芯片NB680GD支持5到24V输入,但是底板上其他外设也是直接从这里取电,因此如果电压过大,会烧坏底板上一堆外设芯片。

调试串口

265 × 242px

x3399预留一个RS232串口UART2用于调试,还有一个普通TTL的串口UART4如下:

239 × 124px


注意,默认使用UART2作为调试串口,用户可以通过修改程序调节调试串口。

HDMI接口

147 × 133px

x3399开发板采用miniHDMI接口,配合miniHDMI的延长线,可以将音视频信号完美的呈现在支持HDMI2.0协议的监控终端,如电视机,显示器等。

camera接口

204 × 84px

该接口为通用的24PIN摄相头接口,支持OV全系列摄相头,省去camera转接板。针对不同型号的摄相头,只需按照摄相头的规格,调整一下输出电压就行了。

218 × 98px

该接口为通用的30PIN MIPI摄相头接口,如果摄像头上接有闪光灯,可支持闪光灯的功能。

以太网接口

230 × 245px

x3399支持千兆有线以太网接口,板载RTL8211E,用户可以通过有线以太网上网,体验极速网络。

耳机接口

117 × 216px

将耳机接入该接口,可以实现耳机输出。当然也可以直接通过该接口送到功放输入,如家庭影院的音频输入口,实现将开发板的音源信号通过家庭影院展现出来。

喇叭接口

201 × 84px

开发板直接支持双声道2W扬声器输出,将喇叭接到上图接口,可实扬声器输出。

录音接口

94 × 63px

开发板支持录音输入。耳麦已经直接载载到开发板上,无须通过外置的耳麦输入了。

TF卡槽

175 × 193px

x3399引出一个外置TF卡,可以通过该通道进行TF卡升级,或是存放一些多媒体文件。

独立按键

845 × 110px

X3399共有六个按键,其中包括四个独立的按键,一个POWER键和一个复位键。独立按键通过ADC采样的方式获取键值。在原理图中,对应关系如下:

开关

功能

VOL+

音量加键

VOL-

音量减键

ESC

返回键

MENU

菜单键

POWER

电源键

RESET

复位键

TYPEC接口

118 × 157px

TYPEC接口属于一种全新标准的接口,它具有传输速率快,输出电压大,双向插入,双向传输的功能。该接口不仅仅支持传统的USB OTG用于程序烧写,同步的功能,同时它还能驱动HDMI,EDP,MIPI屏,最大电压可以达到20V,实现快充的功能。可以预见,它将会是未来USB接口的主流。

USB HOST接口

284 × 317px

RK3399自带有两路USB HOST2.0接口,两路TYPEC接口,其中一路TYPEC,在x3399上用作了USB3.0接口,上图最左侧接口对应USB3.0。USB3.0右侧的竖插USB座为RK3399自带的一路USB HOST2.0接口,在右边还有一个双层USB HOST接口,它是RK3399自带的另一路USB HOST2.0经过一个HUB芯片转换而来。如此丰富的HOST接口,相信已经满足了绝大多数应用场景。

开机按钮

97 × 131px

接上外部电源适配器后,长按POWER键开机。进入android系统后,轻触POWER键休眠,再次按POWER键实现唤醒。长按POWER键实现出现关机界面,按照屏幕提示关机。

复位按钮

95 × 110px

在系统运行时,轻按RESET键开发板重启,实现硬复位的功能。

Recovery按钮

98 × 126px

音量加按键在烧录时被用作Recovery键,刷机时需要按下该键进入recovery模式。

LCD接口

213 × 104px

x3399开发板默认留有一个30PIN的DSI接口,通过软排线将MIPI相关信号连接到LCD控制板上,进而控制LCD。同时,这个30PIN接口的第12管脚为PWM脚,用于控制LCD的背光,通过PWM实现多级背光亮度调节。同时,它上面还引出了用于电容触摸的I2C以及中断,唤醒信号。

默认RK3399支持双MIPI LCD控制输出功能,它能驱动2K甚至4K屏。在x3399上,同样预留了一个双屏MIPI接口如下:

342 × 84px

当需要驱动双MIPI接口的屏时,接该接口即可。另外,x3399开发板上还预留了一路EDP接口,通过它同样可以驱动高分辨率的屏。

118 × 224px

后备电池

186 × 225px

后备电池用于保证断电后RTC仍然能够工作,确保系统时间不丢失。

蜂鸣器

141 × 160px

该蜂鸣器为有源蜂鸣器,有直流电时会鸣叫,通过三极管控制电源的导通与截止。硬件电路通过一路PWM控制三极管,即可以用于PWM测试,也可以用于适当场合的声音提示。

红外一体化接收头

130 × 90px

这里采用HS0038B一体化接收头,它具有灵敏度高,使用方便等优点。利用它我们可以实现无线遥控,将x3399开发板作为一个高性能的四核机顶盒。

光纤接口

180 × 129px

X3399开发板上的声音不仅能通过喇叭、耳机、HDMI输出,还能通过光纤输出,将最真实的声音还原出来。通过光纤连接线连接到带有光纤输入接口的高保真音箱,即可聆听最真实的声音。

SIM卡接口

274 × 190px

X3399开发板的背面有一个PCIE座,它用于接PCIE接口的3G、4G通讯模块。当然在使用3G和4G时,需要在这个SIM卡槽内插入对应的手机卡。

WIFI蓝牙模块

245 × 254px

X3399开发板标配具有2.4G和5G双频WIFI的SDIO接口WIFI/BT模块,上图左侧和上侧为模块对应的PCB天线。