“RK3288 Android 5.1 Manual”的版本间的差异
(创建页面,内容为“Category:开发板 == android开发平台的搭建== Android自从升级到4.0以来,相比之前的版本工程更加庞大,编译整套源码对PC机硬...”) |
|
(未显示同一用户的1个中间版本) | |
(没有差异)
|
2017年3月2日 (四) 12:54的最新版本
目录
- 1 android开发平台的搭建
- 2 Android开发工具
- 3 安装android源码包
- 4 android脚本分析配置
- 5 编译android源码包
- 6 烧写android映像文件
- 7 android开发指南
- 7.1 命令终端
- 7.2 播放mp3
- 7.3 播放视频
- 7.4 图片浏览
- 7.5 语言设置
- 7.6 使用WIFI上网
- 7.7 使用蓝牙传输数据
- 7.8 使用蓝牙播放音乐
- 7.9 使用USB鼠标键盘
- 7.10 APK应用安装
- 7.11 屏幕抓图
- 7.12 挂载TF卡
- 7.13 挂载U盘
- 7.14 计算器
- 7.15 输入法
- 7.16 浏览器
- 7.17 屏幕旋转
- 7.18 时间设置
- 7.19 拍照摄相
- 7.20 使用有线以太网上网
- 7.21 优酷
- 7.22 播放电视
- 7.23 使用遥控器操作开发板
- 7.24 1080P视频播放
- 7.25 QQ
- 7.26 QQ斗地主
- 7.27 愤怒的小鸟
- 7.28 赛车
- 7.29 VGA显示
- 7.30 HDMI显示
- 7.31 开关机
- 7.32 休眠唤醒
- 8 Android测试程序
- 9 android内核驱动
- 10 android开发项目实战
- 10.1 实战1:创建hello x3288工程
- 10.2 实战2:在x3288开发板上运行hello x3288测试程序
- 10.3 实战3:从零开始编写LED测试程序
- 10.4 实战4:建立第一个APK应用程序,通过JNI+NDK调用底层驱动
- 10.5 实战5:修改VGA分辨率
- 10.6 实战6:如何修改init.rc文件
- 10.7 实战7:如何修改开机动画
- 10.8 实战8:如何修改uboot中的开机LOGO
- 10.9 实战9:如何修改内核中的LOGO
- 10.10 实战11:使用git管理源代码
- 10.11 实战13:如何打包整个android bsp包
- 10.12 实战15:android调试技巧之mm指令
- 10.13 实战16:ubuntu下minicom的设置
android开发平台的搭建
Android自从升级到4.0以来,相比之前的版本工程更加庞大,编译整套源码对PC机硬件要求很高,因此不建议采用虚拟机编译,强烈建议直接安装Linux操作系统,充分发挥PC机的性能。我们这里以ubuntu14.04 64位系统机器为例讲解,如果您是新手,建议与我们版本保持一致。
使用U盘安装ubuntu
使用U盘安装ubuntu系统简单快捷,强烈推荐使用此方法安装。
安装工具:
- 2G以上U盘一个
- lili usb creater 软件,下载地址:http://www.linuxliveusb.com/
- ubuntu最新系统,下载地址:http://www.ubuntu.com/download/
- PC机一台
安装方法:
第一步:下载好ubuntu的ISO文件,和lili usb creater这个软件并安装。
第二步:插入usb,并打开usb creater 这个软件,根据软件提示设置,在步骤1中选择安装盘,找到识别出的U盘;在步骤2中找到下载的ubuntu映像文件;步骤3默认,步骤4中选中隐藏优盘上创建的文件,使用FAT32格式化U盘;最后在步骤5中点击闪电图标开始安装,直到提示优盘已安装完成为止。
第三步:重启电脑,开机时,看清屏幕下方的提示,进入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:
选择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,如下图所示:
如果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 shell
使用如下命令进入开发板终端:
adb shell
如下图所示:
输入exit退回DOS操作界面。注意,有时候,执行adb devices命令时,会提示error: more than one device and emulator,很有可能是播放了USB设备造成的。这时已经无法再通过adb传输数据,解决的办法很简单,如果是使用windows,直接在进程中干掉adb.exe,再启动adb即可。
串口工具secureCRT
安装secureCRT工具,在计算机设备管理器中找到COM口号,点击“快速连接”,如下图:
协议选择serial(我的设备是COM2),其他选项按照下图所示选择,右侧三个流控制选项不能勾选!
接下来用USB转串口线接到开发板的调试串口与PC即可看到调试串口打印的log信息。
安装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,下载地址为:
第二步:将下载的文件复制到/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”,点击“驱动安装”,提示安装驱动成功即可。
注意事项:
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 文件,如下图所示。
工具配置好后,连接开发板(如下图):
按下RECOVERY键,然后插上microUSB线与5V DC电源线
烧录工具界面会提示发现一个LOADER设备,然后点击升级,即可开始升级过程(注:如果提示发现一个ADB设备,点击切换按钮切换成LOADER设备即可)。
上图为升级完成截图。
烧录方法二:多设备升级固件update.img
该工具适合用户批量刷机,可以同时给多台开发板刷机。
打开路径:
SDK\RKTools\windows\FactoryTool_v1.33
下的“FactoryTool.exe”,点击“固件”选择update.img,勾选“升级”,点击“启动”,如下图所示:
步骤1:点击固件,选择update.img;
步骤2:点击启动(选择升级按钮);
步骤3:连接开发板USB、DC电源,按下recovery键,对应USB口发现设备,并实现自动升级;然后重复步骤3即可同时升级第二台、第三台设备,升级成功或者失败的设备会在两边的列表中列出,移除成功或者失败的设备后可以继续连接需要升级的设备。
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(设备号)选择设备
选择设备后弹出工具使用菜单如下图,左侧是功能描述,右侧是命令语法,升级相关操作都在upgrade command列表下,忘记命令语法可以输入H进行查看,清屏输入CS,退出按Q。
- 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>
备注:也可通过配置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即可。
该工具也支持命令行,使用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_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卡,用户需要注意备份重要数据,防止误删。
第一步,选择对应的可移动磁盘设备;
第二步,选择功能模式:固件升级、PCBA测试、SD启动;
* 默认会勾选“固件升级”,即只升级固件。 * 如果在升级固件前需要做 “PCBA 测试”,则同时勾选“固件升级”、“PCBA测试”。 * 如果不升级固件,只需要测试PCBA,则单选“PCBA测试”,不选择“固件升级”。 * “SD启动”会把固件烧写到SD中,所有分区都分配在SD卡上,运行时不会修改内部存储的数据(相当于SD卡做主存储设备)。
注意:SD卡运行模式,对kernel的编译有要求,需要把kernel的SD卡驱动配置去掉,不参与编译。
修改为:
第三步,选择对应平台的update.img固件;
第四步(可选),如果需要拷贝demo文件到用户盘根目录,点击选择Demo按钮,选择需要拷贝的文件目录。选择的目录下所有文件会拷贝到SD根目录下的Demo目录中,在SD引导固件升级后,Demo目录下的文件会拷贝到样机用户盘的根目录下。
第五步,点击开始创建即可。
android开发指南
命令终端
将串口连接开发板上调试串口,进入android系统后,会自动进入android终端,如下图所示:
播放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文件,点击音乐,播放器会自动识别音频文件,如下图:
点击相应的音频文件即可播放。播放时界面如下:
播放视频
android自带视频处理功能,在android应用界面显示为图库。点击图库按钮,会在外置SD卡中自动寻找能够识别的视频和图片文件,如下图:
点击中间的按钮:
上图中,带有播放符号的即为视频文件,不带的为图片文件。点击带播放符号的文件:
再点击播放按钮:
X3288 android5.1系统还带一款4k视频播放器,播放器会自动关联视频文件,点击需要播放的视频即可播放
如果遇到图库无法支持的视频文件,可以采用第三方播放器如RockPlayer进行播放,如网络上最为流行的rmvb和rm文件。这时,机器俨然成为了一个具有支持rm/rmvb等格式视频的超强mp4了。如对屏幕尺寸有更高要求,可以使用VGA或HDMI方式,直接将视频文件显示到显示器或电视机上。
使用RockPlayer播放视频时,会弹出一个硬解和软解的对话框,如果属于3288硬解码的视频文件,选择硬解模式,否则选择软解模式。如播放rm/rmvb文件,选择软解模式才能播放,如下图所示:
图片浏览
浏览图片时,同样使用上面的图库浏览。点击图库图标,点击要浏览的图片即可浏览。滑动可以浏览下一张图片,如下图所示:
语言设置
点击设置中的语言和输入法一栏,再点击选择语言,会弹出多种语言,选择需要的语言即可,如下图:
使用WIFI上网
X3288开发板自带wifi/BT二合一模组,无需额外USBwifi即可无线上网。启动开发板,点击设置,在Wi-Fi一栏的方框中有个关闭按钮,将他拨到右边,即打开状态,如下图:
再点击Wi-Fi一栏,进入wifi界面,找到属于自己的无线网络信号并点击,输入密码后,点击连接即可上网。
使用蓝牙传输数据
x3288开发板支持AP6335芯片的WIFI/BT二合一模块。点击设置->蓝牙,将蓝牙开关打开,如下图所示:
点击蓝牙,进入设置界面,找到一个支持蓝牙设备的安卓手机,并打开蓝牙,且可被发现。在x3288开发板的蓝牙设置界面的右上脚点击搜索设备,在可用设备一栏中将会显示出所有找到的蓝牙设备。找到需要匹配的蓝牙设备并点击,在开发板上弹出配对请求:
点击配对,同时,在手机端也会弹出类似的画面,也点击配对即可。成功配对后的界面如下:
这时,配对的设备间就可以通过蓝牙共享文件了。点击开发板的图库,找到一张图片并选中:
点击右上脚的分享按钮,选择蓝牙,弹出如下界面:
选择配对成功的蓝牙设备,这时在配对设备上将会弹出一个接收文件的对话框,点击接收即可。
使用蓝牙播放音乐
x3288开发板可支持通过蓝牙连接蓝牙音箱,并播放音乐。准备一个蓝牙音箱,并切换到蓝牙模式,进入开发板的蓝牙界面并打开,点击右上脚的搜索设备,将会找到蓝牙音箱,下图中的GS805即是蓝牙音箱:
点击GS805,稍等几秒,将会配对成功,无需任何确认动作。这时,随意在开发板上播放音视频,音乐将会通过蓝牙音箱播放出来。
使用USB鼠标键盘
启动开发板,将USB鼠标或者USB无线鼠标键盘接到USB HOST接口,即可使用鼠标键盘操作android界面了。
APK应用安装
Android系统下有很多种APK的安装方法,这里介绍四种。
使用SD卡安装
将拷贝有APK安装包的SD卡插到开发板,打开开发板的“文件管理”应用程序,界面如下:
可以看到,安装包一栏找到了3个安装包。点击进去,会列出安装列表:
点击要安装的APK文件:
依次点击下一步,直到安装完成即可。
使用ApkInstaller安装
使用ApkInstaller安装APK,需要将开发板与PC机同步起来。
第一步:启动开发板,并进入android系统。
第二步:将光盘中的ApkInstaller.rar解压到PC机的任意目录,如D盘;
第三步:双击ApkInstaller.exe应用程序,如下图所示:
在解压目录下默认有一个名为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
正常安装的界面如下:
在线安装
用户可以通过91助手,百度应用中心、360手机助手等第三方软件直接在线安装,这里就不详细说明了。
屏幕抓图
使用eclipse抓图
android有很多截图工具,但是很多都需要root权限,在平时做开发时,我们可以使用eclipse自带的插件进行截图,非常的方便。
启动开发板,并进入android系统。使用USB延长线将x3288开发板与PC机连接,第一次连接时会提示需要安装软件,如下图:
选择否,点下一步:
选择自动安装软件,点下一步,直至安装完成。
安装完成之后,打开eclipse软件,如果没有安装,需先安装该软件。然后点击Window->Show view->Devices,如下图:
确保机器处于开机状态,这时Devices会找到机器的设备号,如下图:
点击上图右上脚的摄相头标志,就会弹出要保存的图像,点击save保存即可,如下图所示:
使用360手机助手抓图
在PC机上安装360手机助手手,启动开发板,通过USB延长线将开发板连接到PC机的USB口,打开360手机助手,360手机助手将会找到x3288开发板。如果找不到,将USB线拨掉重插,在开发板上会弹出一个授权界面,点击确认即可。正常连接后的360手机助手界面如下:
点击左下脚的截屏按钮即可。
挂载TF卡
系统启动后,会自动挂载右侧卡槽中的TF卡到/mnt/external_sd/目录,如下图所示:
挂载U盘
启动开发板,并进入android系统。插入U盘后,系统会将U盘自动挂载到/mnt/usb_storage*(*表示0到4)目录。
计算器
点击android应用的计算器即可使用计算器功能,如下图所示:
输入法
推荐安装讯飞输入法,测试界面如下:
浏览器
android默认自带一个浏览器,该浏览器功能已经非常完善了,如果用户仍然觉得不够要求,可以下载安装第三方浏览器,如UC浏览器等。
屏幕旋转
重力传感器已经集成到开发板上,将开发板移动到四周任一方向,界面会随之改变。当然并不是所有应用程序都会随之改变,有部分应用程序不支持屏幕旋转。旋转后示例图片如下:
时间设置
点击android应用中的设置,可以看到有日期和时间一栏,点击进去,选择相应的栏目设置即可。
拍照摄相
点击android应用中的相机,会进入图像预览模式。点击右下脚的拍照按钮即可拍照,如下图所示:
右下脚可以切换拍照和录像功能。
使用有线以太网上网
将可以正常上网的网线连接到开发板的网口座上,网口座的指示灯会正常闪烁,正常上网界面如下:
优酷
将优酷的APK软件安装到开发板,连接网线就可以看视频了。
播放电视
安装龙龙直播,泰捷视频等网络播放器,插上网线即可播放。
使用遥控器操作开发板
默认x3288开发板硬件支持红外遥控器,我们可以通过遥控器操作android界面,在泰捷视频等电视界面通过遥控器操作,开发板就完全变成了一个机顶盒。
1080P视频播放
3288相对4412,支持更多种全高清视频的硬解码,可以流畅的播放这些格式的1080P视频文件。
通常情况下,使用RockPlayer或者自带的播放器都可播放。如果遇到自带播放器无法播放,可选择RockPlayer。播放界面如下:
使用91助手或从QQ官网下载针对android版本的QQ软件,安装到x3288开发板,即可使用QQ了。
QQ斗地主
用户可自己下载安装测试。
愤怒的小鸟
用户可自己下载安装测试。
赛车
用户可自己下载安装测试。
VGA显示
注意,x3288开发板本身不带VGA电路,如需使用VGA,需另加VGA转接板。
HDMI显示
HDMI显示支持直接将LCD上显示的视频还原到带有HDMI接口的电视机上,支持1080P高清视频,兼容720P,576P以及480P的视频。同时还将音频也一并传送到电视机上。
开关机
x3288开发板使用了PMU进行电源管理。当外接上5V的电源适配器后,x3288开发板将会被自动点亮,进入系统后,长按开机键,会弹出一个选择对话框,点击关机按钮将会弹出确认关机的对话框,点击确认即可关机。
休眠唤醒
进入android文件系统后,轻按开关机键,屏幕将会熄灭,然后进入深度休眠状态。可以通过串口查看进入休眠的打印信息。再次轻按开关机键,开发板将会唤醒。
Android测试程序
我们在x4418,x6818开发板上开发了强大的安卓测试软件,基本上可以测试开发板的所有硬件功能,它在产品量产,程序开发上有很大的参考价值。在x3288开发平台上,我们将尽快提供。在APP界面点击安卓测试,即可进入测试界面,使用触摸屏左右滑动,或者用鼠标滑动可切换测试的硬件。
液晶屏测试
在液晶屏测试界面,点击中间的任意纯色位置,会有不同的颜色变化,我们可以观察LCD是否有丢色,坏点等。
触摸屏测试
在触摸屏测试界面,点击开始测试,即可在屏幕上任意手写,在批量生产时,我们通常通过画对角线测试触摸电路是否正常。
发光二极管测试
点击图片上任意的灯,为红色时,对应开发板上的LED灯亮,为灰色时,对应LED灯灭。
蜂鸣器测试
按住开始测试键,蜂鸣器会鸣叫,松开开始测试键,蜂鸣器停止鸣叫。
背光测试
划动中间的圆圈,背光亮度会随之发生变化。
按键测试
按下或抬起开发板上四个独立按键的任意一个,界面上将会提示对应的按键的按下和抬起动作。
电池测试
该界面反应了接在开发板上的电池电量信息。
数模转换测试
监测四路ADC的电压。我们可以通过调节开发板上的精密可调电位器,观察上面对应通道的电压是否变化。
重力传感器测试
旋转开发板时,上面的X,Y,Z轴的值会随之发生变化。
音频测试
点击开始测试,会听到有清脆的声音出来。
摄像头测试
装上摄相头,点击开始测试,会看到摄像头抓到的预览界面显示出来。
无线网络测试
使用WIFI连上无线网络后,无线网络测试界面会搜索到附近的网络并列出来。
网络连接测试
当有线或无线网络正常连接时,网络连接测试界面可以浏览网页。
串口测试
将需要测试的串口的TXD和RXD短路,再点击开始测试,界面上会提示对应串口会自发自收0123456789。如果不能自发自收,说明对应的串口硬件有问题。
外部存储器测试
将TF卡插到开发板上,点击开始测试,界面上会显示TF卡的相关信息。
优盘测试
将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的英文字母不断高亮滚动显示,构成了一幅美丽的开机动画。其实这个开机动画是可以定制的,有兴趣的读者可以自行尝试。
实战8:如何修改uboot中的开机LOGO
瑞芯微官方提供的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代码就不适用了,需要重新移植。
实战9:如何修改内核中的LOGO
同上,找一张分辨率不是太大的图片,转换成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将服务器仓库提交到本地
提示出错,有两种解决办法,第一种,先将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后,已经同步到本地了。
第二步:使用git status,查看修改的文件:
上图表示本地修改了build/mk和common/env_common.c两个文件。
第三步:使用git add指令将指定的文件提交到仓库索引
git add . #将当前目录所有修改的文件提交到仓库索引
或者使用下面的指令:
git add build/mk #将指定的文件提交到仓库索引,env_common.c并未提交。
第四步:使用
git commit #命令注释修改的内容到仓库
第五步:使用
git push #指令将修改的文件提交到服务器
说明:如果源码保存在本机上,不用操作第一步和第五步。
实战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系统,再次尝试串口是否能正常使用。