跳转至: 导航, 搜索

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

 
第1行: 第1行:
 
[[Category:开发板]]
 
[[Category:开发板]]
==x3399 开发 板简介==
+
== android 开发 平台的搭建==
  
非常感谢您选择九鼎创展x3399开发平台 ,本 文档讲述x3399开 平台 硬件资源 电路原理以及支 的接口等
+
Android自从升级到4.0以来 相比之前的版 工程更加庞大,编译整套源码对PC机硬件要求很高,因此不建议采用虚拟机编译,强烈建议直接安装Linux操作系统,充分 挥PC机 性能。我们这里以ubuntu14.04 64位系统机器为例讲解,如果您是新手 建议与我们版本保 一致
  
X3399开发板是基于瑞芯微RK3399的一款高端开发板,它由深圳市九鼎创展科技有限公司自主研发,生产并销售。它是市面上首款基于A53四核,以及A72双核共六核的64位超高性能基于行业控制领域的开发板,主频高达2GHz。
+
=== 使用U盘安装ubuntu===
  
RK3399在CPU与GPU方面均堪称怪兽级。双Cortex-A72大核+四Cortex-A53小核结构的CPU 对整数、浮点、内存等作了大幅优化,在整体性能、功耗及核心面积三个 面都具革命性提升。GPU采用四核ARM新一代高端图像处理器Mali-T860,集成更多带宽压缩技术:如智能迭加、ASTC、本地像素存储等,还支持更多的图形和计算接口,总体性能比上一代提升45%
+
使用U盘安装ubuntu系统简单快捷 强烈推荐使用此 法安装
  
  尽管这些能力均被同类解决芯片方案标榜为“顶级”能力,但对RK3399来讲,这并不是重点。极 看点的是,Type-C接口、内置PCI-e接口、双摄像头支持手势识别三大特性,这对游戏盒子产品的体验将是颠覆性的,还有支持LPDDR4内存等诸多新特性,均领先于目前主流产品。
+
  安装工
  
得益于高配置和整体性能的提升, 及全面型布局,使得RK3399天生就是 位多面能手。除了平板电脑、VR、TV-BOX、笔记本之外,RK3399的应用还涵盖了工业及消费领域各类终端 包括智能家电、广告机/ 一体机、金融POS机、车 控制终端、瘦客户机、VOIP视频会议、安防/ 监控/ 警务及IoT物联网等领域。
+
* 2G 上U盘
 +
* lili usb creater 软件 下载地址:http://www.linuxliveusb.com/
 +
* ubuntu最新系统,下 地址:[http://www.ubuntu.com/download/ http://www.ubuntu.com/download/]
 +
* PC机一台
  
===Android6.0.1系统===
+
安装方法:
  
x3399开发板支持android6.0.1操作系统 采用linux4.4内核
+
第一步:下载好ubuntu的ISO文件 和lili usb creater这个软件并安装
  
 已 测试 完成 模块:
+
  第二步:插入usb,并打开usb creater 这个软件,根据软件提示设置,在步骤1中选择安装盘,找到识别出的U盘;在步骤2中找到下载的ubuntu映像文件;步骤3默认,步骤4中选中隐藏优盘上创建的文件,使用FAT32格式化U盘;最后在步骤5中点击闪电图标开始安装,直到提示优盘 安装 完成 为止。
  
* emmc驱动
+
http://x.9tripod.com/wiki/zh/images/3/39/USB-MemoryToUbuntu.png
* 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接口液晶屏,支持背光亮度无级调节
+
步:重启 电脑, 看清屏幕下方的提示 进入BIOS设置菜单 选择U盘启动 。一 般台式机是按DEL键 笔记本有些是按F2 有些按F10进入 设置完成后 存退出
  
x3399开发板上x3399核心板适用于VR、工控,电力,通讯,医疗,媒体 ,安 防,车载,金融,消费电子,手持设备,游戏机,显示控制,教学仪器等多种领域。可广泛用于POS,游戏机,教学实验平台,多媒体终端,PDA 点菜机 广告机等领域。
+
第四步:再次重启系统 这时已经可以看到ubuntu的 装界面了 选择中文 继续;
  
===产品功能特性===
+
  第五步 :选 择 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>
DDR
+
menuentry "Microsoft Windows XP Professional (on /dev/sda1)" {
  
|
+
    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
MIPI摄像头接口及DSI接口,可接双MIPI屏
+
</nowiki></pre>
  
|-
 
|
 
<center>【17】</center>
 
  
|
+
每输一次d,输入一次分区的序号,直到删完,再按w写入,完成分区的删除。再按n,回车,回车,新建一个分区。之后再使用mkfs工具格式化为指定格式的盘,如格式化为fat32格式,则执行如下指令:
MIPI DSI
+
<pre><nowiki>
 +
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====
 
  
{| class="wikitable"
+
<nowiki>[  383.180580]  RTUSB disconnect successfully</nowiki>
|-
 
| 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/
 
  
I2S1_SCLK
+
表示串口设备名称为ttyUSB0。有时会提示如下错误:
  
|
+
<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/
 
  
I2S1_SDO0
+
<nowiki>[  419.392535] wlan0: no IPv6 routers present</nowiki>
  
|
+
<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/
 
  
I2S1_SDI0
+
一般情况下重插拨一次USB转串口线即可。
  
|
+
=== ubuntu卡死的解决办法===
GPIO或I2S数据输入
 
  
|
+
ubuntu系统有时也会像windows系统一样,卡死不动。这时除了复位系统,我们也可以尝试如下方法:
  
 +
一:按住ctrl+alt+F2进入tty2;
  
|-
+
二:查看进程:
|
 
4
 
  
|
+
<pre><nowiki>ps -e </nowiki></pre>
GPIO4_A5/
 
  
I2S1_LRCK_TX
+
三:kill掉相关进程
  
|
+
四:再按住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/
 
  
I2C1_SDA
+
<pre><nowiki>
 +
<nowiki>Do you agree to the above license terms?[yes or no]</nowiki> </nowiki></pre>
  
|
+
输入<pre><nowiki>
GPIO或I2C1数据
+
yes </nowiki></pre>
  
|
+
第四步:弹出如下信息:
  
 +
<pre><nowiki>
 +
<nowiki>Install directory [/opt/slickedit]:</nowiki> </nowiki></pre>
  
|-
+
这里提示输入安装路径,默认按回车即可
|
 
7
 
  
|
+
第五步:提示如下信息:
GPIO4_A2/
 
  
I2C1_SCL
+
<pre><nowiki>
 +
<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>
GPIO4_A0/
+
INSTALLATION SUCCESSFULLY COMPLETED
  
I2S_CLK
+
1.Type "/opt/slickedit/bin/vs" to run SlickEdit.
  
|
+
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/
 
  
I2S0_SCLK
+
<pre><nowiki>
 +
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/
 
  
I2S0_LRCK_RX
+
<pre><nowiki>
 +
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>
GPIO或I2S帧时钟
+
<nowiki>[Desktop Entry]</nowiki>
  
|
+
Name=Slickedit
  
 +
Comment=Slickedit
  
|-
+
Exec=/opt/slickedit/bin/vs
|
 
12
 
  
|
+
Icon=/usr/share/icons<nowiki>/vse_profile_256.bm</nowiki>p
GPIO3_D3/
 
  
I2S0_SDI0
+
Terminal=false
  
|
+
Type=Application
GPIO或I2S数据输入
 
  
|
+
Categories=Development;
  
 +
StartupNotify=true </nowiki></pre>
  
|-
+
这时,在应用程序-&gt;编程中,就能找到slickedit的图标了。
|
 
13
 
  
|
+
第十一步:如果你实在是用烦了这个软件,那就干掉他吧!进入/opt目录,输入如下指令:
GPIO3_D4/
 
  
I2S0_SDI1
+
<pre><nowiki>rm -rf slickedit </nowiki></pre>
  
|
+
从此让他滚得越远越好!
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/
 
  
I2S0_SDO0
+
http://www.eclipse.org/
  
|
+
选择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/
 
  
I2S0_SDO2
+
Comment=eclipse
  
|
+
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/
 
  
SDIO0_D0/
+
第三步:这时在Project Explorer中有xboot的目录,右击xboot,点击Import,找到General-&gt;File System,双击,弹出Import对话框,在From directory中找到需要加载的文件的目录,点击Select All,将把加载的目录的所有类型文件添加到工程中,点击Finish按钮,提示是否覆盖.cproject,点击Yes To All,这时我们需要编辑的文件就已经全加载到工程中了。
  
SPI5_RXD
+
=== adb工具===
 +
==== 安装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/
 
  
SDIO0_D1/
+
<pre><nowiki> D:\Program Files\Android\android-sdk\platform-tools </nowiki></pre>
  
SPI5_TXD
+
修改系统环境变量,找到Path环境变量,在前面添加
  
|
+
<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/
+
显示下面内容表示成功连接:
  
SPI5_CLK
+
http://x.9tripod.com/wiki/zh/images/7/70/Adb-device.png
  
|
+
====进入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/
 
  
SDIO0_D3/
+
输入exit退回DOS操作界面。注意,有时候,执行adb devices命令时,会提示error: more than one device and emulator,很有可能是播放了USB设备造成的。这时已经无法再通过adb传输数据,解决的办法很简单,如果是使用windows,直接在进程中干掉<nowiki>adb.ex</nowiki>e,再启动adb即可。
  
SPI5_CSn0
+
=== 串口工具secureCRT===
  
|
+
安装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/
 
  
SDIO0_CMD
+
http://x.9tripod.com/wiki/zh/images/0/01/Usb-serial.png
  
|
+
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/
 
  
SDIO0_CLK
+
很可能个别软件包会安装失败,比如sun-java6-jdk,这时需要我们手动来安装。下面是在ubuntu下手动安装jdk1.6的详细步骤:
  
|
+
第一步:在官网下载最新的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>
GPIO或串口0
+
sudo gedit /etc/profile</nowiki></pre>
  
|
+
在最末尾加入如下语句:
  
 +
<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/
 
  
UART0_TXD
+
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
  
|
+
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/
 
  
UART0_CTS
+
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
  
|
+
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>
GPIO2_C0/
+
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_27/bin/java 255
  
UART0_RXD
+
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_27/bin/javac 255 </nowiki></pre>
  
|
+
这两条指令用于创建符号链接。其中,/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
 
  
|
+
手动修改下载源,指令如下:
GPIO4_D1
+
<pre><nowiki>
 +
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/
 
  
PWM1_d
+
<pre><nowiki>Sourcetree/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8 </nowiki></pre>
  
|
+
===安装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/
 
  
PWM0
+
这时,整个android文件系统全部都放在了当前解压的目录中。至此,android源码包安装完成。
  
|
+
'''说明:源码包名称可能会因发布日期等有所不同,具体以网盘中实际名称为准。'''
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/
 
  
SPDIF_TX
+
BS_DIR_UBOOT=${BS_DIR_TOP}/uboot
  
|
+
BS_DIR_KERNEL=${BS_DIR_TOP}/kernel
GPIO或光纤输出
 
  
|
 
  
  
|-
+
<nowiki>#</nowiki>
|
 
44
 
  
|
+
<nowiki># Target Config</nowiki>
GPIO4_C3/
 
  
UART2DBG_RX
+
<nowiki>#</nowiki>指定uboot,内核以及文件系统配置文件
  
|
+
BS_CONFIG_BOOTLOADER_UBOOT=x3288_config
GPIO或UART2
 
  
|
+
BS_CONFIG_KERNEL=x3288_defconfig
  
 +
BS_CONFIG_FILESYSTEM=PRODUCT-rk3288-eng
  
|-
 
|
 
45
 
  
|
 
GPIO4_C4/
 
  
UART2DBG_TX
+
<nowiki># 在编译前,事先设置一些编译环境,保证准确可靠的编译</nowiki>
  
|
+
setup_environment()
GPIO或UART2
 
  
|
+
{
  
 +
    LANG=C
  
|-
+
    cd ${BS_DIR_TOP};
|
 
46
 
  
|
 
GPIO4_C0/
 
  
I2C3_SDA/
 
  
UART2_RX
+
    PATH=${BS_DIR_TOP}/out/host/linux-x86/bin:$PATH;
  
|
 
GPIO或I2C3数据或串口2
 
  
|
 
  
 +
    mkdir -p ${BS_DIR_RELEASE} || return 1
  
|-
+
}
|
 
47
 
  
|
 
GPIO4_C1/
 
  
I2C3_SCL/
 
  
UART2_TX
+
<nowiki># 编译 uboot,编译完后,自动将 </nowiki>bootloader.bin 拷贝到 out/release 目录
  
|
+
build_bootloader_uboot()
GPIO或I2C3时钟或串口2
 
  
|
+
{
  
 +
    # Compiler uboot
  
|-
+
    cd ${BS_DIR_UBOOT} || return 1
|
 
48
 
  
|
+
    make distclean || return 1
GPIO4_C7/
 
  
HDMI_CEC
+
    make ${BS_CONFIG_BOOTLOADER_UBOOT} || return 1
  
|
+
    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屏的配置文件为
MIPI_TX0_D1P
+
  <nowiki>x3288_lcd070hdr.dt</nowiki>si,
 +
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目录。
MIPI_TX0_D0N
+
<pre><nowiki>
 +
./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>
83
+
./mk    -s </nowiki></pre>
  
|
+
编译完文件系统,在out/release目录下会生成如下文件:
MIPI_TX0_D0P
 
  
|
+
* <nowiki>RK3288UbootLoader_V2.19.09.bi</nowiki>n: uboot映像文件
DSI接口
+
* <nowiki>Kernel.im</nowiki>g:内核映像
 +
* <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系统映像烧写 ===
84
+
==== RKTool驱动安装====
  
|
+
解压<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
 
  
|
+
打开
HDMI_TXCP
+
  RKTools\windows\AndroidTool_Release_v2.3\AndroidTool_Release_v2.3\AndroidTool.exe
 +
选择“升级固件”选项卡,点击“固件”,在弹出窗口中选择已经生成的<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
 
  
|
+
打开路径:
HDMI输出接口
+
  SDK\RKTools\windows\FactoryTool_v1.33
 +
下的“<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系统烧写映像===
HDMI输出接口
+
==== 生成固件<nowiki>update.im</nowiki>g====
  
|
+
我们已经在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命令: 选择设备, 当执行的命令有包含设备重启操作时, 需重新选择设备,当改变操作设备时需重新选择
HDMI输出
+
* SD命令:msc切换到rockusb升级模式。 当切换执行成功后, 需要重新选择设备
 +
* 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 有图形界面,后加了命令行支持,更是好用。
TYPEC0_SBU2
+
<pre><nowiki>
  
|
+
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====
+
==== 功能说明 ====
  
{| class="wikitable"
+
SD Card Boot功能是主控在上电时,优先从SD卡上查找启动代码,然后加载 导,从而实现特 功能。目前SD Card Boot已经实现两个功能:SD卡升级和SD卡运行。
|-
 
| 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项目
TYPEC0_RX2P
+
  * USE_FW_LOADER=TRUE
  
|
+
工具界面如下:
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 ===
TYPEC接口
+
==== android命令行播放mp3 ====
  
|
+
在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/
 
  
SDMMC0_CLK
+
&lt;categoryandroid:name="<nowiki>android.intent.ca</nowiki>tegory.LAUNCHER"/&gt;
  
|
 
GPIO或SDIO接口
 
  
|
 
  
 +
&lt;/intent-filter&gt;
  
|-
 
|
 
128
 
  
|
 
GPIO4_B3/
 
  
SDMMC0_D3
+
&lt;/activity&gt;
  
|
 
GPIO或SDIO接口
 
  
|
 
  
 +
&lt;/application&gt;
  
|-
 
|
 
129
 
  
|
 
GPIO4_B2/
 
  
SDMMC0_D2
+
&lt;/manifest&gt; </nowiki></pre>
  
|
+
由此计算器(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/
 
  
SDMMC0_D1
+
<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>
  
|
+
==== 使用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/
 
  
SDMMC0_CMD
+
http://x.9tripod.com/wiki/zh/images/7/76/Mp4-2.png
  
|
+
再点击播放按钮:
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====
 
  
{| class="wikitable"
+
http://x.9tripod.com/wiki/zh/images/4/43/Brower.png
|-
 
| 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/
 
  
I2C4_SDA
+
http://x.9tripod.com/wiki/zh/images/d/d2/Date-set.png
  
|
+
===拍照摄相 ===
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/
 
  
PWM3A
+
http://x.9tripod.com/wiki/zh/images/8/8c/Qq-login.png
  
|
+
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/
 
  
SPI1_TXD
+
点击图片上任意的灯,为红色时,对应开发板上的LED灯亮,为灰色时,对应LED灯灭。
  
|
+
===蜂鸣器测试 ===
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/
 
  
SPI1_RXD
+
旋转开发板时,上面的X,Y,Z轴的值会随之发生变化。
  
|
+
=== 音频测试 ===
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>
170
+
==== CPU信息查询 ====
  
|
+
使用如下指令查询CPU信息:
GPIO2_B0/
 
  
I2C7_SCL/
+
<pre><nowiki>cat  /proc/cpuinfo </nowiki></pre>
  
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/
 
  
I2C7_SDA/
+
CPU implementer : 0x41
  
CIF_D7
+
CPU architecture: 7
  
|
+
CPU variant    : 0x0
GPIO或I2C接口或并口摄像头接口
 
  
|
+
CPU part        : 0xc0d
  
 +
CPU revision    : 1
  
|-
 
|
 
172
 
  
|
 
GPIO2_A6/
 
  
CIF_D6
+
processor      : 1
  
|
+
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/
 
  
CIF_D5
+
CPU variant    : 0x0
  
|
+
CPU part        : 0xc0d
GPIO或并口摄像头接口
 
  
|
+
CPU revision    : 1
  
  
|-
 
|
 
174
 
  
|
+
processor      : 2
GPIO2_A4/
 
  
CIF_D4
+
model name      : ARMv7 Processor rev 1 (v7l)
  
|
+
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/
 
  
CIF_D3
+
CPU part        : 0xc0d
  
|
+
CPU revision    : 1
GPIO或并口摄像头接口
 
  
|
 
  
  
|-
+
processor      : 3
|
 
176
 
  
|
+
model name      : ARMv7 Processor rev 1 (v7l)
GPIO2_A2/
 
  
CIF_D2
+
BogoMIPS        : 48.00
  
|
+
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/
 
  
I2C2_SCL/
+
CPU revision    : 1
  
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/
 
  
SPI2_CSn0
+
Active:          165880 kB
  
|
+
Inactive:        156828 kB
GPIO或SPI接口
 
  
|
+
Active(anon):    105176 kB
  
 +
Inactive(anon):      268 kB
  
|-
+
Active(file):      60704 kB
|
 
180
 
  
|
+
Inactive(file):  156560 kB
GPIO2_B1/
 
  
I2C6_SDA/
+
Unevictable:          0 kB
  
CIF_HREF
+
Mlocked:              0 kB
  
|
+
HighTotal:      1540096 kB
GPIO或I2C接口或并口摄像头接口
 
  
|
+
HighFree:        1141180 kB
  
 +
LowTotal:        521984 kB
  
|-
+
LowFree:          432228 kB
|
 
181
 
  
|
+
SwapTotal:            0 kB
GPIO2_B2/
 
  
I2C6_SCL/
+
SwapFree:              0 kB
  
CIF_CLKI
+
Dirty:                0 kB
  
|
+
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/
 
  
MAC_RXCLK/
+
Bounce:                0 kB
  
UART3_RX
+
WritebackTmp:          0 kB
  
|
+
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>
GPIO或千兆以太网接口或I2C接口
+
cat  /proc/partitions </nowiki></pre>
  
|
+
会有如下类似打印信息:
  
 +
<pre><nowiki>
 +
shell@rk3288:/ # cat  /proc/partitions
  
|-
+
major minor  #blocks  name
|
 
185
 
  
|
 
GPIO3_B0/
 
  
MAC_MDC/
 
  
SPI0_CSn1
+
254        0    520912 zram0
  
|
+
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/
 
  
MAC_RXD3/
+
179        5      32768 mmcblk0p5
  
SPI4_CSn0
+
179        6      32768 mmcblk0p6
  
|
+
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/
 
  
MAC_RXD2/
+
179      12    1048576 mmcblk0p12
  
SPI4_CLK
+
179      13      65536 mmcblk0p13
  
|
+
179      14  12261376 mmcblk0p14          </nowiki></pre>         
GPIO或千兆以太网接口或SPI接口
 
  
|
+
==== 内核版本查询 ====
  
 +
使用如下命令查询内核版本:
 +
<pre><nowiki>
 +
cat  /proc/version </nowiki></pre>
  
|-
+
会有如下类似打印信息:
|
+
<pre><nowiki>
188
+
shell@rk3288:/ # cat  /proc/version
  
|
+
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>
  
|
+
会有如下类似打印信息:
GPIO或千兆以太网接口或SPI接口
+
<pre><nowiki>
 +
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/
 
  
MAC_RXD0/
+
  eth0:      0      0    0    0    0    0          0        0      992      6    0    0    0    0      0          0 </nowiki></pre>
  
SPI0_CLK
+
==== 查看内核启动信息 ====
  
|
+
使用如下命令查询内核启动信息:
GPIO或千兆以太网接口或SPI接口
+
<pre><nowiki>
 +
cat  /proc/kmsg </nowiki></pre>
  
|
+
== android开发项目实战==
  
 +
'''说明:以下为实际项目实例,用户可参考x210开发文档练习,后续我们会陆续发布。在进行下面的任一个实验之前,请确保前面的环境已经搭建完毕。'''
  
|-
+
=== 实战1:创建hello x3288工程 ===
|
 
190
 
  
|
+
参考《x4418 android平台用户手册》。
GPIO3_C0/
 
  
MAC_COL/
+
=== 实战2:在x3288开发板上运行hello x3288测试程序 ===
  
UART3_CTSn/
+
参考《x4418 android平台用户手册》。
  
SPDIF_TX
+
=== 实战3:从零开始编写LED测试程序 ===
  
|
+
参考《x4418 android平台用户手册》。
GPIO或千兆以太网接口或串口或光纤接口
 
  
|
+
=== 实战4:建立第一个APK应用程序,通过JNI+NDK调用底层驱动 ===
  
 +
参考《x4418 android平台用户手册》。
  
|-
+
=== 实战5:修改VGA分辨率 ===
|
 
191
 
  
|
+
参考《x4418 android平台用户手册》。
GPIO3_C1/
 
  
MAC_TXCLK/
+
===实战6:如何修改<nowiki>init.rc</nowiki>文件 ===
 +
==== 永久修改 ====
  
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/
 
  
MAC_RXER/
+
<nowiki># mail:  liuqiming@9tripod.com</nowiki>
  
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/
 
  
MAC_CRS/
+
echo "<nowiki>4.ex</nowiki>it"
  
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/
 
  
MAC_TXD0
+
OUT=${SOURCE_DIR}/out/target/product/rk3288
  
SPI0_TXD
 
  
|
 
GPIO或千兆以太网接口或SPI接口
 
  
|
+
PATH=${SOURCE_DIR}/out/host/linux-x86/bin:$PATH;
  
  
|-
 
|
 
195
 
  
|
+
<nowiki>#</nowiki>读取要执行的操作索引
GPIO3_A5/
 
  
MAC_TXD1/
+
read -p "Choose:" CHOOSE
  
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/
 
  
MAC_TXD2/
+
<nowiki>#</nowiki>第一步:新建ramdisk目录
  
SPI4_RXD
+
    <nowiki>[ -e "ramdisk" ] ||{ echo "mkdir ramdisk"; mkdir ramdisk;}</nowiki>
  
|
+
<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/
 
  
MAC_TXD3/
+
<nowiki>#</nowiki>第四步:解压<nowiki>boot.im</nowiki>g文件,得到<nowiki>boot.img-ramdisk.gz</nowiki>文件
  
SPI4_TXD
+
    <nowiki>[ -f "/bin/split_bootimg.pl" ] || { cp $TOOLS_DIR/split_bootimg.pl /bin; }</nowiki>
  
|
+
        <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/
 
  
MAC_TXEN/
+
    rm -f <nowiki>boot.img-ramdisk.gz</nowiki>
  
UART1_RX
+
    rm -f <nowiki>boot.img-second.gz</nowiki>
  
|
+
    rm -f <nowiki>boot.im</nowiki>g-kernel
GPIO或千兆以太网接口或串口
 
  
|
+
    exit
  
  
|-
 
|
 
199
 
  
|
+
<nowiki>#</nowiki>打包<nowiki>boot.im</nowiki>g
GPIO3_B5/
 
  
MAC_MDIO/
+
<nowiki>elif [ "2" = ${CHOOSE} ];then</nowiki>
  
UART1_TX
+
    echo "create <nowiki>boot.im</nowiki>g with kernel..."
  
|
+
<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/
 
  
MAC_RXDV
+
<nowiki>#</nowiki>第三步:将当前目录所有文件打包到<nowiki>boot.im</nowiki>g
  
|
+
    <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
===硬件接口===
 
====电源开关和插座====
 
  
<center>[[image:3399on-off.png|171 × 133]]</center>
+
    rm -rf ramdisk
  
x3399采用5V直流电源供电,图中插座为5V直流电源输入插座,注意不要超过5.5V,虽然底板上的电源芯片NB680GD支持5到24V输入,但是底板上其他外设也是直接从这里取电,因此如果电压过大,会烧坏底板上一堆外设芯片。
+
    exit
  
====调试串口====
 
  
<center>[[image:3399uart.png|265 × 242px]]</center>
 
  
x3399预留一个RS232串口UART2用于调试,还有一个普通TTL的串口UART4如下:
+
<nowiki>#</nowiki>清除残余文件
  
<center>[[image:3399uart2.png|239 × 124px]]</center>
+
<nowiki>elif [ "3" = ${CHOOSE} ];then</nowiki>
  
 +
    cd ${TARGET_DIR}
  
 +
    rm -rf ramdisk
  
注意,默认使用UART2作为调试串口,用户可以通过修改程序调节调试串口。
+
    echo "^_^ delete cache files ok!"
  
====HDMI接口====
 
  
<center>[[image:3399hdmi.png|147 × 133px]]</center>
 
  
x3399开发板采用miniHDMI接口,配合miniHDMI的延长线,可以将音视频信号完美的呈现在支持HDMI2.0协议的监控终端,如电视机,显示器等。
+
<nowiki>#</nowiki>退出脚本
  
====camera接口====
+
<nowiki>elif [ "4" = ${CHOOSE} ];then</nowiki>
  
<center>[[image:3399camera-ov.png|204 × 84px]]</center>
+
    exit
  
该接口为通用的24PIN摄相头接口,支持OV全系列摄相头,省去camera转接板。针对不同型号的摄相头,只需按照摄相头的规格,调整一下输出电压就行了。
+
fi
  
<center>[[image:3399camera-mipi.png|218 × 98px]]</center>
+
    执行.<nowiki>/ramdisk.sh</nowiki>,输入1,回车,将会自动解压out/release目录下的<nowiki>boot.im</nowiki>g,并存放到out/release/ramdisk目录。
  
该接口为通用的30PIN MIPI摄相头接口 如果摄像头上接有闪光灯 可支持闪光灯 功能
+
    执行.<nowiki>/ramdisk.sh</nowiki>,输入2 回车 将会自动将out/release/ramdisk目录下 文件打包成<nowiki>boot.im</nowiki>g
 +
</nowiki></pre>
 +
=== 实战7:如何修改开机动画 ===
  
==== 太网接口====
+
默认android启动时,会有android的英文字母不断高亮滚动显示,构成了一幅美丽的开机动画。其实这个开机动画是可 定制的,有兴趣的读者可以自行尝试。
  
<center>[[image:3399ethernet.png|230 × 245px]]</center>
+
=== 实战8:如何修改uboot中的开机LOGO ===
  
x3399支持千兆有线以太网接口 板载RTL8211E ,用 户可以通过 线以太网 体验极速网络
+
瑞芯微官方提供的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删除即可
  
====耳机接口====
+
如果我们需要换uboot的开机LOGO,找一张分辨率不是太大的图片,转换成BMP格式,然后使用WINDOWS的图库编辑功能,转换成8b模式,保存并替换kernel目录下的<nowiki>logo.bm</nowiki>p即可。注意,如果LOGO的分辨率设置得过大,也可能导致无法显示。如果需要全屏开机LOGO,默认的uboot代码就不适用了,需要重新移植。
  
<center>[[image:3399earphone.png|117 × 216px]]</center>
+
=== 实战9:如何修改内核中的LOGO ===
  
 将 耳机接入该接口 可以实现耳机输 出。 当然也可以直接通过该接口送到功放输入 ,如 家庭影院 音频输入口 实现将 发板的音源信号通过家庭影院展现出来
+
  同上,找一张分辨率不是太大的图片,转换成BMP格式,在WINDOWS的图片编辑软件下转换成8b模式后,还需要借助于linux下强大的gimp工具, 图片压缩 内核LOGO才能显示 默认瑞芯微提供的这套方案,内核LOGO分辨率不够大,而且会明显失真,无法显示真彩图片 ,如 果开发 工程师一定要显示完美的内核LOGO 建议使用linux下标准的 机LOGO方案
  
====喇叭接口====
+
=== 实战11:使用git管理源代码 ===
  
<center>[[image:3399speaker.png|201 × 84px]]</center>
+
  在我们最开始编码时,就应该养成使用git等工具管理源码的好习惯。这里简单介绍git的一些常用操作,具体更深入的学习,需要读者深入研究。
  
开发板直接支持双声道2W扬声器输出,将喇叭接到上图接口,可实扬声器输出。
+
====git指令 ====
  
====录音接口====
+
1).初始化仓库
  
<center>[[image:3399recording.png|94 × 63px]]</center>
+
  git init
  
开发板支持录音输入。耳麦已经直接载载到开发板上,无须通过外置 耳麦输入了。
+
2).查看版本库 状态
  
====TF卡槽====
+
  git status
  
<center>[[image:3399tf.png|175 × 193px]]</center>
+
3). 查看版本库的状态
  
x3399引出一个外置TF卡,可以通过该通道进行TF卡升级,或是存放一些多媒体文件。
+
  git log
  
====独立按键====
+
4).提交文件到仓库索引中
  
<center>[[image:3399key.png|845 × 110px]]</center>
+
  git add .                                 ---提交当前目录所有修改
  
X3399共有六 按键,其中包括四个独立的按键,一个POWER键和一个复位键。独立按键通过ADC采样的方式获取键值。在原理图中,对应关系如下:
+
  git add hello.c example.c                ---提交两 文件到仓库索引
  
{| class="wikitable"
+
5).提交内容到仓库:
|-
 
|
 
开关
 
  
|
+
  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接口====
 
  
<center>[[image:3399typec.png|118 × 157px]]</center>
+
  git push git@172.18.0.198:FCR/K660/app master ---提交当前目录修改到服务器(服务器不存在此目录)
  
TYPEC接口属于一种全 标准的接口,它具有传输速率快,输出电压大,双向插入,双向传输的功能。该接口不仅仅支持传统的USB OTG用于程序烧写,同步的功能,同时它还能驱动HDMI,EDP,MIPI屏,最大电压可以达到20V,实现快充的功能。可以预见,它将会是未来USB接口的主流。
+
12).查看项目版本更 细节
  
====USB HOST接口====
+
  git show 18183e                            ---显示当前分支的最新版本的更新细节
  
<center>[[image:3399usb.png|284 × 317px]]</center>
+
==== '''初始化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接口 相信已经满足了绝大多数应用场景。
+
次解压android源码后 进入android根目录 更新本地Git仓库:
  
====开机按钮====
+
  cd android_gingerbread    #进入工作目录
  
<center>[[image:3399powerOn.png|97 × 131px]]</center>
+
  git init-db        #初始化工作目录
  
接上外部电源适配器后,长按POWER键开机。 入android系统后,轻触POWER键休眠,再次按POWER键实现唤醒。长按POWER键实现出现关机界面,按照屏幕提示关机。
+
  git add .        #将工作目录的所有文件添加 来以便跟踪管理
  
====复位按钮====
+
  git commit -a        #将所监视的文件提交到仓库
  
<center>[[image:3399reset.png|95 × 110px]]</center>
+
  sudo apt-get install qgit
  
  在系统运行时 轻按RESET键开发板重启,实现硬复位的功能。
+
  第一次建立仓库后 给出第一次提交:
  
====Recovery按钮====
+
  git commit -m "初始化工程"
  
<center>[[image:3399recovery.png|98 × 126px]]</center>
+
  否则,输入git log时,会提示如下错误:
  
音量加按键在烧录时被用作Recovery键,刷机时需要按下该键进入recovery模式。
+
  fatal: bad default revision 'HEAD'
  
====LCD接口====
+
==== 恢复到上一版本 ====
  
<center>[[image:3399rgb.png|213 × 104px]]</center>
+
  首先,使用git log命令查询修改记录:
  
x3399开发板默认留有一个30PIN的DSI接口,通过软排线将MIPI相关信号连接到LCD控制板上,进而控制LCD。同时,这个30PIN接口的第12管脚为PWM脚,用于控制LCD的背光,通过PWM实现多级背光亮度调节。同时,它上面还引出了用于电容触摸的I2C以及中断,唤醒信号。
+
<pre><nowiki>lqm@lqm:~/android_gingerbread$ git log
  
默认RK3399支持双MIPI LCD控制输出功能,它能驱动2K甚至4K屏。在x3399上,同样预留了一个双屏MIPI接口如下:
+
commit d5fd5223fd354c0a9c63057a7b8fe9a6870bdd7e
  
<center>[[image:3399mipi.png|342 × 84px]]</center>
+
Author: lqm &lt;lqm@lqm.(none)&gt;
  
当需要驱动双MIPI接口的屏时,接该接口即可。另外,x3399开发板上还预留了一路EDP接口,通过它同样可以驱动高分辨率的屏。
+
Date:  Wed Dec 14 10:34:34 2011 +0800 </nowiki></pre>
  
<center>[[image:3399edp.png|118 × 224px]]</center>
+
  删除不必要的处理器文件
  
====后备电池====
+
<pre><nowiki>commit 1af4b99d582bf33cc2f37a0529554426b30a168d
  
<center>[[image:3399battery.png|186 × 225px]]</center>
+
Author: lqm &lt;lqm@lqm.(none)&gt;
  
后备电池用于保证断电后RTC仍然能够工作,确保系统时间不丢失。
+
Date:  Wed Dec 14 10:14:39 2011 +0800 </nowiki></pre>
  
====蜂鸣器====
+
初始化工程
 +
  lqm@lqm:~/android_gingerbread$
  
<center>[[image:3399beep.png|141 × 160px]]</center>
+
  再使用git reset指令恢复到某个提交状态:
  
该蜂鸣器为有源蜂鸣器,有直流电时会鸣叫,通过三极管控制电源的导通与截止。硬件电路通过一路PWM控制三极管,即可以用于PWM测试,也可以用于适当场合的声音提示。
+
  lqm@lqm:~/android_gingerbread$ git reset --hard 1af4b
  
====红外一体化接收头====
+
Checking out files: 100% (12517/12517), done.
  
<center>[[image:3399infrared.png|130 × 90px]]</center>
+
  HEAD is now at 1af4b99 初始化工程
  
  这里采用HS0038B一体化接收头,它具有灵敏度高,使用方便等优点。利用它我们可以实现无线遥控,将x3399开发板作为一个高性能的四核机顶盒。
+
  lqm@lqm:~/android_gingerbread$
  
==== 光纤接口====
+
==== 修改源码后,提交修改记录 ====
  
<center>[[image:3399fibre-optical.png|180 × 129px]]</center>
+
  修改了某些文件,需要提交到服务器,具体操作如下:
  
X3399开发板上的声音不仅能通过喇叭、耳机、HDMI输出,还能通过光纤输出, 最真实的声音还原出来。通过光纤连接线连接 带有光纤输入接口的高保真音箱,即可聆听最真实的声音。
+
第一步:使用git pull 服务器仓库提交 本地
  
====SIM卡接口====
+
http://x.9tripod.com/wiki/zh/images/c/c6/Git-pull.png
  
<center>[[image:3399sim.png|274 × 190px]]</center>
+
提示出错,有两种解决办法,第一种,先将drivers/mtd/nand/nand_base.c备份,比如:mv drivers/mtd/nand/nand_base.c drivers/mtd/nand<nowiki>/nand_base.c.ba</nowiki>k
  
X3399开发板的背面有一个PCIE座 它用于接PCIE接口的3G、4G通讯模块。当 在使用3G和4G时,需要在这个SIM卡槽内插入对应的手机卡
+
然后再执行git pull。第二种,执行git checkout –f ,然 后再执行git pull
  
====WIFI蓝牙模块====
+
正常的操作如下:
 +
http://x.9tripod.com/wiki/zh/images/9/9f/Git-pull-ok.png
  
<center>[[image:3399wifi-bluetooth.jpg|245 × 254px]]</center>
+
  上面的提示文件为服务器上已经更新的文件,执行git pull后,已经同步到本地了。
  
X3399 开发板标 配具有2.4G和5G双频WIFI的SDIO 口WIFI/BT模块 ,上 图左侧和 侧为模块对应的PCB天线
+
第二步:使用git status,查看修改的文件:
 +
 
 +
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:54的最新版本

目录

android开发平台的搭建

Android自从升级到4.0以来,相比之前的版本工程更加庞大,编译整套源码对PC机硬件要求很高,因此不建议采用虚拟机编译,强烈建议直接安装Linux操作系统,充分发挥PC机的性能。我们这里以ubuntu14.04 64位系统机器为例讲解,如果您是新手,建议与我们版本保持一致。

使用U盘安装ubuntu

使用U盘安装ubuntu系统简单快捷,强烈推荐使用此方法安装。

安装工具:

安装方法:

第一步:下载好ubuntu的ISO文件,和lili usb creater这个软件并安装。

第二步:插入usb,并打开usb creater 这个软件,根据软件提示设置,在步骤1中选择安装盘,找到识别出的U盘;在步骤2中找到下载的ubuntu映像文件;步骤3默认,步骤4中选中隐藏优盘上创建的文件,使用FAT32格式化U盘;最后在步骤5中点击闪电图标开始安装,直到提示优盘已安装完成为止。

USB-MemoryToUbuntu.png

第三步:重启电脑,开机时,看清屏幕下方的提示,进入BIOS设置菜单,选择U盘启动。一般台式机是按DEL键,笔记本有些是按F2,有些按F10进入。设置完成后保存退出。

第四步:再次重启系统,这时已经可以看到ubuntu的安装界面了,选择中文,继续;

第五步:选择 install (您也可以选择live mode 可以体验下系统),继续;

第六步:也选择中文,点击继续:再继续;

第七步:配置网络,可以安装时升级,也可以不升级,等安装完系统后再手动升级;

第八步:第一个选项是把以前的系统升级到ubuntu14.04,如果你只要单系统的可以选择第一项,第二项是升级到ubuntu14.04并把其他的资料删除掉,第三项是我们用的最多的,比较灵活,选something else,继续,在这里我分出了两个区给ubuntu,一个 /  和 一个 /home ,分区可以新建,可以对它格式化,具体根据需要选择;

第九步:这是设置区域,选择上海就行了;

第十步:选择键盘布局。选中国;

第十一步:选择用户名和密码,到此配置完毕,点击继续直接安装,喝一会儿咖啡,待安装完毕,重启之后,就可以看到美丽的ubuntu世界了。

设置XP为开机默认启动

ubuntu安装后每次开机都是默认进入ubuntu系统的,对于以windows为主的朋友,每次开机都要守在画面切换到XP启动,可见十分麻烦,通过下面,你可以设置让你的XP系统为第一启动。

修改/boot/grub/grub.cfg文件,可以看到最末尾有如下语句:

<nowiki>
 menuentry "Microsoft Windows XP Professional (on /dev/sda1)" {

    insmod part_msdos

    insmod ntfs

    set root='(hd0,msdos1)'

    search --no-floppy --fs-uuid --set 0E48A65048A6367D

    drivemap -s (hd0) ${root}

    chainloader +1

}

### END /etc/grub.d/30_os-prober ###
<nowiki>

仔细阅读该文件,发现有不少menuentry,这些正是对应了开机启动时的选择项,将上面语句放在第一个menuentry的前面,这样Windows XP就为默认的启动系统了。修改后的部分代码如下:

### BEGIN /etc/grub.d/05_debian_theme ###

set menu_color_normal=white/black

set menu_color_highlight=black/light-gray

### END /etc/grub.d/05_debian_theme ###



### BEGIN /etc/grub.d/30_os-prober ###

menuentry "Microsoft Windows XP Professional (on /dev/sda1)" {

    insmod part_msdos

    insmod ntfs

    set root='(hd0,msdos1)'

    search --no-floppy --fs-uuid --set 0E48A65048A6367D

    drivemap -s (hd0) ${root}

    chainloader +1

}

### END /etc/grub.d/30_os-prober ###



### BEGIN /etc/grub.d/10_linux ###

menuentry 'Ubuntu, with Linux 2.6.35-30-generic' --class ubuntu --class gnu-linux --class gnu --class os {

    recordfail

    insmod part_msdos

    insmod ext2

    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

    initrd    /boot/initrd.img-2.6.35-30-generic

}

ubuntu下磁盘格式化

在做开发时,经常会把SD卡格式化为msdos,ext3等格式。这时,放在windows下将无法格式化,只能借助于Linux。

在Linux下使用fdisk和mkfs两个工具实现SD卡的格式化。首先,使用fdisk指令删除里面的所有分区,步骤为:

fdisk  /dev/sdb

d

w


每输一次d,输入一次分区的序号,直到删完,再按w写入,完成分区的删除。再按n,回车,回车,新建一个分区。之后再使用mkfs工具格式化为指定格式的盘,如格式化为fat32格式,则执行如下指令:

mkfs  –t  vfat  /dev/sdb

Ubuntu下通过SSH远程登录服务器

第一步:在服务器上安装ssh的服务器端。

 apt-get install openssh-server 

第二步:启动ssh-server。

 service ssh restart 

第三步:确认ssh-server已经正常工作。

 netstat -tlp 

有如下打印信息:

 tcp 0 0 *:ssh *:* LISTEN - 

看到上面这一行输出说明ssh-server已经在运行了。

第四步:在Ubuntu客户端通过ssh登录服务器。假设服务器的IP地址是172.18.0.198,登录的用户名是liuqiming。

 $ ssh -l liuqiming 172.18.0.198 

接下来会提示输入密码,然后就能成功登录到服务器上了。可以通过资源管理器浏览的方式登录服务器,点击位置->连接到服务器,服务器类型选择ssh,服务器一栏填入服务器的IP地址,点击连接即可。

ubuntu下使用邮箱

ubuntu下默认就有邮箱软件,如在使用时发现无法接受或发送邮件,在发送电子邮件->身份验证点击检查的类型,再选择没有划斜线的就好了。

ubuntu下安装五笔

使用如下指令:

 sudo apt-get install ibus-tables-wubi 

然后在系统->首选项->键盘输入法的输入法中选择WUBI,添加进去即可。

ubuntu下安装chrome浏览器

ubuntu10.10默认安装的火狐浏览器,如果用户喜欢该浏览器,可以跳过此节。google出了基于linux的浏览器chrome,用户可以使用如下方式安装。在网上下载安装源文件,http://tools.google.com/chrome/,也可以从光盘中获得,双击即可安装。

ubuntu下安装VIM

使用如下命令安装即可:

 sudo apt-get install vim 

ubuntu打开WINDOWS下记事本乱码问题

出现这种情况的原因是,gedit 使用一个编码匹配列表,只有在这个列表中的编码才会进行匹配,不在这个列表中的编码将显示为乱码。您要做的就是将 GB18030 加入这个匹配列表。

您可以遵循以下步骤,使您的gedit正确显示中文编码文件。

1. 终端中键入“gconf-editor”,并按下回车键,打开“配置编辑器”。

2. 展开左边的树节点,找到 /apps/gedit-2/preferences/encodings 节点并单击它。

3. 双击右边的 auto_detected 键,打开“编辑键”对话框。

4. 单击列表右边的“添加”按钮,输入“GB18030”,单击确定按钮。

5. 列表的最底部新增加了一个“GB18030”。单击右边的向上,将“GB18030”放在第二位;

6. 单击确定按钮,关闭配置编辑器。

现在,gedit 应该能够顺利打开 GB18030 编码的文本文件了。如果不放心,可以再增加GBK、GB2312编码。

ubuntu下安装源码比较工具

ubuntu下源码比较工具很多,比较常见的是meld工具,使用如下指令安装:

sudo apt-get install meld 

安装完成后,可以在应用程序->编程中打开。

ubuntu下安装串口终端minicom

使用如下指令安装:

sudo apt-get install minicom 

安装完成后,需要设置minicom。如果直接使用串口,通常设置为ttyS0,如果使用USB转串口,通常设置为ttyUSB0。输入如下指令:

 sudo minicom -s 

选择Serial port setup,选择A,输入正确的串口终端,选择E,输入115200 8N1,选择F和G,都设置为No,不使用流控,再回车,选择Save setup as dfl。注意,只有root用户才有权限保存参数。笔记本用户通常使用的USB转串口延长线,目前市面上大多都是pl2303方案,插上USB转串口延长线后,输入如下命令查询驱动是否正常加载:

lsmod |grep pl2303 

正常加载时会提示如下信息:

lqm@lqm:~$ lsmod |grep pl2303

pl2303                 11756  1 

usbserial              33100  3 pl2303 

再使用如下命令查询系统的一些信息:

 dmesg | tail -f 

正常情况下会出现如下提示:

lqm@lqm:~$ dmesg |tail -f

<nowiki>[  383.093851] ERROR! H2M_MAILBOX still hold by MCU. command fail

[  383.148849] ---> RTMPFreeTxRxRingMemory

[  383.148903] <--- RTMPFreeTxRxRingMemory

[  383.180580]  RTUSB disconnect successfully

[  387.762330] usb 2-4: USB disconnect, address 3

[  387.762566] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0

[  387.762601] pl2303 2-4:1.0: device disconnected

[  392.164589] usb 2-4: new full speed USB device using ohci_hcd and address 5

[  392.379898] pl2303 2-4:1.0: pl2303 converter detected

[  392.412998] usb 2-4: pl2303 converter now attached to ttyUSB0</nowiki>

表示串口设备名称为ttyUSB0。有时会提示如下错误:

lqm@lqm:~$ dmesg | tail -f

<nowiki>[  408.910351] 0x1300 = 00073200

[  413.945752] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1177

[  419.047006] ===>rt_ioctl_giwscan. 7(7) BSS returned, data->length = 1067

[  419.047302] ==>rt_ioctl_siwfreq::SIOCSIWFREQ[cmd=0x8b04] (Channel=1)

[  419.392535] wlan0: no IPv6 routers present

[  433.902136] ===>rt_ioctl_giwscan. 6(6) BSS returned, data->length = 960

[  473.902907] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1271

[  533.900777] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1200

[  613.904091] ===>rt_ioctl_giwscan. 9(9) BSS returned, data->length = 1435

[  713.904199] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1263</nowiki>

一般情况下重插拨一次USB转串口线即可。

ubuntu卡死的解决办法

ubuntu系统有时也会像windows系统一样,卡死不动。这时除了复位系统,我们也可以尝试如下方法:

一:按住ctrl+alt+F2进入tty2;

二:查看进程:

ps -e 

三:kill掉相关进程

四:再按住alt+F7返回图形界面

Android开发工具

代码编辑工具

在windows下开发时,很多人都习惯使用source insight,但是source insight并没有linux版本,而且自从3.5版本之后,就再也没有更新了。

在linux下,同样也有很多优秀的代码编辑软件,如Emacs、KVIM、Arachnophilia、Bluefish、Komodo Edit、NEdit、Gedit、Kate、Quanta Plus等等。这里介绍两款比较优秀的代码编辑软件,slickedit和eclipse。

slickedit

安装步骤如下:

第一步:解压se_14000202_linux_full.tar.gz:

tar -zxvf <nowiki>se_14000202_linux_full.tar.gz</nowiki>

第二步:进入解压的目录,运行安装程序vsinst。这里要加上sudo,增加读写访问权限:

 sudo ./vsinst 

第三步:会弹出安装信息,按住回车不放,直到弹出如下提示:

<nowiki>Do you agree to the above license terms?[yes or no] </nowiki>
输入
 yes 

第四步:弹出如下信息:

<nowiki>Install directory [/opt/slickedit]: </nowiki>

这里提示输入安装路径,默认按回车即可

第五步:提示如下信息:

<nowiki>Directory /opt/slickedit/ does not exist. Create [Y]? </nowiki>

输入Y,回车, 程序开始安装。

第六步:安装过程中会弹出一个SlickEdit License Manager的对话框,点退出

再弹出一个对话框,点
OK 

第七步:这时会提示:

INSTALLATION SUCCESSFULLY COMPLETED

1.Type "/opt/slickedit/bin/vs" to run SlickEdit.

2.You may want to add "/opt/slickedit/bin/" to your users' PATH.

第八步:退回原存放安装文件的目录,解压破解文件

<nowiki>slickedit2009-14.0.2.2-linux-cracked.tar.gz:

tar -xvf slickedit2009-14.0.2.2-linux-cracked.tar.gz</nowiki>

将解压出的破解文件VS拷备到/opt/slickedit/bin目录下:

sudo cp vs /opt/slickedit/bin 

第九步:在/opt/slickedit/bin目录下,执行./vs命令打开slickedit软件,看看是否大功告成?以下是执行命令:

cd /

./opt/slickedit/bin/vs 

第十步:启动方式

可以在 [终端] 中 ./vs 启动 ,也可以自己创建一个起动器。

cd /opt/slickedit/bitmaps 

找到图标文件,slickedit 2010下我选择了vse_profile_256.bmp

$ sudo cp <nowiki>vse_profile_256.bmp /usr/share/icons </nowiki>

一般把图标都放在/usr/share/icons下

$ cd /usr/share/applications 

$ sudo gedit <nowiki>slickedit.desktop </nowiki>

输入如下语句:

<nowiki>[Desktop Entry]

Name=Slickedit

Comment=Slickedit

Exec=/opt/slickedit/bin/vs

Icon=/usr/share/icons/vse_profile_256.bmp

Terminal=false

Type=Application

Categories=Development;

StartupNotify=true </nowiki>

这时,在应用程序->编程中,就能找到slickedit的图标了。

第十一步:如果你实在是用烦了这个软件,那就干掉他吧!进入/opt目录,输入如下指令:

rm -rf slickedit 

从此让他滚得越远越好!

附:slickedit行号显示:

tool->options->Languages->Application Languages->C/C++->View->Line numbers 

eclipse

在ubuntu下安装eclipse

第一步:进入如下网站下载eclipse:

http://www.eclipse.org/

选择Eclipse IDE for Java Developers,Linux 32 Bit或Linux 64 Bit根据自己的机器而定;

第二步:将下载的文件解压到用户目录:

cp <nowiki>eclipse-java-indigo-SR1-linux-gtk.tar.gz ~/

cd ~

tar xf eclipse-java-indigo-SR1-linux-gtk.tar.gz</nowiki>

第三步:创建启动图标:

sudo cp <nowiki>icon.xpm /usr/share/icons/eclipse.xpm

sudo gedit /usr/share/applications/eclipse.desktop </nowiki>

输入如下语句:

<nowiki>[Desktop Entry]

Name=eclipse

Comment=eclipse

Exec=/home/lqm/eclipse/eclipse

Icon=/usr/share/icons/eclipse.xpm

Terminal=false

Type=Application

Categories=Development;

StartupNotify=true  </nowiki>

这时,在应用程序->编程中,就能找到eclipse图标了,点击即可启动eclipse.

第四步:安装CDT插件

安装eclipse后,还不能建立C/C++工程,需安装插件。进入官网下载:

http://www.eclipse.org/downloads/download.php?file=/tools/cdt

解压下载的文件cdt-master-8.0.1.zip,将解压出来的plugins和features目录拷贝到eclipse安装目录,直接合并即可完成安装。

使用eclipse新建一个工程

第一步:打开eclipse,首次打开时,会提示选择工作路径,建立自己的路径,确定即可;

第二步:新建一个工程。点击

 File->New->Project,

选择

 C/C++->C Project,

点击

 Next,

在Project name一栏输入工程名称,如xboot,在Project name下面有一个Use default location的选择框,去掉前面的勾, 点击

 Browse,

指向我们需要修改的文件的目录。

在Project type中选择一个工程类型,如Shared Library->Empty Project,在Toolchains中选择Cross GCC,再点击Next,在Select Configurations中选择配置类型,如Release,点击Finish完成。

第三步:这时在Project Explorer中有xboot的目录,右击xboot,点击Import,找到General->File System,双击,弹出Import对话框,在From directory中找到需要加载的文件的目录,点击Select All,将把加载的目录的所有类型文件添加到工程中,点击Finish按钮,提示是否覆盖.cproject,点击Yes To All,这时我们需要编辑的文件就已经全加载到工程中了。

adb工具

安装adb工具

网上下载最新的SDK,下载地址为:

http://developer.android.com/sdk/index.html

对于WINDOWS系统,需下载installer_r12-windows.exe,如下图所示:

Android-sdk-Window.png

如果PC机上没有安装JDK,会提示需要先安装,需从java官网下载,如jdk-6u25-windows-i586.exe,不同的版本名称不一样。安装完JDK后,再安装SDK,默认会装在C盘,建议安装在D盘,这时adb工具在下面的路径:

 D:\Program Files\Android\android-sdk\platform-tools 

修改系统环境变量,找到Path环境变量,在前面添加

 D:\Program Files\Android\android-sdk\platform-tools;

注意一定要加一个分号隔开。然后在WINDOWS的CMD命令行中输入adb,将会弹出adb的一些参数。如果出现”adb不是内部或外部命令的错误”,表示系统没有找到adb,将上面目录中的adb.exe和AdbWinApi.dll拷贝到C:\WINDOWS\system32中即可。

查看设备的连接状态

开发板上电,进入 setting,选择“ developer options”,勾选“ USB debugging”进入WINDOWS下的CMD命令行,输入如下命令验证开发板是否连接:

adb  devices 

显示下面内容表示成功连接:

Adb-device.png

进入adb shell

使用如下命令进入开发板终端:

adb  shell 

如下图所示:

Adb-shell.png

输入exit退回DOS操作界面。注意,有时候,执行adb devices命令时,会提示error: more than one device and emulator,很有可能是播放了USB设备造成的。这时已经无法再通过adb传输数据,解决的办法很简单,如果是使用windows,直接在进程中干掉adb.exe,再启动adb即可。

串口工具secureCRT

安装secureCRT工具,在计算机设备管理器中找到COM口号,点击“快速连接”,如下图:

SecureCRT.png

协议选择serial(我的设备是COM2),其他选项按照下图所示选择,右侧三个流控制选项不能勾选!

SecureCRT-set.png

接下来用USB转串口线接到开发板的调试串口与PC即可看到调试串口打印的log信息。

Usb-serial.png

Usb-serial-log.png

安装android源码包

安装android源码依赖包

说明:本文档所有开发全部基于ubuntu14.04 64位系统,后续不再声明。

使用如下命令安装所需的软件包(安装前使用
sudo apt-get update 
获得一下最近的软件包的列表):
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 

很可能个别软件包会安装失败,比如sun-java6-jdk,这时需要我们手动来安装。下面是在ubuntu下手动安装jdk1.6的详细步骤:

第一步:在官网下载最新的jdk1.6的安装源文件jdk-6u27-linux-i586.bin,下载地址为:

http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jdk-6u27-oth-JPR

第二步:将下载的文件复制到/usr/lib/jvm目录,执行如下命令安装:

chmod +x <nowiki>jdk-6u27-linux-i586.bin

sudo ./jdk-6u27-linux-i586.bin </nowiki>

第三步:修改环境变量:

sudo gedit /etc/profile

在最末尾加入如下语句:

<nowiki>#set java environment

JAVA_HOME=/usr/lib/jvm/jdk1.6.0_27

export JRE_HOME=/usr/lib/jvm/jdk1.6.0_27/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH</nowiki>

第四步:重启系统

第五步:查看当前java安装版本:

root@lqm:/usr/lib/jvm# java -version

java version "1.6.0_27"

Java(TM) SE Runtime Environment (build 1.6.0_27-b07)

Java HotSpot(TM) Server VM (build 20.2-b06, mixed mode)

root@lqm:/usr/lib/jvm# 

到此,jdk1.6成功安装。

注意,如果安装了jdk1.5和1.6,很有可能查询版本时,仍然是1.5的,执行如下指令:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_27/bin/java 255

sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_27/bin/javac 255 

这两条指令用于创建符号链接。其中,/usr/bin/java 是不用改动的,为你的原有的jdk路径,/usr/lib/jvm/jdk1.6.0_27/bin/java这个是jdk1.6的java路径255是优先级。

再执行如下命令:

sudo update-alternatives --config java

sudo update-alternatives --config javac 

弹出如下对话框:

root@lqm:/usr/local# update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java). 

  选择       路径                                    优先级  状态

<nowiki>------------------------------------------------------------

* 0            /usr/lib/jvm/jdk1.6.0_27/bin/java          255       自动模式

  1            /usr/lib/jvm/java-1.5.0-sun/jre/bin/java   53        手动模式

  2            /usr/lib/jvm/jdk1.6.0_27/bin/java          255       手动模式 </nowiki>

要维持当前值[*]请按回车键,或者键入选择的编号。这里选择我们需要使用的jdk 版本,回车即可。

说明:jdk1.6也可以使用如下方法安装:

手动修改下载源,指令如下:

cd /etc/apt

cp <nowiki>sources.list sources.list.bak

vim sources.list  </nowiki>

在最末行添加如下语句:

 deb <nowiki>http://archive.canonical.com/ubuntu maverick partner </nowiki>

然后更新源:

 apt-get update 

再安装java6:

apt-get install sun-java6-jdk 

安装交叉编译工具链

我们已经将交叉编译工具链集成到源码包中,无需再手动安装。交叉编译工具链路径:

Sourcetree/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8 

安装64位系统必要的一些补丁包

 apt-get  install  lsb-core  libc6-dev-i386  g++-multilib  lib32z1-dev  lib32ncurses5-dev 

指定GCC交叉编译器

在ubuntu系统上安装最新的GCC交叉编译器时,版本已经超过4.4了,使用如下指令可查询GCC的版本:

gcc –version 

可能出现的界面如下:

terry@ubuntu-server:~$ gcc --version  

gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 

Copyright © 2011 Free Software Foundation, Inc. 

terry@ubuntu-server:~$ 

上面显示4.6.3版本,默认我们给出的包,在4.6.3上编译会提示一些错误,都是新的GCC引出的错误,网上都有解决办法,如果不想修改这些错误,可将GCC版本降至4.4即可。解决办法 :

sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib 

装完后,开始降级gcc ,这不会影响系统,仅仅是改个链接而已,不喜欢的话改回来即可。

cd /usr/bin

sudo mv gcc <nowiki>gcc.bk

sudo ln -s gcc-4.4 gcc

sudo mv g++ g++.bk

sudo ln -s g++-4.4 g++ </nowiki>

安装android源码包

从网盘中拷贝android源码包,放在自己的用户名目录,光盘中存放着android4.4的源码包,其名称为x3288_lollipop_v10.tar.bz2。注意最好不要放在文件系统的根目录,这样会出现管理权限问题。

示例方法:在用户权限下执行如下命令:

cp  yourcdromdir/source/ <nowiki>x3288_lollipop_v10.tar.bz2  ~/

cd 

tar  xvf  x3288_lollipop_v10.tar.bz2 </nowiki>

这时,整个android文件系统全部都放在了当前解压的目录中。至此,android源码包安装完成。

说明:源码包名称可能会因发布日期等有所不同,具体以网盘中实际名称为准。

android脚本分析配置

源码编译脚本分析

说明:各种版本的源码编译脚本大同小异,原理完全相同,具体脚本以相关源码包中的为准,这里仅用来分析其实现机制。

编译脚本mk内容及注释如下:

<nowiki>#!/bin/bash

#

# Description    : Android Build Script.

# Authors    : lqm www.9tripod.com

# Version    : 1.0

# Notes        : None

#



#

# JAVA PATH

#

export PATH=/usr/lib/jvm/jdk1.6.0_45/bin:$PATH



#

# Some Directories

#

BS_DIR_TOP=$(cd `dirname $0` ; pwd)

BS_DIR_RELEASE=${BS_DIR_TOP}/out/release

BS_DIR_UBOOT=${BS_DIR_TOP}/uboot

BS_DIR_KERNEL=${BS_DIR_TOP}/kernel



#

# Target Config

#指定uboot,内核以及文件系统配置文件

BS_CONFIG_BOOTLOADER_UBOOT=x3288_config

BS_CONFIG_KERNEL=x3288_defconfig

BS_CONFIG_FILESYSTEM=PRODUCT-rk3288-eng



# 在编译前,事先设置一些编译环境,保证准确可靠的编译

setup_environment()

{

    LANG=C

    cd ${BS_DIR_TOP};



    PATH=${BS_DIR_TOP}/out/host/linux-x86/bin:$PATH;



    mkdir -p ${BS_DIR_RELEASE} || return 1

}



# 编译 uboot,编译完后,自动将 bootloader.bin 拷贝到 out/release 目录

build_bootloader_uboot()

{

    # Compiler uboot

    cd ${BS_DIR_UBOOT} || return 1

    make distclean || return 1

    make ${BS_CONFIG_BOOTLOADER_UBOOT} || return 1

    make -j${threads} || return 1



    # Copy bootloader to release directory

    cp -v ${BS_DIR_UBOOT}/RK3288UbootLoader_V2.19.09.bin ${BS_DIR_RELEASE}



    echo "^_^ uboot path: ${BS_DIR_RELEASE}/RK3288UbootLoader_V2.19.09.bin"

    return 0

}



# 编译内核,编译完成后,会自动将内核映像 kernel.img & resource.img拷贝到 out/release 目#录

build_kernel()

{

    #export PATH=${BS_DIR_UBOOT}/tools:$PATH 

    # Compiler kernel

    cd ${BS_DIR_KERNEL} || return 1

    make ${BS_CONFIG_KERNEL} return 1

    make x3288.img -j${threads} || return 1



    # Copy kernel.img & resource.img to release directory

    cp -v ${BS_DIR_KERNEL}/kernel.img ${BS_DIR_RELEASE}

    cp -v ${BS_DIR_KERNEL}/resource.img ${BS_DIR_RELEASE}



    return 0

}

# 编译 android 文件系统

build_system()

{

    cd ${BS_DIR_TOP} || return 1

    source build/envsetup.sh || return 1

    make -j${threads} ${BS_CONFIG_FILESYSTEM} || return 1



    # create boot.img

    echo -n "create boot.img without kernel... "

    [ -d $OUT/root ] && \

    mkbootfs $OUT/root | minigzip > $OUT/ramdisk.img && \

        truncate -s "%4" $OUT/ramdisk.img && \

    rkst/mkkrnlimg $OUT/ramdisk.img $BS_DIR_RELEASE/boot.img >/dev/null

    echo "done."



    # create recovery.img

    echo -n "create recovery.img with kernel and with out resource... "

    [ -d $OUT/recovery/root ] && \

    mkbootfs $OUT/recovery/root | minigzip > $OUT/ramdisk-recovery.img && \

        truncate -s "%4" $OUT/ramdisk-recovery.img && \

    mkbootimg --kernel $OUT/kernel --ramdisk $OUT/ramdisk-recovery.img --output $OUT/recovery.img && \

    cp -a $OUT/recovery.img $BS_DIR_RELEASE/

    echo "done."



    # create misc.img

    echo -n "create misc.img.... "

    cp -a rkst/Image/misc.img $BS_DIR_RELEASE/misc.img

    cp -a rkst/Image/pcba_small_misc.img $BS_DIR_RELEASE/pcba_small_misc.img

    cp -a rkst/Image/pcba_whole_misc.img $BS_DIR_RELEASE/pcba_whole_misc.img

    echo "done."



    # create system.img

    if [ -d $OUT/system ]

    then

        echo -n "create system.img... "

        system_size=`ls -l $OUT/system.img | awk '{print $5;}'`

        [ $system_size -gt "0" ] || { echo "Please make first!!!" && exit 1; }

        MAKE_EXT4FS_ARGS=" -L system -S $OUT/root/file_contexts -a system $BS_DIR_RELEASE/system.img $OUT/system"

        ok=0

        while [ "$ok" = "0" ]; do

            make_ext4fs -l $system_size $MAKE_EXT4FS_ARGS >/dev/null 2>&1 &&

            tune2fs -c -1 -i 0 $BS_DIR_RELEASE/system.img >/dev/null 2>&1 &&

            ok=1 || system_size=$(($system_size + 5242880))

        done

        e2fsck -fyD $BS_DIR_RELEASE/system.img >/dev/null 2>&1 || true

        echo "done."

    fi



    chmod a+r -R $BS_DIR_RELEASE/



    return 0

}



threads=1

uboot=no

kernel=no

system=no



if [ -z $1 ]; then

    uboot=yes

    kernel=yes

    system=yes

fi



while [ "$1" ]; do

    case "$1" in

    -j=*)

        x=$1

        threads=${x#-j=}

        ;;

    -u|--uboot)

        uboot=yes

        ;;

    -k|--kernel)

            kernel=yes

        ;;

    -s|--system)

        system=yes

        ;;

    -a|--all)

        uboot=yes

        kernel=yes

        system=yes

        ;;

    -h|--help)

        cat >&2 <<EOF

Usage: build.sh [OPTION]

Build script for compile the source of telechips project.



  -j=n                 using n threads when building source project (example: -j=16)

  -u, --uboot          build bootloader uboot from source

  -k, --kernel         build kernel from source

  -s, --system         build android file system from source

  -a, --all            build all, include anything

  -h, --help           display this help and exit

EOF

        exit 0

        ;;

    *)

        echo "build.sh: Unrecognised option $1" >&2

        exit 1

        ;;

    esac

    shift

done



setup_environment || exit 1



if [ "${uboot}" = yes ]; then

    build_bootloader_uboot || exit 1

fi



if [ "${kernel}" = yes ]; then

    build_kernel || exit 1

fi



if [ "${system}" = yes ]; then

    build_system || exit 1

fi



exit 0  </nowiki>


配置使用MIPI屏

在kernel/arch/arm/boot/dts目录下存放了多个已经调试好的液晶屏的配置文件,7寸RGB屏的配置文件为

 x3288_lcd070hdr.dtsi,

7寸MIPI屏的配置文件为

 x3288_lcd070hdm.dtsi。

 kernel/arch/arm/boot/dts/x3288.dts

中选择配置使用的液晶模组即可,如需要使用7寸MIPI屏,示例代码如下:

//#include "<nowiki>x3288_lcd070hdr.dtsi"

#include "x3288_lcd070hdm.dtsi" </nowiki>

编译android源码包

说明:编译映像时一定要使用普通权限编译。编译完成后,生成的映像文件RK3288UbootLoader_V2.19.09.bin,boot.img, system.img, kernel.img, misc.img, recovery.img, resource.img,update.img。

编译uboot

在android源码目录下执行如下命令编译uboot,编译完成后映像文件RK3288UbootLoader_V2.30.10.bin(因版本不同,名称不一定相同)会释放到out/release目录。

./mk     -u 

编译android内核

在android源码目录下执行如下命令编译android内核,编译完成后映像文件kernel.img、resource.img会释放到out/release目录。

./mk     -k 

编译android文件系统

在android源码目录下执行如下命令编译android映像文件,编译完成后映像文件会释放到out/release目录。

./mk     -s 

编译完文件系统,在out/release目录下会生成如下文件:

  • RK3288UbootLoader_V2.19.09.bin: uboot映像文件
  • Kernel.img:内核映像
  • Resource.img:资源映像,内含开机图片和内核的设备树信息。
  • Boot.img: Android的初始文件映像,负责初始化并加载system分区。
  • System.img:android的system分区映像,ext4文件格式系统。
  • Recovery.img:急救模式映像。
  • Misc.img:分区映像,负责启动模式切换和急救模式的参数传递。
  • update.img:整个升级文件的单一映像,包括了uboot,内核,文件系统等。

查看编译帮助

执行如下指令可查询mk脚本使用方法:

./mk  -h 


烧写android映像文件

Windows系统映像烧写

RKTool驱动安装

解压RKTools.rar,工具路径:
SDK\RKTools\windows\Release_DriverAssitant
打开“DriverInstall.exe”,点击“驱动安装”,提示安装驱动成功即可。

Rktools-driver.png

Rktool-driver-ok.png

注意事项:

1.目前支持的操作系统包括:XP,Win7_32,Win7_64,Win8_32,Win8_64。

2.XP系统在驱动安装完后,若还提示“发现新设备”, 安装驱动时选择“自动安装”。

3.若之前已经安装过老版本驱动,请先点击“驱动卸载”后再进行“驱动安装”。

烧录方法一:单个升级固件update.img

生成统一固件update.img

我们已经在mk脚本中集成了生成统一固件的方法,在编译android文件系统时(./mk -s),会自动生成update.img,并释放到out/release目录。

烧录固件update.img

打开

 RKTools\windows\AndroidTool_Release_v2.3\AndroidTool_Release_v2.3\AndroidTool.exe

选择“升级固件”选项卡,点击“固件”,在弹出窗口中选择已经生成的update.img 文件,如下图所示。

Update-fireware.png

Update-fireware1.png

工具配置好后,连接开发板(如下图):

按下RECOVERY键,然后插上microUSB线与5V DC电源线 Update-fireware2.png

烧录工具界面会提示发现一个LOADER设备,然后点击升级,即可开始升级过程(注:如果提示发现一个ADB设备,点击切换按钮切换成LOADER设备即可)。

Update-fireware3.png

Update-fireware4.png

上图为升级完成截图。

烧录方法二:多设备升级固件update.img

该工具适合用户批量刷机,可以同时给多台开发板刷机。

打开路径:

 SDK\RKTools\windows\FactoryTool_v1.33

下的“FactoryTool.exe”,点击“固件”选择update.img,勾选“升级”,点击“启动”,如下图所示:

步骤1:点击固件,选择update.img;

步骤2:点击启动(选择升级按钮);

步骤3:连接开发板USB、DC电源,按下recovery键,对应USB口发现设备,并实现自动升级;然后重复步骤3即可同时升级第二台、第三台设备,升级成功或者失败的设备会在两边的列表中列出,移除成功或者失败的设备后可以继续连接需要升级的设备。

Update-fireware-multi-device.png

Linux系统烧写映像

生成固件update.img

我们已经在mk脚本中集成了生成统一固件的方法,在编译android文件系统时(./mk -s),会自动生成update.img,并释放到out/release目录。

烧录固件update.img

工具路径:

 RKTools\linux\Linux_Upgrade_Tool_v1.2

在升级之前将update.img拷贝到upgrade_tool相同目录下,运行upgrade_tool(需要sudo)

work@ubuntu:~/3288/Linux_Upgrade_Tool_v1.2/cp rockdev<nowiki>/update.img .

work@ubuntu:~/3288/Linux_Upgrade_Tool_v1.2$ sudo ./upgrade_tool  </nowiki>

执行结果如下图,发现设备列表,输入要升级的DevNo(设备号)选择设备 DevNo.png

选择设备后弹出工具使用菜单如下图,左侧是功能描述,右侧是命令语法,升级相关操作都在upgrade command列表下,忘记命令语法可以输入H进行查看,清屏输入CS,退出按Q。

DevNo1.png

  • CD命令: 选择设备, 当执行的命令有包含设备重启操作时, 需重新选择设备,当改变操作设备时需重新选择
  • SD命令:msc切换到rockusb升级模式。 当切换执行成功后, 需要重新选择设备
  • UF命令:升级完整update.img固件,当执行成功后需要重新选择设备
  • UL命令:升级loader功能,当执行成功后需要重新选择设备
  • DI命令:下载单独image镜像到指定扇区,例如升级kernel.img或者system.img都可以直接使用此功能.例如下载kernel.img: DI -k kernel.img parameter //如果之前通过DI下载过parameter,则再下载kernel.img时就可以不用指定最后的parameter参数
  • DB命令:下载boot,在maskrom状态下,可以通过此功能, 让maskrom设备进行Rockusb协议通讯
  • EF命令:擦除整个nandflash
  • LF命令:低格保留块后面区域,只有在loader模式下使用

执行uf update.img 开始更新固件,下图为更新完成截图。

Rockusb>uf  <nowiki>update.img </nowiki>

DevNo2.png

备注:也可通过配置config.ini文件配置升级映像文件,只需输入UF即可升级,请用户自行尝试。

使用upgrade_tool指令烧写映像

上一节我们介绍了通过upgrade_tool烧写统一固件update.img的方法,熟悉三星平台的开发者会发现,这种方法并不是很高效,真正操作起来,它远没有fastboot工具来的迅速。其实,upgrade_tool工具同样支持类似于fastboot的烧写方式。

为了烧写方便,在mk脚本中,默认在编译系统时,已经将烧写工具upgrade_tool拷贝到out/release目录了。

第一步:打开串口终端,并打开minicom,用于适时监控串口调试信息;

第二步:按住RECOVERY键,连接USB OTG线和电源线,这时uboot打印信息将会提示已经进入USB下载模式。如果接通电源后没来得及按住RECOVERY键,在按住RECOVERY键的同时,再按下复位键即可。注意,使用

第二步:打开第二个串口终端,进入out/release目录;

第三步:在out/release目录下敲击如下指令,烧写相应的映像。


sudo upgrade_tool  di  –k  <nowiki>kernel.img(烧写内核)

sudo upgrade_tool  di  –s  system.img(烧写文件系统)

sudo upgrade_tool  di  resource  resource.img(烧写资源文件)

sudo upgrade_tool  di  –r recovery.img(烧写急救文件)

sudo upgrade_tool  ul  RK3288UbootLoader_V2.30.10.bin(烧写bootloader)

sudo upgrade_tool  uf  update.img(烧写统一固件) </nowiki>

使用Rkflashkit烧写映像

rkflashkit 有图形界面,后加了命令行支持,更是好用。


work@ubuntu:~/rktool$ sudo apt-get install build-essential fakeroot

work@ubuntu:~/rktool$ git clone <nowiki>https://github.com/linuxerwang/rkflashkit

work@ubuntu:~/rktool$ cd rkflashkit

work@ubuntu:~/rktool$ ./waf debian

work@ubuntu:~/rktool$ sudo apt-get install python-gtk2

work@ubuntu:~/rktool$ sudo dpkg -i rkflashkit_0.1.4_all.deb  </nowiki>

注意:rkflashkit_0.1.4_all.deb会因版本更新,版本数字可能会有所变化,如果执行失败,执行ls命令查看下即可。

work@ubuntu:~/rktool/$ sudo rkflashkit 

如下是图形界面,在Devices下选择设备,选择要烧写的分区和对应的映像文件,点击Flash image即可。

Rkflashkit.png

该工具也支持命令行,使用help命令查看使用方法

work@ubuntu:~/rktool/rkflashkit$ rkflashkit --help

<nowiki>Usage: <cmd> [args] [<cmd> [args]...] 



part                              List partition

flash @<PARTITION> <IMAGE FILE>   Flash partition with image file

cmp @<PARTITION> <IMAGE FILE>     Compare partition with image file

backup @<PARTITION> <IMAGE FILE>  Backup partition to image file

erase  @<PARTITION>               Erase partition

reboot                            Reboot device



For example, flash device with boot.img and kernel.img, then reboot:



  sudo rkflashkit flash @boot boot.img @kernel.img kernel.img reboot

work@ubuntu:~/rktool/rkflashkit$  </nowiki>

使用TF卡升级固件

功能说明

SD Card Boot功能是主控在上电时,优先从SD卡上查找启动代码,然后加载引导,从而实现特定功能。目前SD Card Boot已经实现两个功能:SD卡升级和SD卡运行。

SD卡升级功能,将SD卡启动代码写到SD卡的保留区,然后将固件拷贝到SD卡可见分区上,主控从SD卡启动时,SD卡启动代码和升级代码将固件升级到本地主存储中,并支持PCBA测试和Demo文件的拷贝。可以完全做到脱离PC机进行固件升级,提高生产效率。

SD卡运行功能,将固件升级到SD卡保留区中,把SD卡当作主存储使用。主控从SD 卡启动时,固件已经存放在SD卡上,有没有本地主存储都可以正常工作。目前主要应用是板卡厂做PCBA测试,而不会破坏flash数据。

软件说明

工具目录有如下文件:

SD_Fireware_Tool.png

SD_Firmware_Tool.exe:制卡工具

Config.ini:配置文件

SDBoot.bin:SDRK2926、RK2928、RK3166和RK3188使用SDBoot.bin支持SD卡升级和启动功能;RK3288使用RK3288Loader_uboot_V2.16.bin及以后版本。

制作前软件配置

编辑config.ini配置文件以下项目设置为TRUE

 * #当值为TRUE时,新卡格式适用3288项目
 * USE_FW_LOADER=TRUE

工具界面如下:

SD_Fireware_Tool-interface.png

制作

注意:制作启动卡会格式化SD卡,用户需要注意备份重要数据,防止误删。

第一步,选择对应的可移动磁盘设备;

第二步,选择功能模式:固件升级、PCBA测试、SD启动;

 * 默认会勾选“固件升级”,即只升级固件。
 * 如果在升级固件前需要做 “PCBA 测试”,则同时勾选“固件升级”、“PCBA测试”。
 * 如果不升级固件,只需要测试PCBA,则单选“PCBA测试”,不选择“固件升级”。
 * “SD启动”会把固件烧写到SD中,所有分区都分配在SD卡上,运行时不会修改内部存储的数据(相当于SD卡做主存储设备)。

注意:SD卡运行模式,对kernel的编译有要求,需要把kernel的SD卡驱动配置去掉,不参与编译。

SD-runMode.png

修改为:

SD-runMode-change.png

第三步,选择对应平台的update.img固件;

第四步(可选),如果需要拷贝demo文件到用户盘根目录,点击选择Demo按钮,选择需要拷贝的文件目录。选择的目录下所有文件会拷贝到SD根目录下的Demo目录中,在SD引导固件升级后,Demo目录下的文件会拷贝到样机用户盘的根目录下。

第五步,点击开始创建即可。













android开发指南

命令终端

将串口连接开发板上调试串口,进入android系统后,会自动进入android终端,如下图所示:

Command.png

播放mp3

android命令行播放mp3

在android的在命令行下,可以使用强大的am指令做很多事情。在android终端输入am,正常情况下会有如下提示信息:

# am

usage: am [subcommand] [options]



    start an Activity: am start [-D] [-W] <INTENT>

        -D: enable debugging

        -W: wait for launch to complete



    start a Service: am startservice <INTENT>



    send a broadcast Intent: am broadcast <INTENT>



    start an Instrumentation: am instrument [flags] <COMPONENT>

        -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)

        -e <NAME><VALUE>: set argument <NAME> to <VALUE>

        -p <FILE>: write profiling data to <FILE>

        -w: wait for instrumentation to finish before returning



    start profiling: am profile <PROCESS> start <FILE>

    stop profiling: am profile <PROCESS> stop



<INTENT> specifications include these flags:

        [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]

        [-c <CATEGORY> [-c <CATEGORY>] ...]

        [-e|--es <EXTRA_KEY><EXTRA_STRING_VALUE> ...]

        [--esn <EXTRA_KEY> ...]

        [--ez <EXTRA_KEY><EXTRA_BOOLEAN_VALUE> ...]

        [-e|--ei <EXTRA_KEY><EXTRA_INT_VALUE> ...]

        [-n <COMPONENT>] [-f <FLAGS>]

        [--grant-read-uri-permission] [--grant-write-uri-permission]

        [--debug-log-resolution]

        [--activity-brought-to-front] [--activity-clear-top]

        [--activity-clear-when-task-reset] [--activity-exclude-from-recents]

        [--activity-launched-from-history] [--activity-multiple-task]

        [--activity-no-animation] [--activity-no-history]

        [--activity-no-user-action] [--activity-previous-is-top]

        [--activity-reorder-to-front] [--activity-reset-task-if-needed]

        [--activity-single-top]

        [--receiver-registered-only] [--receiver-replace-pending]

        [<URI>] </nowiki>

启动的方法为:

<nowiki># am start -n 包(package)名/包名.活动(activity)名称 </nowiki>

启动的方法可以从每个应用的AndroidManifest.xml的文件中得到,以计算器(calculator)为例,

<?xml version="1.0" encoding=""?>



<manifestxmlns:android="<nowiki>http://schemas.android.com/apk/res/android"



package="com.android.calculator2">



<applicationandroid:label="@string/app_name"android:icon="@drawable/icon">



<activity android:name="Calculator"



android:theme="@android:style/Theme.Black">



<intent-filter>



<action android:name="android.intent.action.MAIN" />



<categoryandroid:name="android.intent.category.LAUNCHER"/>



</intent-filter>



</activity>



</application>



</manifest> </nowiki>

由此计算器(calculator)的启动方法为:

<nowiki># am start-ncom.android.calculator2/com.android.calculator2.Calculator</nowiki>

Music的启动方法为:

<nowiki># am start-ncom.android.music/com.android.music.MusicBrowserActivity</nowiki>

这时,屏幕上会有music的播放列表,但是并没有播放。如果需要播放,得执行下面的指令:

am start -n <nowiki>com.android.music/com.android.music.MediaPlaybackActivity -d /mnt/extsd/liangliangxianwang.mp3 </nowiki>

使用android默认音频播放器

确保外置的SD卡中存在mp3文件,点击音乐,播放器会自动识别音频文件,如下图:

Mp3.png

点击相应的音频文件即可播放。播放时界面如下:

Mp3-1.png

播放视频

  android自带视频处理功能,在android应用界面显示为图库。点击图库按钮,会在外置SD卡中自动寻找能够识别的视频和图片文件,如下图:

Mp4.png

点击中间的按钮:

Mp4-1.png

上图中,带有播放符号的即为视频文件,不带的为图片文件。点击带播放符号的文件:

Mp4-2.png

再点击播放按钮:

Mp4-3.png

X3288 android5.1系统还带一款4k视频播放器,播放器会自动关联视频文件,点击需要播放的视频即可播放

Mp4-4.png


Mp4-5.png

如果遇到图库无法支持的视频文件,可以采用第三方播放器如RockPlayer进行播放,如网络上最为流行的rmvb和rm文件。这时,机器俨然成为了一个具有支持rm/rmvb等格式视频的超强mp4了。如对屏幕尺寸有更高要求,可以使用VGA或HDMI方式,直接将视频文件显示到显示器或电视机上。

使用RockPlayer播放视频时,会弹出一个硬解和软解的对话框,如果属于3288硬解码的视频文件,选择硬解模式,否则选择软解模式。如播放rm/rmvb文件,选择软解模式才能播放,如下图所示:

Mp4-6.png

图片浏览

浏览图片时,同样使用上面的图库浏览。点击图库图标,点击要浏览的图片即可浏览。滑动可以浏览下一张图片,如下图所示:

Image-view.png

语言设置

点击设置中的语言和输入法一栏,再点击选择语言,会弹出多种语言,选择需要的语言即可,如下图:

Language.png

使用WIFI上网

X3288开发板自带wifi/BT二合一模组,无需额外USBwifi即可无线上网。启动开发板,点击设置,在Wi-Fi一栏的方框中有个关闭按钮,将他拨到右边,即打开状态,如下图:

Wifi-default.png

再点击Wi-Fi一栏,进入wifi界面,找到属于自己的无线网络信号并点击,输入密码后,点击连接即可上网。

Wifi-default1.png

使用蓝牙传输数据

x3288开发板支持AP6335芯片的WIFI/BT二合一模块。点击设置->蓝牙,将蓝牙开关打开,如下图所示:

Blutooth.png

点击蓝牙,进入设置界面,找到一个支持蓝牙设备的安卓手机,并打开蓝牙,且可被发现。在x3288开发板的蓝牙设置界面的右上脚点击搜索设备,在可用设备一栏中将会显示出所有找到的蓝牙设备。找到需要匹配的蓝牙设备并点击,在开发板上弹出配对请求:

Blutooth1.png

点击配对,同时,在手机端也会弹出类似的画面,也点击配对即可。成功配对后的界面如下:

Blutooth2.png

这时,配对的设备间就可以通过蓝牙共享文件了。点击开发板的图库,找到一张图片并选中: Blutooth3.png

点击右上脚的分享按钮,选择蓝牙,弹出如下界面:

Blutooth4.png

选择配对成功的蓝牙设备,这时在配对设备上将会弹出一个接收文件的对话框,点击接收即可。

使用蓝牙播放音乐

x3288开发板可支持通过蓝牙连接蓝牙音箱,并播放音乐。准备一个蓝牙音箱,并切换到蓝牙模式,进入开发板的蓝牙界面并打开,点击右上脚的搜索设备,将会找到蓝牙音箱,下图中的GS805即是蓝牙音箱:

Blutooth-mp3.png

点击GS805,稍等几秒,将会配对成功,无需任何确认动作。这时,随意在开发板上播放音视频,音乐将会通过蓝牙音箱播放出来。

使用USB鼠标键盘

启动开发板,将USB鼠标或者USB无线鼠标键盘接到USB HOST接口,即可使用鼠标键盘操作android界面了。

APK应用安装

Android系统下有很多种APK的安装方法,这里介绍四种。

使用SD卡安装

将拷贝有APK安装包的SD卡插到开发板,打开开发板的“文件管理”应用程序,界面如下:

SD-APK.png

可以看到,安装包一栏找到了3个安装包。点击进去,会列出安装列表:

点击要安装的APK文件:

SD-APK1.png

依次点击下一步,直到安装完成即可。

使用ApkInstaller安装

使用ApkInstaller安装APK,需要将开发板与PC机同步起来。

第一步:启动开发板,并进入android系统。

第二步:将光盘中的ApkInstaller.rar解压到PC机的任意目录,如D盘;

第三步:双击ApkInstaller.exe应用程序,如下图所示:

Apkinstaller.png

在解压目录下默认有一个名为mVideoPlayer.apk的APK文件,安装软件已经将它列出来了。我们需要将安装的APK软件放在该目录。

第四步:点击安装->开始安装,或者点击快捷方式http://x.9tripod.com/wiki/zh/images/b/b0/Triangle-Shortcuts.png开始安装。安装完成后,界面上会有相应提示。

说明:此方法适合批量安装APK文件。

使用adb工具安装

在上一章节,ApkInstaller.rar的解压目录中已经存在有adb工具了,我们在命令行下进入该目录,执行如下指令安装APK:

adb  install  *.apk 

正常安装的界面如下:

Adb-apk.png

在线安装

用户可以通过91助手,百度应用中心、360手机助手等第三方软件直接在线安装,这里就不详细说明了。

屏幕抓图

使用eclipse抓图

android有很多截图工具,但是很多都需要root权限,在平时做开发时,我们可以使用eclipse自带的插件进行截图,非常的方便。

启动开发板,并进入android系统。使用USB延长线将x3288开发板与PC机连接,第一次连接时会提示需要安装软件,如下图:

Android-driver1.png

选择否,点下一步:

Android-driver2.png

选择自动安装软件,点下一步,直至安装完成。

Android-driver3.png

安装完成之后,打开eclipse软件,如果没有安装,需先安装该软件。然后点击Window->Show view->Devices,如下图:

Eclipse-device.png

确保机器处于开机状态,这时Devices会找到机器的设备号,如下图:

Eclipse-device1.png

点击上图右上脚的摄相头标志,就会弹出要保存的图像,点击save保存即可,如下图所示:

Camera-save.png

使用360手机助手抓图

在PC机上安装360手机助手手,启动开发板,通过USB延长线将开发板连接到PC机的USB口,打开360手机助手,360手机助手将会找到x3288开发板。如果找不到,将USB线拨掉重插,在开发板上会弹出一个授权界面,点击确认即可。正常连接后的360手机助手界面如下:

360-screenshot.png

点击左下脚的截屏按钮即可。

挂载TF卡

系统启动后,会自动挂载右侧卡槽中的TF卡到/mnt/external_sd/目录,如下图所示:

Mount-tf.png


挂载U盘

启动开发板,并进入android系统。插入U盘后,系统会将U盘自动挂载到/mnt/usb_storage*(*表示0到4)目录。

计算器

点击android应用的计算器即可使用计算器功能,如下图所示:

Counter.png

输入法

推荐安装讯飞输入法,测试界面如下:

Xunfei-input.png

浏览器

android默认自带一个浏览器,该浏览器功能已经非常完善了,如果用户仍然觉得不够要求,可以下载安装第三方浏览器,如UC浏览器等。

Brower.png

屏幕旋转

重力传感器已经集成到开发板上,将开发板移动到四周任一方向,界面会随之改变。当然并不是所有应用程序都会随之改变,有部分应用程序不支持屏幕旋转。旋转后示例图片如下:

Screen-rotation.png

Screen-rotation1.png

时间设置

点击android应用中的设置,可以看到有日期和时间一栏,点击进去,选择相应的栏目设置即可。

Date-set.png

拍照摄相

点击android应用中的相机,会进入图像预览模式。点击右下脚的拍照按钮即可拍照,如下图所示:

Shot-picture.png

右下脚可以切换拍照和录像功能。

使用有线以太网上网

将可以正常上网的网线连接到开发板的网口座上,网口座的指示灯会正常闪烁,正常上网界面如下:

Wired-internet.png

优酷

将优酷的APK软件安装到开发板,连接网线就可以看视频了。

Youku.png

播放电视

安装龙龙直播,泰捷视频等网络播放器,插上网线即可播放。

Live-tv.png

使用遥控器操作开发板

默认x3288开发板硬件支持红外遥控器,我们可以通过遥控器操作android界面,在泰捷视频等电视界面通过遥控器操作,开发板就完全变成了一个机顶盒。

1080P视频播放

3288相对4412,支持更多种全高清视频的硬解码,可以流畅的播放这些格式的1080P视频文件。

通常情况下,使用RockPlayer或者自带的播放器都可播放。如果遇到自带播放器无法播放,可选择RockPlayer。播放界面如下:

RockPlayer.png

QQ

使用91助手或从QQ官网下载针对android版本的QQ软件,安装到x3288开发板,即可使用QQ了。

Qq-login.png

Qq-login1.png

QQ斗地主

用户可自己下载安装测试。

愤怒的小鸟

用户可自己下载安装测试。

赛车

用户可自己下载安装测试。

VGA显示

注意,x3288开发板本身不带VGA电路,如需使用VGA,需另加VGA转接板。

HDMI显示

HDMI显示支持直接将LCD上显示的视频还原到带有HDMI接口的电视机上,支持1080P高清视频,兼容720P,576P以及480P的视频。同时还将音频也一并传送到电视机上。

HDMIshow.jpg

开关机

x3288开发板使用了PMU进行电源管理。当外接上5V的电源适配器后,x3288开发板将会被自动点亮,进入系统后,长按开机键,会弹出一个选择对话框,点击关机按钮将会弹出确认关机的对话框,点击确认即可关机。

ON-OFF.png


休眠唤醒

进入android文件系统后,轻按开关机键,屏幕将会熄灭,然后进入深度休眠状态。可以通过串口查看进入休眠的打印信息。再次轻按开关机键,开发板将会唤醒。

Android测试程序

我们在x4418,x6818开发板上开发了强大的安卓测试软件,基本上可以测试开发板的所有硬件功能,它在产品量产,程序开发上有很大的参考价值。在x3288开发平台上,我们将尽快提供。在APP界面点击安卓测试,即可进入测试界面,使用触摸屏左右滑动,或者用鼠标滑动可切换测试的硬件。

液晶屏测试

Lcd-test.png

在液晶屏测试界面,点击中间的任意纯色位置,会有不同的颜色变化,我们可以观察LCD是否有丢色,坏点等。

触摸屏测试

Touch-test.png

在触摸屏测试界面,点击开始测试,即可在屏幕上任意手写,在批量生产时,我们通常通过画对角线测试触摸电路是否正常。

发光二极管测试

Led-test.png

点击图片上任意的灯,为红色时,对应开发板上的LED灯亮,为灰色时,对应LED灯灭。

蜂鸣器测试

Beep-test.png

按住开始测试键,蜂鸣器会鸣叫,松开开始测试键,蜂鸣器停止鸣叫。

背光测试

Backlight-test.png

划动中间的圆圈,背光亮度会随之发生变化。

按键测试

Key-test.png

按下或抬起开发板上四个独立按键的任意一个,界面上将会提示对应的按键的按下和抬起动作。

电池测试

Battery-test.png

该界面反应了接在开发板上的电池电量信息。

数模转换测试

Adc-test.png

监测四路ADC的电压。我们可以通过调节开发板上的精密可调电位器,观察上面对应通道的电压是否变化。

重力传感器测试

Gsensor-test.png

旋转开发板时,上面的X,Y,Z轴的值会随之发生变化。

音频测试

Audio-test.png

点击开始测试,会听到有清脆的声音出来。

摄像头测试

Camera-test.png

装上摄相头,点击开始测试,会看到摄像头抓到的预览界面显示出来。

无线网络测试

Wireless-test.png

使用WIFI连上无线网络后,无线网络测试界面会搜索到附近的网络并列出来。

网络连接测试

Internet-test.png

当有线或无线网络正常连接时,网络连接测试界面可以浏览网页。

串口测试

TtyAMA-test.png

将需要测试的串口的TXD和RXD短路,再点击开始测试,界面上会提示对应串口会自发自收0123456789。如果不能自发自收,说明对应的串口硬件有问题。

外部存储器测试

Sdcard-test.png

将TF卡插到开发板上,点击开始测试,界面上会显示TF卡的相关信息。

优盘测试

Udisk-test.png

将U盘插到开发板上,点击开始测试,界面上会显示U盘的相关信息。


android内核驱动

G-sensor驱动

路径:
kernel/drivers/input/sensors/accel/mma8452.c

      hardware/rockchip/sensor/st 

文件:mma8452.c及st目录

电容触摸屏驱动

路径:kernel/drivers/input/touchscreen/
源码:gslX680.c

液晶屏驱动

路径:kernel/drivers/video/rockchip/lcdc/
源码:rk3288_lcdc.c

按键驱动

路径:kernel/drivers/input/keyboard
源码:rk_keys.c

WIFI/BT模块驱动

路径:kernel/drivers/net/wireless/rockchip_wlan
源码:该目录下所有源码文件

摄像头驱动

路径:hardware/rockchip/camera/SiliconImage/isi/drv
源码:该目录下

VGA驱动

路径:kernel/drivers/video/rockchip

HDMI驱动

路径:kernel/drivers/video/rockchip/hdmi

proc文件系统

启动环境变量查询

使用如下指令查询启动环境变量配置:

cat  /proc/cmdline 

会有如下类似打印信息:

vmalloc=496M console=ttyFIQ0 <nowiki>androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=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 loader.timestamp=2016-02-19_17:53:13 androidboot.mode=emmc
</nowiki>

CPU信息查询

使用如下指令查询CPU信息:

cat  /proc/cpuinfo 

会有如下类似打印信息:

shell@rk3288:/ # cat /proc/cpuinfo

Processor       : ARMv7 Processor rev 1 (v7l)

processor       : 0

model name      : ARMv7 Processor rev 1 (v7l)

BogoMIPS        : 48.00

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc0d

CPU revision    : 1



processor       : 1

model name      : ARMv7 Processor rev 1 (v7l)

BogoMIPS        : 48.00

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc0d

CPU revision    : 1



processor       : 2

model name      : ARMv7 Processor rev 1 (v7l)

BogoMIPS        : 48.00

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc0d

CPU revision    : 1



processor       : 3

model name      : ARMv7 Processor rev 1 (v7l)

BogoMIPS        : 48.00

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc0d

CPU revision    : 1



Hardware        : Rockchip RK3288 (Flattened Device Tree)

Revision        : 0000

Serial          : e3d650362e219fe2 

内存信息查询

使用如下指令查询内存使用信息:

 cat  /proc/meminfo

会有如下类似打印信息:

shell@rk3288:/ # cat  /proc/meminfo 

MemTotal:        2062080 kB

MemFree:         1573408 kB

Buffers:           11140 kB

Cached:           206416 kB

SwapCached:            0 kB

Active:           165880 kB

Inactive:         156828 kB

Active(anon):     105176 kB

Inactive(anon):      268 kB

Active(file):      60704 kB

Inactive(file):   156560 kB

Unevictable:           0 kB

Mlocked:               0 kB

HighTotal:       1540096 kB

HighFree:        1141180 kB

LowTotal:         521984 kB

LowFree:          432228 kB

SwapTotal:             0 kB

SwapFree:              0 kB

Dirty:                 0 kB

Writeback:             0 kB

AnonPages:        105152 kB

Mapped:            58948 kB

Shmem:               308 kB

Slab:              24800 kB

SReclaimable:      12056 kB

SUnreclaim:        12744 kB

KernelStack:        4160 kB

PageTables:         5844 kB

NFS_Unstable:          0 kB

Bounce:                0 kB

WritebackTmp:          0 kB

CommitLimit:     1031040 kB

Committed_AS:   19085052 kB

VmallocTotal:     499712 kB

VmallocUsed:       45004 kB

VmallocChunk:     361448 kB 

磁盘分区信息查询

使用如下命令查询磁盘分区信息:

cat  /proc/partitions 

会有如下类似打印信息:

shell@rk3288:/ # cat  /proc/partitions

major minor  #blocks  name



254        0     520912 zram0

 179        0   15267840 mmcblk0

 179        1       4096 mmcblk0p1

 179        2       4096 mmcblk0p2

 179        3      16384 mmcblk0p3

 179        4      16384 mmcblk0p4

 179        5      32768 mmcblk0p5

 179        6      32768 mmcblk0p6

 179        7      53248 mmcblk0p7

 179        8     131072 mmcblk0p8

 179        9       4096 mmcblk0p9

 179       10    1572864 mmcblk0p10

 179       11      16384 mmcblk0p11

 179       12    1048576 mmcblk0p12

 179       13      65536 mmcblk0p13

 179       14   12261376 mmcblk0p14          

内核版本查询

使用如下命令查询内核版本:

cat  /proc/version 

会有如下类似打印信息:

shell@rk3288:/ # cat  /proc/version

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 

网络设备查询

使用如下命令查询网络设备信息:

cat  /proc/net/dev 

会有如下类似打印信息:

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

    lo:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

  eth0:       0       0    0    0    0     0          0         0      992       6    0    0    0     0       0          0 

查看内核启动信息

使用如下命令查询内核启动信息:

cat  /proc/kmsg 

android开发项目实战

说明:以下为实际项目实例,用户可参考x210开发文档练习,后续我们会陆续发布。在进行下面的任一个实验之前,请确保前面的环境已经搭建完毕。

实战1:创建hello x3288工程

参考《x4418 android平台用户手册》。

实战2:在x3288开发板上运行hello x3288测试程序

参考《x4418 android平台用户手册》。

实战3:从零开始编写LED测试程序

参考《x4418 android平台用户手册》。

实战4:建立第一个APK应用程序,通过JNI+NDK调用底层驱动

参考《x4418 android平台用户手册》。

实战5:修改VGA分辨率

参考《x4418 android平台用户手册》。

实战6:如何修改init.rc文件

永久修改

 system/core/rootdir

目录下找到init.rc文件,修改后执行

 ./mk –s,

将会生成新的system.img文件,重新烧写system.img即可更新init.rc。注意,在编译时,首先需要先将out目录下的

 init.rc

删除后再编译,否则可能不会生效。

临时修改

默认init.rc在ramdisk.img中,ramdisk.img又被打包到boot.img中,因此,如果我们需要临时修改boot.img,首先需要解压boot.img,再手动修改我们需要修改的内容,再打包即可。为此,我们特别编写了解压和压缩的脚本文件。

在android根目录下,新建脚本文件ramdisk.sh,编辑内容如下:

<nowiki>#!/bin/bash

# create: liuqiming

# date:   2016-11-22

# mail:   liuqiming@9tripod.com



echo "Modify boot.img"

echo "1.unzip boot.img"

echo "2.Create boot.img"

echo "3.delete cache files"

echo "4.exit"



#准备工作,环境变量的声明

SOURCE_DIR=$(cd `dirname $0` ; pwd)

TOOLS_DIR=${SOURCE_DIR}/tools

TARGET_DIR=${SOURCE_DIR}/out/release

OUT=${SOURCE_DIR}/out/target/product/rk3288



PATH=${SOURCE_DIR}/out/host/linux-x86/bin:$PATH;



#读取要执行的操作索引

read -p "Choose:" CHOOSE



#解压boot.img

if [ "1" = ${CHOOSE} ];then

    echo "unzip boot.img"

    cd $TARGET_DIR

#第一步:新建ramdisk目录

    [ -e "ramdisk" ] ||{ echo "mkdir ramdisk"; mkdir ramdisk;}

#第二步:判断是否存在boot.img文件

    [ -f "$TARGET_DIR/boot.img" ] || { echo "error! can't find boot.img!"; rm -rf ramdisk;exit; }

    cd ramdisk

#第三步:拷贝boot.img

        cp ../boot.img .

#第四步:解压boot.img文件,得到boot.img-ramdisk.gz文件

    [ -f "/bin/split_bootimg.pl" ] || { cp $TOOLS_DIR/split_bootimg.pl /bin; }

        split_bootimg.pl boot.img

    rm -f boot.img

#第五步:解压boot.img-ramdisk.gz文件

    gzip -dc boot.img-ramdisk.gz | cpio -i

    echo "^_^ unzip boot.img finished!"

    rm -f boot.img-ramdisk.gz

    rm -f boot.img-second.gz

    rm -f boot.img-kernel

    exit



#打包boot.img

elif [ "2" = ${CHOOSE} ];then

    echo "create boot.img with kernel..."

#第一步:判断是否存在ramdisk目录

    [ -e "$TARGET_DIR/ramdisk" ] || { echo "can't find [ramdisk],please unzip boot.img first!"; exit; }

#第二步:去除默认的root.img文件

    rm -f $TARGET_DIR/boot.img

    cd $TARGET_DIR

#第三步:将当前目录所有文件打包到boot.img

    [ -d $TARGET_DIR/ramdisk ] && \

    mkbootfs $TARGET_DIR/ramdisk | minigzip > $TARGET_DIR/ramdisk.img && \

    truncate -s "%4" $OUT/ramdisk.img && \

    mkbootimg --kernel ${OUT}/kernel --ramdisk ${OUT}/ramdisk.img --second $TARGET_DIR/resource.img --output $TARGET_DIR/boot.img

    rm -rf ramdisk

    exit



#清除残余文件

elif [ "3" = ${CHOOSE} ];then

    cd ${TARGET_DIR}

    rm -rf ramdisk

    echo "^_^ delete cache files ok!" 



#退出脚本

elif [ "4" = ${CHOOSE} ];then

    exit

fi

    执行./ramdisk.sh,输入1,回车,将会自动解压out/release目录下的boot.img,并存放到out/release/ramdisk目录。

    执行./ramdisk.sh,输入2,回车,将会自动将out/release/ramdisk目录下的文件打包成boot.img。
</nowiki>

实战7:如何修改开机动画

默认android启动时,会有android的英文字母不断高亮滚动显示,构成了一幅美丽的开机动画。其实这个开机动画是可以定制的,有兴趣的读者可以自行尝试。

瑞芯微官方提供的uboot会读取kernel根目录下的logo.bmp和logo_kernel.bmp两个文件,分别用于做uboot和内核的开机LOGO,uboot和内核的LOGO显示全部是由uboot完成的。其中logo.bmp用作uboot的开机LOGO,logo_kernel.bmp用作内核的开机LOGO。值得注意的是,如果我们要将uboot和内核显示的LOGO设置得相同,并不能简单的复制,因为他们的图片格式是有区别的。logo.bmp支持8b的bmp格式图片,而logo_kernel.bmp只支持压缩后的8b的bmp格式图片,因此logo_kernel.bmp实际上要比logo.bmp的尺寸要小得多。而且在实际显示时,很明显的看到显示内核LOGO时,如果颜色比较丰富,就会失真。为了只显示一幅图片,我们直接将kernel目录下的logo_kernel.bmp删除即可。

如果我们需要换uboot的开机LOGO,找一张分辨率不是太大的图片,转换成BMP格式,然后使用WINDOWS的图库编辑功能,转换成8b模式,保存并替换kernel目录下的logo.bmp即可。注意,如果LOGO的分辨率设置得过大,也可能导致无法显示。如果需要全屏开机LOGO,默认的uboot代码就不适用了,需要重新移植。

同上,找一张分辨率不是太大的图片,转换成BMP格式,在WINDOWS的图片编辑软件下转换成8b模式后,还需要借助于linux下强大的gimp工具,将图片压缩,内核LOGO才能显示出来。默认瑞芯微提供的这套方案,内核LOGO分辨率不够大,而且会明显失真,无法显示真彩图片,如果开发的工程师一定要显示完美的内核LOGO,建议使用linux下标准的开机LOGO方案。

实战11:使用git管理源代码

在我们最开始编码时,就应该养成使用git等工具管理源码的好习惯。这里简单介绍git的一些常用操作,具体更深入的学习,需要读者深入研究。

git指令

1).初始化仓库

 git init

2).查看版本库的状态

 git status

3).查看版本库的状态

 git log

4).提交文件到仓库索引中

 git add .                                 ---提交当前目录所有修改
 git add hello.c example.c                 ---提交两个文件到仓库索引

5).提交内容到仓库:

 git commit -a -m "yx modify some files"

6).比较当前的工作目录和仓库数据库中的差异

 git diff                                  ---建议使用windows 客户端

7).恢复到某个版本

 git reset --hard 8f097e                   ---恢复到某个历史版本

8).打标签

 git tag V1.01 8f097e -m "20100101发布"    ---给某个版本打上标签
 git tag -d V1.01                          ---删除标签

9).clone仓库

 git clone git@172.18.0.198:boot          ---clone仓库到当前目录
 git clone git@172.18.0.198:boot temp         ---clone仓库到temp目录

10)服务器仓库同步到本地

 git pull                                   ---将服务器最新内容同步到本地

11).将本地仓库中的内容同步到服务器中

 git push                                   ---提交当前目录修改记录到服务器(服务器已存在此目录)
 git push git@172.18.0.198:FCR/K660/app master  ---提交当前目录修改到服务器(服务器不存在此目录)
12).查看项目版本更新细节
 git show 18183e                            ---显示当前分支的最新版本的更新细节

初始化git仓库

在第一次解压android源码后,进入android根目录,更新本地Git仓库:

 cd android_gingerbread     #进入工作目录
 git init-db        #初始化工作目录
 git add .        #将工作目录的所有文件添加进来以便跟踪管理
 git commit -a        #将所监视的文件提交到仓库
 sudo apt-get install qgit

第一次建立仓库后,给出第一次提交:

 git commit -m "初始化工程"

否则,输入git log时,会提示如下错误:

 fatal: bad default revision 'HEAD'

恢复到上一版本

首先,使用git log命令查询修改记录:

lqm@lqm:~/android_gingerbread$ git log

commit d5fd5223fd354c0a9c63057a7b8fe9a6870bdd7e

Author: lqm <lqm@lqm.(none)>

Date:   Wed Dec 14 10:34:34 2011 +0800 

删除不必要的处理器文件

commit 1af4b99d582bf33cc2f37a0529554426b30a168d

Author: lqm <lqm@lqm.(none)>

Date:   Wed Dec 14 10:14:39 2011 +0800 

初始化工程

 lqm@lqm:~/android_gingerbread$

再使用git reset指令恢复到某个提交状态:

 lqm@lqm:~/android_gingerbread$ git reset --hard 1af4b
Checking out files: 100% (12517/12517), done.
HEAD is now at 1af4b99 初始化工程
lqm@lqm:~/android_gingerbread$

修改源码后,提交修改记录

修改了某些文件,需要提交到服务器,具体操作如下:

第一步:使用git pull将服务器仓库提交到本地

Git-pull.png

提示出错,有两种解决办法,第一种,先将drivers/mtd/nand/nand_base.c备份,比如:mv drivers/mtd/nand/nand_base.c drivers/mtd/nand/nand_base.c.bak

然后再执行git pull。第二种,执行git checkout –f,然后再执行git pull。

正常的操作如下: Git-pull-ok.png

上面的提示文件为服务器上已经更新的文件,执行git pull后,已经同步到本地了。

第二步:使用git status,查看修改的文件:

Git-status.png

上图表示本地修改了build/mk和common/env_common.c两个文件。

第三步:使用git add指令将指定的文件提交到仓库索引

 git  add  .  #将当前目录所有修改的文件提交到仓库索引

或者使用下面的指令:

 git  add  build/mk  #将指定的文件提交到仓库索引,env_common.c并未提交。

第四步:使用

 git commit #命令注释修改的内容到仓库

Git-commit.png

第五步:使用

 git push   #指令将修改的文件提交到服务器

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  x3288_kitkat.tar.bz2  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  >  x3288_kitkat.tar
 bzip2  x3288_kitkat.tar

实战15:android调试技巧之mm指令

在Android SDK源码工程下,如果编译整个工程可能需要两三个小时,即使二次编译也要二十多分钟。如果只想单独编译某个APK应用,那么可以这样做:

1)在build目录下执行

   . envsetup.sh  (注意,命令前面有一个点,然后接一个“空格”键)

执行完后,就会多出以下几个命令:

- 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的配置情况

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

界面如下:

<nowiki> +-----[configuration]------+

            | 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>

通过键盘的上下键盘选择到Serial port setup,回车

+-----------------------------------------------------------------------+

    | 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?                                              |

    +-----------------------------------------------------------------------+ 

输入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目录,使用命令终端进入该目录,示例如下:

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.exe  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>

第三步:在LINUX目录下执行如下命令安装:

 sudo make clean
 sudo make install

实际操作时发现有如下错误提示:

cd wchmknod;\

    ./wchmknod

/bin/sh: line 1: ./wchmknod: 权限不够

<nowiki>make: *** [wchmknod_install] 错误 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>

 make install

即可安装成功。

第四步:执行如下指令加载驱动

 modprobe wch

或者

 insmod driver/wch.ko

第五步:使用如下指令查询驱动是否正常加载:

 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:

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 

可见,PCI转串口驱动已经能够正常使用了。

第八步:以上步骤,仅仅是临时加载了驱动,ubuntu系统重启后,wch.ko文件并没有自动加载。因此,需要在ubuntu的启动脚本里面添加自动加载的命令。

编辑/etc/rc.d/rc.local文件,在最末尾添加如下语句:

 modprobe wch

第九步:重启ubuntu系统,再次尝试串口是否能正常使用。