|
|
(未显示同一用户的2个中间版本) |
第1行: |
第1行: |
− | [[Category:开发板]] | + | __NOTOC__[[Category:开发板]] |
− | == android开发平台的搭建== | + | {{Link Box |
− | | + | |Title=硬件 指南 |
− | Android自从升级到4.0以来,相比之前的版本工程更加庞大,编译整套源码对PC机 硬件 要求很高,因此不建议采用虚拟机编译,强烈建议直接安装Linux操作系统,充分发挥PC机的性能。我们这里以ubuntu14.04 64位系统机器为例讲解,如果您是新手,建议与我们版本保持一致。
| + | |Body= |
− | | + | <li>[[PX30_Hardware_Manual#Android8.1.2系统|Android8.1.2系统]]</li> |
− | === 使用U盘安装ubuntu===
| + | <li>[[PX30_Hardware_Manual#产品简介|产品简介]]</li> |
− | | + | <li>[[PX30_Hardware_Manual#产品功能特性| 产品功能特性]]</li> |
− | 使用U盘安装ubuntu系统简单快捷,强烈推荐使用此方法安装。
| + | <li>[[PX30_Hardware_Manual#硬 件接口 描述|硬件 接口 描述和扩展 接口 定义]]</li> |
− | | + | <li>[[PX30_Hardware_Manual#硬 件 接口|硬 件 接口]]</li> |
− | 安装工具:
| |
− | | |
− | * 2G以上U盘一个
| |
− | * lili usb creater 软件,下载地址:http://www.linuxliveusb.com/
| |
− | * ubuntu最新系统,下载地址:[http://www.ubuntu.com/download/ http://www.ubuntu.com/download/]
| |
− | * PC机一台
| |
− | | |
− | 安装方法:
| |
− | | |
− | 第一步:下载好ubuntu的ISO文件,和lili usb creater这个软件并安装。
| |
− | | |
− | 第二步:插入usb,并打开usb creater 这个软件,根据软件提示设置,在步骤1中选择安装盘,找到识别出的U盘;在步骤2中找到下载的ubuntu映像文件;步骤3默认,步骤4中选中隐藏优盘上创建的文件,使用FAT32格式化U盘;最后在步骤5中点击闪电图标开始安装,直到提示优盘已安装完成为止。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/3/39/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<nowiki>/grub.cf</nowiki>g文件,可以看到最末尾有如下语句:
| |
− | | |
− | <pre><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></pre> | |
− | | |
− | 仔细阅读该文件,发现有不少menuentry,这些正是对应了开机启动时的选择项,将上面语句放在第一个menuentry的前面,这样Windows XP就为默认的启动系统了。修改后的部分代码如下:
| |
− | | |
− | <pre><nowiki>### BEGIN /etc/grub.d/05_debian_theme ###</nowiki>
| |
− | | |
− | set menu_color_normal=white/black
| |
− | | |
− | set menu_color_highlight=black/light-gray
| |
− | | |
− | <nowiki>### END /etc/grub.d/05_debian_theme ###</nowiki>
| |
− | | |
− | | |
− | | |
− | <nowiki>### BEGIN /etc/grub.d/30_os-prober ###</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
| |
− | | |
− | }
| |
− | | |
− | <nowiki>### END /etc/grub.d/30_os-prober ###</nowiki>
| |
− | | |
− | | |
− | | |
− | <nowiki>### BEGIN /etc/grub.d/10_linux ###</nowiki>
| |
− | | |
− | 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<nowiki>/initrd.im</nowiki>g-2.6.35-30-generic
| |
− | | |
− | }
| |
− | </pre>
| |
− | | |
− | === ubuntu下磁盘格式化 ===
| |
− | | |
− | 在做开发时,经常会把SD卡格式化为msdos,ext3等格式。这时,放在windows下将无法格式化,只能借助于Linux。
| |
− | | |
− | 在Linux下使用fdisk和mkfs两个工具实现SD卡的格式化。首先,使用fdisk指令删除里面的所有分区,步骤为:
| |
− | | |
− | <pre><nowiki>fdisk /dev/sdb
| |
− | | |
− | d
| |
− | | |
− | w
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | 每输一次d,输入一次分区的序号,直到删完,再按w写入,完成分区的删除。再按n,回车,回车,新建一个分区。之后再使用mkfs工具格式化为指定格式的盘,如格式化为fat32格式,则执行如下指令:
| |
− | <pre><nowiki>
| |
− | mkfs –t vfat /dev/sdb
| |
− | </nowiki></pre>
| |
− | | |
− | === Ubuntu下通过SSH远程登录服务器===
| |
− | | |
− | 第一步:在服务器上安装ssh的服务器端。
| |
− | | |
− | <pre><nowiki> apt-get install openssh-server </nowiki></pre>
| |
− | | |
− | 第二步:启动ssh-server。
| |
− | | |
− | <pre><nowiki> service ssh restart </nowiki></pre>
| |
− | | |
− | 第三步:确认ssh-server已经正常工作。
| |
− | | |
− | <pre><nowiki> netstat -tlp </nowiki></pre>
| |
− | | |
− | 有如下打印信息:
| |
− | | |
− | <pre><nowiki> tcp 0 0 *:ssh *:* LISTEN - </nowiki></pre>
| |
− | | |
− | 看到上面这一行输出说明ssh-server已经在运行了。
| |
− | | |
− | 第四步:在Ubuntu客户端通过ssh登录服务器。假设服务器的IP地址是172.18.0.198,登录的用户名是liuqiming。
| |
− | | |
− | <pre><nowiki> $ ssh -l liuqiming 172.18.0.198 </nowiki></pre>
| |
− | | |
− | 接下来会提示输入密码,然后就能成功登录到服务器上了。可以通过资源管理器浏览的方式登录服务器,点击位置->连接到服务器,服务器类型选择ssh,服务器一栏填入服务器的IP地址,点击连接即可。
| |
− | | |
− | === ubuntu下使用邮箱===
| |
− | | |
− | ubuntu下默认就有邮箱软件,如在使用时发现无法接受或发送邮件,在发送电子邮件->身份验证点击检查的类型,再选择没有划斜线的就好了。
| |
− | | |
− | ===ubuntu下安装五笔 ===
| |
− | | |
− | 使用如下指令:
| |
− | | |
− | <pre><nowiki> sudo apt-get install ibus-tables-wubi </nowiki></pre>
| |
− | | |
− | 然后在 系统->首选项->键盘输入法的输入法中选择WUBI,添加进去即可。
| |
− | | |
− | === ubuntu下安装chrome浏览器===
| |
− | | |
− | ubuntu10.10默认安装的火狐浏览器,如果用户喜欢该浏览器,可以跳过此节。google出了基于linux的浏览器chrome,用户可以使用如下方式安装。在网上下载安装源文件,[http://tools.google.com/chrome/ http://tools.google.com/chrome/],也可以从光盘中获得,双击即可安装。
| |
− | | |
− | === ubuntu下安装VIM===
| |
− | | |
− | 使用如下命令安装即可:
| |
− | | |
− | <pre><nowiki> sudo apt-get install vim </nowiki></pre>
| |
− | | |
− | ===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工具,使用如下指令安装:
| |
− | | |
− | <pre><nowiki>sudo apt-get install meld </nowiki></pre>
| |
− | | |
− | 安装完成后,可以在应用程序->编程中打开。
| |
− | | |
− | ===ubuntu下安装串口终端minicom===
| |
− | | |
− | 使用如下指令安装:
| |
− | | |
− | <pre><nowiki>sudo apt-get install minicom </nowiki></pre>
| |
− | | |
− | 安装完成后,需要设置minicom。如果直接使用串口,通常设置为ttyS0,如果使用USB转串口,通常设置为ttyUSB0。输入如下指令:
| |
− | | |
− | <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转串口延长线后,输入如下命令查询驱动是否正常加载:
| |
− | | |
− | <pre><nowiki>lsmod |grep pl2303 </nowiki></pre>
| |
− | | |
− | 正常加载时会提示如下信息:
| |
− | | |
− | <pre><nowiki>lqm@lqm:~$ lsmod |grep pl2303
| |
− | | |
− | pl2303 11756 1
| |
− | | |
− | usbserial 33100 3 pl2303 </nowiki></pre>
| |
− | | |
− | 再使用如下命令查询 系统 的一些信息:
| |
− | | |
− | <pre><nowiki> dmesg | tail -f </nowiki></pre>
| |
− | | |
− | 正常情况下会出现如下提示:
| |
− | | |
− | <pre><nowiki>lqm@lqm:~$ dmesg |tail -f
| |
− | | |
− | <nowiki>[ 383.093851] ERROR! H2M_MAILBOX still hold by MCU. command fail</nowiki>
| |
− | | |
− | <nowiki>[ 383.148849] ---> RTMPFreeTxRxRingMemory</nowiki>
| |
− | | |
− | <nowiki>[ 383.148903] <--- RTMPFreeTxRxRingMemory</nowiki> | |
− | | |
− | <nowiki>[ 383.180580] RTUSB disconnect successfully</nowiki>
| |
− | | |
− | <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>
| |
− | | |
− | <nowiki>[ 392.412998] usb 2-4: pl2303 converter now attached to ttyUSB0</nowiki></nowiki></pre>
| |
− | | |
− | 表示串口设备名称为ttyUSB0。有时会提示如下错误:
| |
− | | |
− | <pre><nowiki>lqm@lqm:~$ dmesg | tail -f
| |
− | | |
− | <nowiki>[ 408.910351] 0x1300 = 00073200</nowiki>
| |
− | | |
− | <nowiki>[ 413.945752] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1177</nowiki>
| |
− | | |
− | <nowiki>[ 419.047006] ===>rt_ioctl_giwscan. 7(7) BSS returned, data->length = 1067</nowiki> | |
− | | |
− | <nowiki>[ 419.047302] ==>rt_ioctl_siwfreq::SIOCSIWFREQ[cmd=0x8b04] (Channel=1)</nowiki>
| |
− | | |
− | <nowiki>[ 419.392535] wlan0: no IPv6 routers present</nowiki>
| |
− | | |
− | <nowiki>[ 433.902136] ===>rt_ioctl_giwscan. 6(6) BSS returned, data->length = 960</nowiki>
| |
− | | |
− | <nowiki>[ 473.902907] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1271</nowiki>
| |
− | | |
− | <nowiki>[ 533.900777] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1200</nowiki>
| |
− | | |
− | <nowiki>[ 613.904091] ===>rt_ioctl_giwscan. 9(9) BSS returned, data->length = 1435</nowiki>
| |
− | | |
− | <nowiki>[ 713.904199] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1263</nowiki></nowiki></pre>
| |
− | | |
− | 一般情况下重插拨一次USB转串口线即可。
| |
− | | |
− | === ubuntu卡死的解决办法===
| |
− | | |
− | ubuntu系统有时也会像windows系统一样,卡死不动。这时除了复位系统,我们也可以尝试如下方法:
| |
− | | |
− | 一:按住ctrl+alt+F2进入tty2;
| |
− | | |
− | 二:查看进程:
| |
− | | |
− | <pre><nowiki>ps -e </nowiki></pre>
| |
− | | |
− | 三: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====
| |
− | | |
− | 安装步骤如下:
| |
− | | |
− | 第一步:解压<nowiki>se_14000202_linux_full.tar.gz</nowiki>:
| |
− | | |
− | <pre><nowiki>tar -zxvf <nowiki>se_14000202_linux_full.tar.gz</nowiki></nowiki></pre>
| |
− | | |
− | 第二步:进入解压的目录,运行安装程序vsinst。这里要加上sudo,增加读写访问权限:
| |
− | | |
− | <pre><nowiki> sudo ./vsinst </nowiki></pre>
| |
− | | |
− | 第三步:会弹出安装信息,按住回车不放,直到弹出如下提示:
| |
− | | |
− | <pre><nowiki>
| |
− | <nowiki>Do you agree to the above license terms?[yes or no]</nowiki> </nowiki></pre>
| |
− | | |
− | 输入<pre><nowiki>
| |
− | yes </nowiki></pre>
| |
− | | |
− | 第四步:弹出如下信息:
| |
− | | |
− | <pre><nowiki>
| |
− | <nowiki>Install directory [/opt/slickedit]:</nowiki> </nowiki></pre>
| |
− | | |
− | 这里提示输入安装路径,默认按回车即可
| |
− | | |
− | 第五步:提示如下信息:
| |
− | | |
− | <pre><nowiki>
| |
− | <nowiki>Directory /opt/slickedit/ does not exist. Create [Y]?</nowiki> </nowiki></pre>
| |
− | | |
− | 输入Y,回车, 程序开始安装。
| |
− | | |
− | 第六步:安装过程中会弹出一个SlickEdit License Manager的对话框,点退出
| |
− | | |
− | 再弹出一个对话框,点<pre><nowiki>
| |
− | OK </nowiki></pre>
| |
− | | |
− | 第七步:这时会提示:
| |
− | | |
− | <pre><nowiki>
| |
− | 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></pre>
| |
− | | |
− | 第八步:退回原存放安装文件的目录,解压破解文件
| |
− | | |
− | <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>
| |
− | | |
− | 将解压出的破解文件VS拷备到/opt/slickedit/bin目录下:
| |
− | | |
− | <pre><nowiki>
| |
− | sudo cp vs /opt/slickedit/bin </nowiki></pre>
| |
− | | |
− | 第九步:在/opt/slickedit/bin目录下,执行./vs命令打开slickedit软件,看看是否大功告成?以下是执行命令:
| |
− | | |
− | <pre><nowiki>
| |
− | cd /
| |
− | | |
− | ./opt/slickedit/bin/vs </nowiki></pre>
| |
− | | |
− | 第十步:启动方式
| |
− | | |
− | 可以在<nowiki> [</nowiki>终端] 中 ./vs 启动 ,也可以自己创建一个起动器。
| |
− | | |
− | <pre><nowiki>
| |
− | cd /opt/slickedit/bitmaps </nowiki></pre>
| |
− | | |
− | 找到图标文件,slickedit 2010下我选择了<nowiki>vse_profile_256.bm</nowiki>p
| |
− | | |
− | <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
| |
− | | |
− | $ sudo gedit <nowiki>slickedit.de</nowiki>sktop </nowiki></pre>
| |
− | | |
− | 输入如下语句:
| |
− | | |
− | <pre><nowiki>
| |
− | <nowiki>[Desktop Entry]</nowiki>
| |
− | | |
− | Name=Slickedit
| |
− | | |
− | Comment=Slickedit
| |
− | | |
− | Exec=/opt/slickedit/bin/vs
| |
− | | |
− | Icon=/usr/share/icons<nowiki>/vse_profile_256.bm</nowiki>p
| |
− | | |
− | Terminal=false
| |
− | | |
− | Type=Application
| |
− | | |
− | Categories=Development;
| |
− | | |
− | StartupNotify=true </nowiki></pre>
| |
− | | |
− | 这时,在应用程序->编程中,就能找到slickedit的图标了。
| |
− | | |
− | 第十一步:如果你实在是用烦了这个软件,那就干掉他吧!进入/opt目录,输入如下指令:
| |
− | | |
− | <pre><nowiki>rm -rf slickedit </nowiki></pre>
| |
− | | |
− | 从此让他滚得越远越好!
| |
− | | |
− | 附:slickedit行号显示:
| |
− | | |
− | <pre><nowiki>tool->options->Languages->Application Languages->C/C++->View->Line numbers </nowiki></pre>
| |
− | | |
− | === eclipse ===
| |
− | ===== 在ubuntu下安装eclipse=====
| |
− | | |
− | 第一步:进入如下网站下载eclipse:
| |
− | | |
− | http://www.eclipse.org/
| |
− | | |
− | 选择Eclipse IDE for Java Developers,Linux 32 Bit或Linux 64 Bit根据自己的机器而定;
| |
− | | |
− | 第二步:将下载的文件解压到用户目录:
| |
− | | |
− | <pre><nowiki>cp <nowiki>eclipse-java-indigo-SR1-linux-gtk.tar.gz</nowiki> ~/
| |
− | | |
− | cd ~
| |
− | | |
− | tar xf <nowiki>eclipse-java-indigo-SR1-linux-gtk.tar.gz</nowiki></nowiki></pre>
| |
− | | |
− | 第三步:创建启动图标:
| |
− | | |
− | <pre><nowiki>sudo cp <nowiki>icon.xp</nowiki>m /usr/share/icons<nowiki>/eclipse.xp</nowiki>m
| |
− | | |
− | sudo gedit /usr/share/applications<nowiki>/eclipse.de</nowiki>sktop </nowiki></pre>
| |
− | | |
− | 输入如下语句:
| |
− | | |
− | <pre><nowiki><nowiki>[Desktop Entry]</nowiki>
| |
− | | |
− | Name=eclipse
| |
− | | |
− | Comment=eclipse
| |
− | | |
− | Exec=/home/lqm/eclipse/eclipse
| |
− | | |
− | Icon=/usr/share/icons<nowiki>/eclipse.xp</nowiki>m
| |
− | | |
− | Terminal=false
| |
− | | |
− | Type=Application
| |
− | | |
− | Categories=Development;
| |
− | | |
− | StartupNotify=true </nowiki></pre>
| |
− | | |
− | 这时,在应用程序->编程中,就能找到eclipse图标了,点击即可启动eclipse.
| |
− | | |
− | 第四步:安装CDT插件
| |
− | | |
− | 安装eclipse后,还不能建立C/C++工程,需安装插件。进入官网下载:
| |
− | | |
− | http://www.eclipse.org/downloads/download.php?file=/tools/cdt
| |
− | | |
− | 解压下载的文件<nowiki>cdt-master-8.0.1.zi</nowiki>p,将解压出来的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 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
| |
− | | |
− | 如果PC机上没有安装JDK,会提示需要先安装,需从java官网下载,如<nowiki>jdk-6u25-windows-i586.ex</nowiki>e,不同的版本名称不一样。安装完JDK后,再安装SDK,默认会装在C盘,建议安装在D盘,这时adb工具在下面的路径:
| |
− | | |
− | <pre><nowiki> D:\Program Files\Android\android-sdk\platform-tools </nowiki></pre>
| |
− | | |
− | 修改系统环境变量,找到Path环境变量,在前面添加
| |
− | | |
− | <pre><nowiki> D:\Program Files\Android\android-sdk\platform-tools;</nowiki></pre>
| |
− | | |
− | 注意一定要加一个分号隔开。然后在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命令行,输入如下命令验证开发板是否连 接 :
| |
− | | |
− | <pre><nowiki>adb devices </nowiki></pre>
| |
− | | |
− | 显示下面内容表示成功连接:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/7/70/Adb-device.png
| |
− | | |
− | ====进入adb shell====
| |
− | | |
− | 使用如下命令进入开发板终端:
| |
− | | |
− | <pre><nowiki>adb shell </nowiki></pre>
| |
− | | |
− | 如下图所示:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/3/33/Adb-shell.png
| |
− | | |
− | 输入exit退回DOS操作界面。注意,有时候,执行adb devices命令时,会提示error: more than one device and emulator,很有可能是播放了USB设备造成的。这时已经无法再通过adb传输数据,解决的办法很简单,如果是使用windows,直接在进程中干掉<nowiki>adb.ex</nowiki>e,再启动adb即可。
| |
− | | |
− | === 串 口 工具secureCRT===
| |
− | | |
− | 安装secureCRT工具,在计算机设备管理器中找到COM口号,点击“快速连接”,如下图:
| |
− | | |
− | 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
| |
− | | |
− | 接 下来用USB转串 口 线 接 到开发板的调试串 口 与PC即可看到调试串口打印的log信息。
| |
− | | |
− | <center>[[image:RK3399securecrt.png|939 × 641px]]</center>
| |
− | | |
− | ==安装android源码包==
| |
− | ===安装android源码依赖包===
| |
− | | |
− | '''说明:本文档所有开发全部基于ubuntu14.04 64位系统,后续不再声明。'''
| |
− | | |
− | 使用如下命令安装所需的软件包:
| |
− | | |
− | sudo apt-get update
| |
− | | |
− | sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libwxgtk3.0-dev build-essential zip curl zlib1g-dev gcc-multilib g++-multilib genromfs libc6-dev-i386 libncurses5-dev x11proto-core-dev libx11-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip lsb-core lib32z1-dev lib32ncurses5-dev texinfo mercurial subversion whois
| |
− | | |
− | 使用如下命令安装JDK1.7:
| |
− | | |
− | sudo add-apt-repository ppa:webupd8team/java
| |
− | | |
− | sudo apt-get update
| |
− | | |
− | sudo apt-get install oracle-java7-set-default
| |
− | | |
− | 执行java -version指令查看当前java安装版本:
| |
− | <pre><nowiki>
| |
− | work@works:~$ java -version
| |
− | | |
− | java version "1.7.0_80"
| |
− | | |
− | Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
| |
− | | |
− | Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
| |
− | </pre>
| |
− | 到此,jdk1.7成功安装。
| |
− | | |
− | 如果安装的版本不是1.7,会出现如下编译错误:
| |
− | <pre><nowiki>
| |
− | <nowiki>============================================</nowiki>
| |
− | | |
− | Checking build tools versions...
| |
− | | |
− | /bin/bash: java: command not found
| |
− | | |
− | /bin/bash: javac: command not found
| |
− | | |
− | <nowiki>************************************************************</nowiki>
| |
− | | |
− | You are attempting to build with the incorrect version
| |
− | | |
− | of java.
| |
− | | |
− |
| |
− | | |
− | Your version is: .
| |
− | | |
− | The required version is: "1.7.x"
| |
− | | |
− |
| |
− | | |
− | Please follow the machine setup instructions at
| |
− | | |
− | <nowiki>https://source.android.com/source/initializing.html</nowiki> | |
− | | |
− | <nowiki>************************************************************</nowiki>
| |
− | | |
− | build/core<nowiki>/main.mk:167</nowiki>: *** stop. Stop.
| |
− | | |
− | | |
− | | |
− | <nowiki>#### make failed to build some targets (3 seconds) ####</nowiki>
| |
− | </pre>
| |
− | 如果没有安装gperf,会出现如下编译错误:
| |
− | <pre><nowiki>
| |
− | /bin/bash: gperf: command not found
| |
− | | |
− | external/chromium_org/third_party/WebKit/Source/platform<nowiki>/make_platform_generated.target.linux-arm.mk:48</nowiki>: recipe for target 'out/target/product/x6818/obj/GYP/shared_intermediates/blink/platform<nowiki>/ColorData.cp</nowiki>p' failed
| |
− | | |
− | <nowiki>make: *** [out/target/product/x6818/obj/GYP/shared_intermediates/blink/platform/ColorData.cpp] Error 127</nowiki>
| |
− | </pre>
| |
− | 如果没有安装libxml2-utils,会出现如下编译错误:
| |
− | <pre><nowiki>
| |
− | /bin/bash: xmllint: command not found
| |
− | | |
− | build/core/Makefile:34: recipe for target 'out/target/product/x6818/system/etc<nowiki>/media_codecs_google_audio.xm</nowiki>l' failed
| |
− | | |
− | <nowiki>make: *** [out/target/product/x6818/system/etc/media_codecs_google_audio.xml] Error 127</nowiki>
| |
− | | |
− | make: *** Waiting for unfinished jobs....
| |
− | | |
− | /bin/bash: xmllint: command not found
| |
− | | |
− | build/core/Makefile:34: recipe for target 'out/target/product/x6818/system/etc<nowiki>/media_codecs_google_video.xm</nowiki>l' failed
| |
− | | |
− | <nowiki>make: *** [out/target/product/x6818/system/etc/media_codecs_google_video.xml] Error 127</nowiki>
| |
− | | |
− | Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java<nowiki>/jayatanaag.ja</nowiki>r
| |
− | </pre>
| |
− | 编译时会弹出如下错误:
| |
− | <pre><nowiki>
| |
− | <nowiki>******************************</nowiki>
| |
− | | |
− | You have tried to change the API from what has been previously approved.
| |
− | | |
− | | |
− | | |
− | To make these errors go away, you have two choices:
| |
− | | |
− | 1) You can add "@hide" javadoc comments to the methods, etc. listed in the
| |
− | | |
− | errors above.
| |
− | | |
− | | |
− | | |
− | 2) You can update <nowiki>current.tx</nowiki>t by executing the following command:
| |
− | | |
− | make update-api
| |
− | | |
− | | |
− | | |
− | To submit the revised <nowiki>current.tx</nowiki>t to the main Android repository,
| |
− | | |
− | you will need approval.
| |
− | | |
− | <nowiki>******************************</nowiki>
| |
− | </pre>
| |
− | 按照上面的提示,执行make update-api指令,执行完成。
| |
− | | |
− | ===安装交叉编译工具链===
| |
− | | |
− | 我们已经将交叉编译工具链集成到源码包中,无需再手动安装。交叉编译工具链路径:
| |
− | | |
− | 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
| |
− | | |
− | ===安装android源码包===
| |
− | ====通过百度网盘获取源码包====
| |
− | | |
− | 光盘中存放着android6.0的源码包,其名称为'''<nowiki>x3399_marshmallow.ta</nowiki>r.7z.001和<nowiki>x3399_marshmallow.ta</nowiki>r.7z.002'''。首先在WINDOWS下通过7z解压缩工具将两个文 件 提取成单一文件x3399_marshmallow.<nowiki>tar.bz</nowiki>2,再将解压出来的文 件 拷贝到自己的用户名目录,注意不要放在文件系统的根目录,否则会出现管理权限问题。
| |
− | | |
− | 示例方法:在用户权限下执行如下命令:
| |
− | <pre><nowiki>
| |
− | cp yourcdromdir/source/ '''x3399_marshmallow'''.<nowiki>tar.bz</nowiki>2 ~/
| |
− | | |
− | cd
| |
− | | |
− | tar xvf x3399_marshmallow.<nowiki>tar.bz</nowiki>2
| |
− | | |
− | cd x3399_marshmallow
| |
− | | |
− | git checkout .
| |
− | </pre>
| |
− | 这时,整个android文件系统全部都放在了当前解压的目录中。至此,android源码包安装完成。
| |
− | | |
− | 说明:源码包名称可能会因发布日期等有所不同,具体以网盘中实际名称为准。默认源码包中已经包含有完整的GIT调试记录。
| |
− | | |
− | ====通过远程仓库克隆源码包====
| |
− | | |
− | 直接clone远程仓库, 速度较慢,具体依据网络速度而定。使用如下指令克隆源码包:
| |
− | | |
− | git clone [https://gitlab.com/9tripod/x3399_marshmallow.git https://gitlab.com/9tripod/x3399_marshmallow.git]
| |
− | | |
− | ====同步远程仓库代码====
| |
− | | |
− | 使用如下指令添加<nowiki>gitlab.com</nowiki>远程仓库:
| |
− | | |
− | git remote add gitlab <nowiki>https://gitlab.com/9tripod/x3399_marshmallow.git</nowiki>
| |
− | | |
− | 使用如下指令同步远程仓库代码:
| |
− | | |
− | git pull gitlab master
| |
− | | |
− | ==android脚本分析配置==
| |
− | ===源码编译脚本分析===
| |
− | | |
− | 说明:各种版本的源码编译脚本大同小异,原理完全相同,具体脚本以相关源码包中的为准,这里仅用来分析其实现机制。
| |
− | | |
− | 编译脚本mk内容及注释如下:
| |
− | <pre><nowiki>
| |
− | <nowiki>#!/bin/bash</nowiki>
| |
− | | |
− | <nowiki>#</nowiki>
| |
− | | |
− | <nowiki># Description</nowiki> : Android Build Script.
| |
− | | |
− | <nowiki># Authors</nowiki> : jianjun jiang - jerryjianjun@<nowiki>gmail.com</nowiki>
| |
− | | |
− | <nowiki># Version</nowiki> : 2.00
| |
− | | |
− | <nowiki># Notes</nowiki> : None
| |
− | | |
− | <nowiki>#</nowiki>
| |
− | | |
− | | |
− | | |
− | <nowiki>#</nowiki>
| |
− | | |
− | <nowiki># JAVA PATH</nowiki>
| |
− | | |
− | <nowiki>#</nowiki>
| |
− | | |
− | export PATH=/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin:$PATH
| |
− | | |
− | | |
− | | |
− | <nowiki>#</nowiki>
| |
− | | |
− | <nowiki># Some Directories</nowiki>
| |
− | | |
− | <nowiki>#</nowiki>
| |
− | | |
− | BS_DIR_TOP=$(cd `dirname $0` ; pwd)
| |
− | | |
− | BS_DIR_TOOLS=${BS_DIR_TOP}/tools
| |
− | | |
− | BS_DIR_RELEASE=${BS_DIR_TOP}/out/release
| |
− | | |
− | BS_DIR_TARGET=${BS_DIR_TOP}/out/target/product/x3399/
| |
− | | |
− | BS_DIR_UBOOT=${BS_DIR_TOP}/u-boot
| |
− | | |
− | BS_DIR_KERNEL=${BS_DIR_TOP}/kernel
| |
− | | |
− | BS_DIR_BUILDROOT=${BS_DIR_TOP}/buildroot
| |
− | | |
− | | |
− | | |
− | <nowiki>#</nowiki>
| |
− | | |
− | <nowiki># Target </nowiki>Config
| |
− | | |
− | <nowiki>#</nowiki>
| |
− | | |
− | BS_CONFIG_BOOTLOADER_UBOOT=x3399_defconfig
| |
− | | |
− | BS_CONFIG_KERNEL=x3399_defconfig
| |
− | | |
− | BS_CONFIG_KERNEL_DTB=<nowiki>x3399-development-board.im</nowiki>g
| |
− | | |
− | BS_CONFIG_FILESYSTEM=PRODUCT-x3399-userdebug
| |
− | | |
− | BS_CONFIT_BUILDROOT=x3399_defconfig
| |
− | | |
− | | |
− | | |
− | setup_environment()
| |
− | | |
− | {
| |
− | | |
− | LANG=C
| |
− | | |
− | PATH=${BS_DIR_TOP}/out/host/linux-x86/bin:$PATH;
| |
− | | |
− | cd ${BS_DIR_TOP};
| |
− | | |
− | mkdir -p ${BS_DIR_RELEASE} || return 1
| |
− | | |
− | }
| |
− | | |
− | | |
− | | |
− | build_bootloader_uboot()
| |
− | | |
− | {
| |
− | | |
− | # Compiler uboot
| |
− | | |
− | cd ${BS_DIR_UBOOT} || return 1
| |
− | | |
− | make ARCHV=aarch64 distclean || return 1
| |
− | | |
− | make ARCHV=aarch64 ${BS_CONFIG_BOOTLOADER_UBOOT} || return 1
| |
− | | |
− | make ARCHV=aarch64 -j${threads} || return 1
| |
− | | |
− | | |
− | | |
− | # Copy bootloader to release directory
| |
− | | |
− | cp -v ${BS_DIR_UBOOT}/<nowiki>trust.im</nowiki>g ${BS_DIR_RELEASE}
| |
− | | |
− | cp -v ${BS_DIR_UBOOT}/*MiniLoaderAll_*.bin ${BS_DIR_RELEASE}
| |
− | | |
− | cp -v ${BS_DIR_UBOOT}/<nowiki>uboot.im</nowiki>g ${BS_DIR_RELEASE}
| |
− | | |
− | | |
− | | |
− | return 0
| |
− | | |
− | }
| |
− | | |
− | | |
− | | |
− | build_kernel()
| |
− | | |
− | {
| |
− | | |
− | # Compiler kernel
| |
− | | |
− | cd ${BS_DIR_KERNEL} || return 1
| |
− | | |
− | make ARCH=arm64 ${BS_CONFIG_KERNEL} || return 1
| |
− | | |
− | make -j${threads} ARCH=arm64 Image || return 1
| |
− | | |
− | make -j${threads} ARCH=arm64 ${BS_CONFIG_KERNEL_DTB} || return 1
| |
− | | |
− | | |
− | | |
− | # Copy kernel to release directory
| |
− | | |
− | cp -v ${BS_DIR_KERNEL}/<nowiki>resource.im</nowiki>g ${BS_DIR_RELEASE}
| |
− | | |
− | cp -v ${BS_DIR_KERNEL}/<nowiki>kernel.im</nowiki>g ${BS_DIR_RELEASE}
| |
− | | |
− | | |
− | | |
− | return 0
| |
− | | |
− | }
| |
− | | |
− | | |
− | | |
− | build_system()
| |
− | | |
− | {
| |
− | | |
− | cd ${BS_DIR_TOP} || return 1
| |
− | | |
− | source build/<nowiki>envsetup.sh</nowiki> || return 1
| |
− | | |
− | make -j${threads} ${BS_CONFIG_FILESYSTEM} || return 1
| |
− | | |
− | | |
− | | |
− | echo "create <nowiki>boot.im</nowiki>g..."
| |
− | | |
− | <nowiki>[ -d ${BS_DIR_TARGET}/root ] && \</nowiki>
| |
− | | |
− | mkbootfs ${BS_DIR_TARGET}/root | minigzip > ${BS_DIR_TARGET}/<nowiki>ramdisk.im</nowiki>g && \
| |
− | | |
− | truncate -s "%4" ${BS_DIR_TARGET}/<nowiki>ramdisk.im</nowiki>g && \
| |
− | | |
− | ${BS_DIR_TOOLS}/mkkrnlimg ${BS_DIR_TARGET}/<nowiki>ramdisk.im</nowiki>g ${BS_DIR_RELEASE}/<nowiki>boot.im</nowiki>g >/dev/null
| |
− | | |
− | | |
− | | |
− | echo "create <nowiki>recovery.im</nowiki>g..."
| |
− | | |
− | <nowiki>[ -d ${BS_DIR_TARGET}/recovery/root ] && \</nowiki>
| |
− | | |
− | mkbootfs ${BS_DIR_TARGET}/recovery/root | minigzip > ${BS_DIR_TARGET}/<nowiki>ramdisk-recovery.im</nowiki>g && \
| |
− | | |
− | truncate -s "%4" ${BS_DIR_TARGET}/<nowiki>ramdisk-recovery.im</nowiki>g && \
| |
− | | |
− | mkbootimg --kernel ${BS_DIR_TARGET}/kernel --ramdisk ${BS_DIR_TARGET}/<nowiki>ramdisk-recovery.im</nowiki>g --output ${BS_DIR_TARGET}/<nowiki>recovery.im</nowiki>g && \
| |
− | | |
− | cp -av ${BS_DIR_TARGET}/<nowiki>recovery.im</nowiki>g ${BS_DIR_RELEASE}
| |
− | | |
− | | |
− | | |
− | system_size=`ls -l ${BS_DIR_TARGET}/<nowiki>system.im</nowiki>g | awk '{print $5;}'`
| |
− | | |
− | <nowiki>[ ${</nowiki>system_size} -gt "0" ] || { echo "Please build android first!!!" && exit 1; }
| |
− | | |
− | MAKE_EXT4FS_ARGS=" -L system -S ${BS_DIR_TARGET}/root/file_contexts -a system ${BS_DIR_RELEASE}/<nowiki>system.im</nowiki>g ${BS_DIR_TARGET}/system"
| |
− | | |
− | ok=0
| |
− | | |
− | <nowiki>while [ "$ok" = "0" ]; do</nowiki>
| |
− | | |
− | make_ext4fs -l ${system_size} ${MAKE_EXT4FS_ARGS} >/dev/null 2>&1 &&
| |
− | | |
− | tune2fs -c -1 -i 0 ${BS_DIR_RELEASE}/<nowiki>system.im</nowiki>g >/dev/null 2>&1 &&
| |
− | | |
− | ok=1 || system_size=$((${system_size} + 5242880))
| |
− | | |
− | done
| |
− | | |
− | e2fsck -fyD ${BS_DIR_RELEASE}/<nowiki>system.im</nowiki>g >/dev/null 2>&1 || true
| |
− | | |
− | | |
− | | |
− | return 0
| |
− | | |
− | }
| |
− | | |
− | | |
− | | |
− | build_buildroot()
| |
− | | |
− | {
| |
− | | |
− | # Compiler buildroot
| |
− | | |
− | cd ${BS_DIR_BUILDROOT} || return 1
| |
− | | |
− | make ${BS_CONFIT_BUILDROOT} || return 1
| |
− | | |
− | make -j${threads} || return 1
| |
− | | |
− | | |
− | | |
− | # Copy image to release directory
| |
− | | |
− | cp -v ${BS_DIR_BUILDROOT}/output/images<nowiki>/rootfs.ex</nowiki>t2 ${BS_DIR_RELEASE}/<nowiki>linux-rootfs.im</nowiki>g
| |
− | | |
− | }
| |
− | | |
− | | |
− | | |
− | build_update()
| |
− | | |
− | {
| |
− | | |
− | cd ${BS_DIR_RELEASE} || return 1
| |
− | | |
| | | |
− | | + | |Icon=fa-umbrella |
− | # Make update-<nowiki>android.im</nowiki>g
| + | |Class=panel-warning-white-border |
− | | + | }}{{Link Box |
− | echo "create update-<nowiki>android.im</nowiki>g..."
| + | |Title=Android系统 |
− | | + | |Body= |
− | cp -av ${BS_DIR_TOOLS}/package-file ${BS_DIR_RELEASE}/package-file || return 1;
| + | <li>[[PX30 Android 8.1 Manual#android开发平台的搭建|android开发平台搭建和开发工具]]</li> |
− | | + | <li>[[PX30 Android 8.1 Manual#安装android源码包|android源码包安装和脚本分析配置]]</li> |
− | ${BS_DIR_TOOLS}/afptool -pack ${BS_DIR_RELEASE}/ ${BS_DIR_RELEASE}/<nowiki>temp.im</nowiki>g || return 1;
| + | <li>[[PX30 Android 8.1 Manual#编译android源码包|android 源码包编译和映像文件烧写]]</li> |
− | | + | <li>[[PX30 Android 8.1 Manual#android开发指南|android开发者指南和android内核驱动]]</li> |
− | ${BS_DIR_TOOLS}/rkImageMaker -RK330C ${BS_DIR_RELEASE}<nowiki>/RK3399MiniLoaderAll_V1.05.bi</nowiki>n ${BS_DIR_RELEASE}/<nowiki>temp.im</nowiki>g ${BS_DIR_RELEASE}/update-<nowiki>android.im</nowiki>g -os_type:androidos || return 1; | + | <li>[[PX30 Android 8.1 Manual#android开发项目实战|开发项目实战]]</li> |
− | | + | |Icon=fa-android |
− | rm -fr ${BS_DIR_RELEASE}/<nowiki>temp.im</nowiki>g || return 1; | + | |Class=panel-info-white-border |
− | | + | }}{{Link Box |
− | | + | |Title=Linux QT系统 |
− | | + | |Body= |
− | # Make update-<nowiki>linux.im</nowiki>g
| + | <li>[[PX30 Linux Manual#编译 Linux+QT|编译 Linux+QT]]</li> |
− | | + | <li>[[PX30 Linux Manual#烧写linux QT映像|QT映像烧写]]</li> |
− | echo "create update-<nowiki>linux.im</nowiki>g..." | + | <li>[[PX30 Linux Manual#QT文件系统的搭建|QT文件系统搭建和默认示例演示]]</li> |
− | | + | <li>[[PX30 Linux Manual#|qttest测试程序]]</li> |
− | cp -av ${BS_DIR_TOOLS}/package-file-linux ${BS_DIR_RELEASE}/package-file || return 1;
| + | <li>[[PX30 Linux Manual#linux 底层开发示例|linux底层开发示例和应用开发]]</li> |
− | | + | |Icon=fa-linux |
− | ${BS_DIR_TOOLS}/afptool -pack ${BS_DIR_RELEASE}/ ${BS_DIR_RELEASE}/<nowiki>temp.im</nowiki>g || return 1; | + | |Class=panel-neutral-white-border |
− | | + | }}{{Link Box |
− | ${BS_DIR_TOOLS}/rkImageMaker -RK330C ${BS_DIR_RELEASE}<nowiki>/RK3399MiniLoaderAll_V1.05.bi</nowiki>n ${BS_DIR_RELEASE}/<nowiki>temp.im</nowiki>g ${BS_DIR_RELEASE}/update-<nowiki>linux.im</nowiki>g -os_type:androidos || return 1; | + | |Title=Ubuntu系统 |
− | | + | |Body= |
− | rm -fr ${BS_DIR_RELEASE}/<nowiki>temp.im</nowiki>g || return 1; | + | <li>[[Null Document|test link]]</li> |
− | | + | <li>[[Null Document|test link]]</li> |
− | | + | <li>[[Null Document|test link]]</li> |
− | | + | <li>[[Null Document|test link]]</li> |
− | return 0 | + | <li>[[Null Document|test link]]</li> |
− | | + | |Icon=fa-linux |
− | }
| + | |Class=panel-success-white-border |
− | | + | }}{{Link Box |
− | | + | |Title=裸机实验 |
− | | + | |Body= |
− | copy_other_files()
| + | <li>[[Null Document|test link]]</li> |
− | | + | <li>[[Null Document|test link]]</li> |
− | {
| + | <li>[[Null Document|test link]]</li> |
− | | + | <li>[[Null Document|test link]]</li> |
− | cd ${BS_DIR_TOP} || return 1
| + | <li>[[Null Document|test link]]</li> |
− | | + | |
− | | + | |Icon=fa-wrench |
− | | + | |Class=panel-warning-white-border |
− | cp -av ${BS_DIR_TOP}/device/rockchip/rk3399/x3399<nowiki>/parameter.tx</nowiki>t ${BS_DIR_RELEASE} || return 1; | + | }}{{Link Box |
− | | + | |Title= 资源链接 |
− | cp -av ${BS_DIR_TOP}/device/rockchip/rk3399/x3399<nowiki>/misc.im</nowiki>g ${BS_DIR_RELEASE} || return 1; | + | |Body= |
− | | + | <li>[[gitlab|gitlab社区]]</li> |
− | cp -av ${BS_DIR_TOP}/device/rockchip/rk3399/x3399<nowiki>/parameter-linux.tx</nowiki>t ${BS_DIR_RELEASE} || return 1; | + | <li>[[PX30百度网盘|PX30百度网盘]]</li> |
− | | + | <li>[[PX30 Datasheet|PX30芯片手册分离版]]</li> |
− | cp -av ${BS_DIR_TOP}/device/rockchip/rk3399/x3399<nowiki>/misc-linux.im</nowiki>g ${BS_DIR_RELEASE} || return 1; | + | <li>[[google drive|google drive]]</li> |
− | | + | |Icon=fa-rss |
− | return 0 | + | |Class=panel-info-white-border |
− | | + | }} |
− | }
| |
− | | |
− | | |
− | | |
− | threads=1
| |
− | | |
− | uboot=no
| |
− | | |
− | kernel=no
| |
− | | |
− | system=no
| |
− | | |
− | buildroot=no
| |
− | | |
− | update=no
| |
− | | |
− | | |
− | | |
− | <nowiki>if [ -z $1 ]; then</nowiki> | |
− | | |
− | uboot=yes | |
− | | |
− | kernel=yes
| |
− | | |
− | system=yes
| |
− | | |
− | buildroot=yes
| |
− | | |
− | update=yes | |
− | | |
− | fi
| |
− | | |
− | | |
− | | |
− | <nowiki>while [ "$1" ]; do</nowiki> | |
− | | |
− | case "$1" in | |
− | | |
− | -j=*) | |
− | | |
− | x=$1
| |
− | | |
− | threads=${x#-j=}
| |
− | | |
− | ;;
| |
− | | |
− | -u|--uboot)
| |
− | | |
− | uboot=yes
| |
− | | |
− | ;;
| |
− | | |
− | -k|--kernel)
| |
− | | |
− | kernel=yes
| |
− | | |
− | ;;
| |
− | | |
− | -s|--system)
| |
− | | |
− | system=yes
| |
− | | |
− | ;;
| |
− | | |
− | -b|--buildroot)
| |
− | | |
− | buildroot=yes
| |
− | | |
− | ;;
| |
− | | |
− | -U|--update)
| |
− | | |
− | update=yes
| |
− | | |
− | ;;
| |
− | | |
− | -a|--all)
| |
− | | |
− | uboot=yes
| |
− | | |
− | kernel=yes
| |
− | | |
− | system=yes
| |
− | | |
− | buildroot=yes
| |
− | | |
− | update=yes
| |
− | | |
− | ;;
| |
− | | |
− | -h|--help)
| |
− | | |
− | cat >&2 <<EOF
| |
− | | |
− | Usage: <nowiki>build.sh</nowiki><nowiki> [OPTION]</nowiki>
| |
− | | |
− | 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
| |
− | | |
− | -b, --buildroot build buildroot file system for linux platform
| |
− | | |
− | -U, --update build update file
| |
− | | |
− | -a, --all build all, include anything
| |
− | | |
− | -h, --help display this help and exit
| |
− | | |
− | EOF
| |
− | | |
− | exit 0
| |
− | | |
− | ;;
| |
− | | |
− | *)
| |
− | | |
− | echo "<nowiki>build.sh</nowiki>: Unrecognised option $1" >&2
| |
− | | |
− | exit 1
| |
− | | |
− | ;;
| |
− | | |
− | esac
| |
− | | |
− | shift
| |
− | | |
− | done
| |
− | | |
− | | |
− | | |
− | setup_environment || exit 1
| |
− | | |
− | copy_other_files || exit 1
| |
− | | |
− | | |
− | | |
− | <nowiki>if [ "${</nowiki>uboot}" = yes ]; then
| |
− | | |
− | build_bootloader_uboot || exit 1
| |
− | | |
− | fi
| |
− | | |
− | | |
− | | |
− | <nowiki>if [ "${kernel}" = yes ]; then</nowiki>
| |
− | | |
− | build_kernel || exit 1
| |
− | | |
− | fi
| |
− | | |
− | | |
− | | |
− | <nowiki>if [ "${system}" = yes ]; then</nowiki>
| |
− | | |
− | build_system || exit 1
| |
− | | |
− | fi
| |
− | | |
− | | |
− | | |
− | <nowiki>if [ "${</nowiki>buildroot}" = yes ]; then
| |
− | | |
− | build_buildroot || exit 1
| |
− | | |
− | fi
| |
− | | |
− | | |
− | | |
− | <nowiki>if [ "${update}" = yes ]; then</nowiki>
| |
− | | |
− | build_update || exit 1
| |
− | | |
− | fi
| |
− | | |
− | | |
− | | |
− | exit 0
| |
− | </pre>
| |
− | ===配置使用MIPI屏===
| |
− | | |
− | 在kernel/arch/arm64/boot/dts/rockchip目录下存放了多个已经调试好的液晶屏的配置文件,7寸MIPI屏的配置文件为<nowiki>lcd-mipi-7inch-wy070ml.dt</nowiki>si,7.9寸EDP屏的配置文件为<nowiki>lcd-edp-lp079qx1.dt</nowiki>si。在kernel/arch/arm64/boot/dts/rockchip/ <nowiki>x3399-development-board.dt</nowiki>s中选择配置使用的液晶模组即可,如需要使用7寸MIPI屏,示例代码如下:
| |
− | <pre><nowiki>
| |
− | &rk_screen {
| |
− | | |
− | #include "<nowiki>lcd-mipi-7inch-wy070ml.dt</nowiki>si"
| |
− | | |
− | /* #include "<nowiki>lcd-edp-lp079qx1.dt</nowiki>si" */
| |
− | | |
− | };
| |
− | </pre>
| |
− | | |
− | | |
− | ==编译android源码包==
| |
− | | |
− | 说明:编译映像时一定要使用普通权限编译。编译完成后,生成的映像文件
| |
− | <pre>
| |
− | <nowiki>RK3399MiniLoaderAll_V1.05.bi</nowiki>n,<nowiki>uboot.im</nowiki>g,<nowiki>trust.im</nowiki>g,<nowiki>misc.im</nowiki>g,misc-<nowiki>linux.im</nowiki>g,<nowiki>parameter-linux.tx</nowiki>t,<nowiki>parameter.tx</nowiki>t,<nowiki>resource.im</nowiki>g,<nowiki>kernel.im</nowiki>g,<nowiki>boot.im</nowiki>g,<nowiki>system.im</nowiki>g,<nowiki>recovery.im</nowiki>g, update-<nowiki>android.im</nowiki>g。
| |
− | </pre>
| |
− | ===编译uboot===
| |
− | | |
− | 在android源码目录下执行如下命令编译uboot,编译完成后映像文件<nowiki>RK3399MiniLoaderAll_V1.05.bi</nowiki>n(因版本不同,名称不一定相同)以及<nowiki>uboot.im</nowiki>g会释放到out/release目录。
| |
− | | |
− | ./<nowiki>mk.sh</nowiki> -u
| |
− | | |
− | ===编译android内核===
| |
− | | |
− | 在android源码目录下执行如下命令编译android内核,编译完成后映像文件<nowiki>kernel.im</nowiki>g、<nowiki>resource.im</nowiki>g会释放到out/release目录。
| |
− | | |
− | ./<nowiki>mk.sh</nowiki> -k
| |
− | | |
− | ===编译android文件系统===
| |
− | | |
− | 在android源码目录下执行如下命令编译android映像文件,编译完成后映像文件会释放到out/release目录。
| |
− | | |
− | ./<nowiki>mk.sh</nowiki> -s
| |
− | | |
− | 编译完文件系统,在out/release目录下会生成如下文件:
| |
− | | |
− | * <nowiki>RK3399MiniLoaderAll_V1.05.bi</nowiki>n:uboot映像文件
| |
− | * <nowiki>trust.im</nowiki>g:uboot映像文件
| |
− | * <nowiki>uboot.im</nowiki>g:uboot映像文件
| |
− | * <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:分区映像,负责启动模式切换和急救模式的参数传递。
| |
− | ===生成update-<nowiki>android.im</nowiki>g文件系统===
| |
− | | |
− | 在android源码目录下执行如下命令生成单一android映像文件update-<nowiki>android.im</nowiki>g:
| |
− | | |
− | ./<nowiki>mk.sh</nowiki> -U
| |
− | | |
− | update-<nowiki>android.im</nowiki>g为整个升级文件的单一映像,包括了uboot,内核,文件系统等。注意,生成update-<nowiki>android.im</nowiki>g的先决条件是已经成功编译了uboot,内核和文件系统,缺一不可。如果没有编译针对linux平台的文件系统,在执行该指令时,会提示无法生成update-<nowiki>linux.im</nowiki>g的错误,如果读者不使用linux系统,不用理会。其编译信息如下:
| |
− | <pre><nowiki>
| |
− | lqm@lqm:/home/DISK1/x3399_marshmallow$ ./<nowiki>mk.sh</nowiki> -U
| |
− | | |
− | '/home/DISK1/x3399_marshmallow/device/rockchip/rk3399/x3399<nowiki>/parameter.tx</nowiki>t' -> '/home/DISK1/x3399_marshmallow/out/release<nowiki>/parameter.tx</nowiki>t'
| |
− | | |
− | '/home/DISK1/x3399_marshmallow/device/rockchip/rk3399/x3399<nowiki>/misc.im</nowiki>g' -> '/home/DISK1/x3399_marshmallow/out/release<nowiki>/misc.im</nowiki>g'
| |
− | | |
− | '/home/DISK1/x3399_marshmallow/device/rockchip/rk3399/x3399<nowiki>/parameter-linux.tx</nowiki>t' -> '/home/DISK1/x3399_marshmallow/out/release<nowiki>/parameter-linux.tx</nowiki>t'
| |
− | | |
− | '/home/DISK1/x3399_marshmallow/device/rockchip/rk3399/x3399<nowiki>/misc-linux.im</nowiki>g' -> '/home/DISK1/x3399_marshmallow/out/release<nowiki>/misc-linux.im</nowiki>g'
| |
− | | |
− | create update-<nowiki>android.im</nowiki>g...
| |
− | | |
− | '/home/DISK1/x3399_marshmallow/tools/package-file' -> '/home/DISK1/x3399_marshmallow/out/release/package-file'
| |
− | | |
− | Android Firmware Package Tool v1.62
| |
− | | |
− | <nowiki>------ PACKAGE ------</nowiki>
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release/package-file
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/RK3399MiniLoaderAll_V1.05.bi</nowiki>n
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/parameter.tx</nowiki>t
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/trust.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/uboot.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/misc.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/resource.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/kernel.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/boot.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/recovery.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/system.im</nowiki>g
| |
− | | |
− | Add CRC...
| |
− | | |
− | Make firmware OK!
| |
− | | |
− | <nowiki>------ OK ------</nowiki>
| |
− | | |
− | <nowiki>********</nowiki>RKImageMaker ver 1.63********
| |
− | | |
− | Generating new image, please wait...
| |
− | | |
− | Writing head info...
| |
− | | |
− | Writing boot file...
| |
− | | |
− | Writing firmware...
| |
− | | |
− | Generating MD5 data...
| |
− | | |
− | MD5 data generated successfully!
| |
− | | |
− | New image generated successfully!
| |
− | | |
− | create update-<nowiki>linux.im</nowiki>g...
| |
− | | |
− | '/home/DISK1/x3399_marshmallow/tools/package-file-linux' -> '/home/DISK1/x3399_marshmallow/out/release/package-file'
| |
− | | |
− | Android Firmware Package Tool v1.62
| |
− | | |
− | <nowiki>------ PACKAGE ------</nowiki>
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release/package-file
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/RK3399MiniLoaderAll_V1.05.bi</nowiki>n
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/parameter-linux.tx</nowiki>t
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/trust.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/uboot.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/misc-linux.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/resource.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/kernel.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/boot.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/recovery.im</nowiki>g
| |
− | | |
− | Add file: /home/DISK1/x3399_marshmallow/out/release<nowiki>/linux-rootfs.im</nowiki>g
| |
− | | |
− | Error:<AddFile> open file failed,err=2!
| |
− | | |
− | <nowiki>------ FAILED ------</nowiki>
| |
− | | |
− | lqm@lqm:/home/DISK1/x3399_marshmallow$
| |
− | </pre>
| |
− | ===查看编译帮助===
| |
− | | |
− | 执行如下指令可查询mk脚本使用方法:
| |
− | | |
− | ./<nowiki>mk.sh</nowiki> -h
| |
− | | |
− | == 烧写android映像文件 ==
| |
− | === Windows系统映像烧写 ===
| |
− | ==== RKTool驱动安装====
| |
− | | |
− | 解压<nowiki>RKTools.ra</nowiki>r,工具路径:<pre><nowiki>SDK\RKTools\windows\Release_DriverAssitant</nowiki></pre>打开“<nowiki>DriverInstall.ex</nowiki>e”,点击“驱动安装”,提示安装驱动成功即可。
| |
− | | |
− | 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。
| |
− | | |
− | 2.XP系统在驱动安装完后,若还提示“发现新设备”, 安装驱动时选择“自动安装”。
| |
− | | |
− | 3.若之前已经安装过老版本驱动,请先点击“驱动卸载”后再进行“驱动安装”。
| |
− | | |
− | ====烧录方法一:单个升级固件<nowiki>update-android.img</nowiki>g====
| |
− | ===== 生成统一固件<nowiki>update-android.img</nowiki>g =====
| |
− | | |
− | 我们已经在mk脚本中集成了生成统一固件的方法,在编译android文件系统时(./mk -s),会自动生成<nowiki>update-android.img</nowiki>g,并释放到out/release目录。
| |
− | | |
− | ===== 烧录固件<nowiki>update-android.img</nowiki>g =====
| |
− | | |
− | 解压光盘 tools\x3399 烧写工具\windows 目录下的 AndroidTool_Release_v2.38.zip 文件,得到 AndroidTool_Release_v2.38 文件夹,打开 AndroidTool.exe, 选择“升级固件”选项卡,
| |
− | 点击“固件”,在弹出窗口中选择已经生成的 update-android.img 文件,如下图所示。
| |
− | | |
− | <center>[[image:RK3399windowtool.png|905 × 456px]]</center>
| |
− | | |
− | 工具配置好后, 将 PC 端串口线连接开发板的调试串口,将 PC 端 TYPEC 延长线连接到开发板的 TYPEC 接口, 按下 RECOVERY 键( VOL+键) ,烧录工具界面会提示发现一个 LOADER 设备,然后点击升级,即可开始升级过程(注:如果提示发现一个 ADB 设备,点击切换按钮切换成LOADER 设备即可)。
| |
− | | |
− | <center>[[image:RK3399windowtool1.png|905 × 456px]]</center>
| |
− | | |
− | 升级完成后将会出现如下界面:
| |
− | <center>[[image:RK3399windowtool3.png|905 × 456px]]</center>
| |
− | | |
− | ==== 烧录方法二:多设备升级固件<nowiki>update-android.img</nowiki>g ====
| |
− | | |
− | 该工具适合用户批量刷机,可以同时给多台开发板刷机。
| |
− | | |
− | 解压光盘 tools\x3399 烧写工具\windows 目录下的 FactoryTool-v1.42e.rar 文件,打开“<nowiki>FactoryTool.ex</nowiki>e”,点击“固件”选择<nowiki>update-android.img</nowiki>g,勾选“升级”,点击“启动”,如下图所示:
| |
− | | |
− | 步骤1:点击固件,选择<nowiki>update-android.img</nowiki>g;
| |
− | | |
− | 步骤2:点击启动(选择升级按钮);
| |
− | | |
− | 步骤3:连接开发板 USB、 DC 电源,按下 recovery 键(对应 VOL+键),对应 USB 口发现设备,并实现自动升级;然后重复步骤 3 即可同时升级第二台、第三台设备,升级成功或者失败的设备会在两边的列表中列出,移除成功或者失败的设备后可以继续连接需要升级的设备
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/3/3a/Update-fireware-multi-device.png
| |
− | | |
− | === Linux系统烧写映像===
| |
− | ==== 生成固件<nowiki>update-android.img</nowiki>====
| |
− | | |
− | 我们已经在mk脚本中集成了生成统一固件的方法,在编译android文件系统时(./mk -s),会自动生成<nowiki>update-android.img</nowiki>,并释放到out/release目录。
| |
− | | |
− | ==== 烧录固件<nowiki>update-android.img</nowiki>====
| |
− | | |
− | 工具路径:
| |
− | tools\x3399 烧写工具\linux\ Linux_Upgrade_Tool_v1.24.zip
| |
− | | |
− | 在升级之前将<nowiki>update-android.img</nowiki>g拷贝到upgrade_tool相同目录下,运行upgrade_tool(需要sudo)
| |
− | | |
− | <pre><nowiki>work@ubuntu:~/3288/Linux_Upgrade_Tool_v1.2/cp rockdev<nowiki>/update-android.img</nowiki> .
| |
− | | |
− | 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。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/6/68/DevNo1.png
| |
− | | |
− | * CD命令: 选择设备, 当执行的命令有包含设备重启操作时, 需重新选择设备,当改变操作设备时需重新选择
| |
− | * SD命令:msc切换到rockusb升级模式。 当切换执行成功后, 需要重新选择设备
| |
− | * UF命令:升级完整<nowiki>update-android.img</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-android.img</nowiki>g 开始更新固件,下图为更新完成截图。
| |
− | | |
− | <pre><nowiki>Rockusb>uf <nowiki>update-android.img</nowiki> </nowiki></pre>
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/0/03/DevNo2.png
| |
− | | |
− | 备注:也可通过配置<nowiki>config.in</nowiki>i文件配置升级映像文件,只需输入UF即可升级,请用户自行尝试。
| |
− | | |
− | ==== 使用upgrade_tool指令烧写映像 ====
| |
− | | |
− | 上一节我们介绍了通过upgrade_tool烧写统一固件<nowiki>update-android.img</nowiki>的方法,熟悉三星平台的开发者会发现,这种方法并不是很高效,真正操作起来,它远没有fastboot工具来的迅速。其实,upgrade_tool工具同样支持类似于fastboot的烧写方式。
| |
− | | |
− | 为了烧写方便,在mk脚本中,默认在编译系统时,已经将烧写工具upgrade_tool拷贝到out/release目录了。
| |
− | | |
− | 第一步:打开串口终端,并打开minicom,用于适时监控串口调试信息;
| |
− | | |
− | 第二步:按住RECOVERY键,连接USB OTG线和电源线,这时uboot打印信息将会提示已经进入USB下载模式。如果接通电源后没来得及按住RECOVERY键,在按住RECOVERY键的同时,再按下复位键即可。注意,使用
| |
− | | |
− | 第二步:打开第二个串口终端,进入out/release目录;
| |
− | | |
− | 第三步:在out/release目录下敲击如下指令,烧写相应的映像。
| |
− | <pre><nowiki>
| |
− | | |
− | sudo upgrade_tool di –k <nowiki>kernel.im</nowiki>g(烧写内核)
| |
− | | |
− | sudo upgrade_tool di –s <nowiki>system.im</nowiki>g(烧写文件系统)
| |
− | | |
− | sudo upgrade_tool di resource <nowiki>resource.im</nowiki>g(烧写资源文件)
| |
− | | |
− | sudo upgrade_tool di –r <nowiki>recovery.im</nowiki>g(烧写急救文件)
| |
− | | |
− | sudo upgrade_tool ul <nowiki>RK3288UbootLoader_V2.30.10.bi</nowiki>n(烧写bootloader)
| |
− | | |
− | sudo upgrade_tool uf <nowiki>update-android.img</nowiki>g(烧写统一固件) </nowiki></pre>
| |
− | | |
− | ==== 使用Rkflashkit烧写映像 ====
| |
− | | |
− | rkflashkit 有图形界面,后加了命令行支持,更是好用。
| |
− | <pre><nowiki>
| |
− | | |
− | work@ubuntu:~/rktool$ sudo apt-get install build-essential fakeroot
| |
− | | |
− | work@ubuntu:~/rktool$ git clone <nowiki>https://github.com/linuxerwang/rkflashkit</nowiki>
| |
− | | |
− | 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 <nowiki>rkflashkit_0.1.4_all.de</nowiki>b </nowiki></pre>
| |
− | | |
− | 注意:<nowiki>rkflashkit_0.1.4_all.de</nowiki>b会因版本更新,版本数字可能会有所变化,如果执行失败,执行ls命令查看下即可。
| |
− | | |
− | <pre><nowiki>work@ubuntu:~/rktool/$ sudo rkflashkit </nowiki></pre>
| |
− | | |
− | 如下是图形界面,在Devices下选择设备,选择要烧写的分区和对应的映像文件,点击Flash image即可。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/0/08/Rkflashkit.png
| |
− | | |
− | 该工具也支持命令行,使用help命令查看使用方法
| |
− | | |
− | <pre><nowiki>work@ubuntu:~/rktool/rkflashkit$ rkflashkit --help
| |
− | | |
− | <nowiki>Usage: <cmd> [args] [<cmd> [args]...]</nowiki>
| |
− | | |
− | | |
− | | |
− | 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 <nowiki>boot.im</nowiki>g and <nowiki>kernel.im</nowiki>g, then reboot:
| |
− | | |
− | | |
− | | |
− | 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>
| |
− | | |
− | == android开发指南 ==
| |
− | === 命令终端 ===
| |
− | | |
− | 将串口连接开发板上调试串口,进入android系统后,会自动进入android终端,如下图所示:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/9/94/Command.png
| |
− | | |
− | === 播放mp3 ===
| |
− | ==== android命令行播放mp3 ====
| |
− | | |
− | 在android的在命令行下,可以使用强大的am指令做很多事情。在android终端输入am,正常情况下会有如下提示信息:
| |
− | | |
− | <pre><nowiki># am</nowiki>
| |
− | | |
− | <nowiki>usage: am [subcommand] [options]</nowiki>
| |
− | | |
− | | |
− | | |
− | <nowiki> start an Activity: am start [-D] [-W] <INTENT></nowiki>
| |
− | | |
− | -D: enable debugging
| |
− | | |
− | -W: wait for launch to complete
| |
− | | |
− | | |
− | | |
− | start a Service: am startservice <INTENT>
| |
− | | |
− | | |
− | | |
− | send a broadcast Intent: am broadcast <INTENT>
| |
− | | |
− | | |
− | | |
− | <nowiki> start an Instrumentation: am instrument [flags] <COMPONENT></nowiki>
| |
− | | |
− | -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:
| |
− | | |
− | <nowiki> [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]</nowiki>
| |
− | | |
− | <nowiki> [-c <CATEGORY> [-c <CATEGORY>] ...]</nowiki>
| |
− | | |
− | <nowiki> [-e|--es <EXTRA_KEY><EXTRA_STRING_VALUE> ...]</nowiki>
| |
− | | |
− | <nowiki> [--esn <EXTRA_KEY> ...]</nowiki>
| |
− | | |
− | <nowiki> [--ez <EXTRA_KEY><EXTRA_BOOLEAN_VALUE> ...]</nowiki>
| |
− | | |
− | <nowiki> [-e|--ei <EXTRA_KEY><EXTRA_INT_VALUE> ...]</nowiki>
| |
− | | |
− | <nowiki> [-n <COMPONENT>] [-f <FLAGS>]</nowiki>
| |
− | | |
− | <nowiki> [--grant-read-uri-permission] [--grant-write-uri-permission]</nowiki>
| |
− | | |
− | <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>
| |
− | | |
− | <nowiki> [--activity-launched-from-history] [--activity-multiple-task]</nowiki>
| |
− | | |
− | <nowiki> [--activity-no-animation] [--activity-no-history]</nowiki>
| |
− | | |
− | <nowiki> [--activity-no-user-action] [--activity-previous-is-top]</nowiki>
| |
− | | |
− | <nowiki> [--activity-reorder-to-front] [--activity-reset-task-if-needed]</nowiki>
| |
− | | |
− | <nowiki> [--activity-single-top]</nowiki>
| |
− | | |
− | <nowiki> [--receiver-registered-only] [--receiver-replace-pending]</nowiki>
| |
− | | |
− | <nowiki> [<URI>]</nowiki> </pre>
| |
− | | |
− | 启动的方法为:
| |
− | | |
− | <pre><nowiki><nowiki># am start -n </nowiki>包(package)名/包名.活动(activity)名称 </pre>
| |
− | | |
− | 启动的方法可以从每个应用的<nowiki>AndroidManifest.xm</nowiki>l的文件中得到,以计算器(calculator)为例,
| |
− | | |
− | <pre><nowiki><?xml version="1.0" encoding=""?>
| |
− | | |
− | | |
− | | |
− | <manifestxmlns:android="<nowiki>http://schemas.android.com/apk/res/android</nowiki>"
| |
− | | |
− | | |
− | | |
− | package="<nowiki>com.android.ca</nowiki>lculator2">
| |
− | | |
− | | |
− | | |
− | <applicationandroid:label="@string/app_name"android:icon="@drawable/icon">
| |
− | | |
− | | |
− | | |
− | <activity android:name="Calculator"
| |
− | | |
− | | |
− | | |
− | android:theme="@android:style/Theme.Black">
| |
− | | |
− | | |
− | | |
− | <intent-filter>
| |
− | | |
− | | |
− | | |
− | <action android:name="<nowiki>android.intent.ac</nowiki>tion.MAIN" />
| |
− | | |
− | | |
− | | |
− | <categoryandroid:name="<nowiki>android.intent.ca</nowiki>tegory.LAUNCHER"/>
| |
− | | |
− | | |
− | | |
− | </intent-filter>
| |
− | | |
− | | |
− | | |
− | </activity>
| |
− | | |
− | | |
− | | |
− | </application>
| |
− | | |
− | | |
− | | |
− | </manifest></pre>
| |
− | | |
− | 由此计算器(calculator)的启动方法为:
| |
− | | |
− | <pre><nowiki><nowiki># am start-ncom.android.calculator2/com.android.calculator2.Calculator</nowiki></pre>
| |
− | | |
− | Music的启动方法为:
| |
− | | |
− | <pre><nowiki><nowiki># </nowiki>am <nowiki>start-ncom.android.mu</nowiki>sic<nowiki>/com.android.mu</nowiki>sic.MusicBrowserActivity</pre>
| |
− | | |
− | 这时,屏幕上会有music的播放列表,但是并没有播放。如果需要播放,得执行下面的指令:
| |
− | | |
− | <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 </pre>
| |
− | | |
− | ==== 使用android默认音频播放器 ====
| |
− | | |
− | 确保外置的SD卡中存在mp3文件,点击音乐,播放器会自动识别音频文件,如下图:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/9/9a/Mp3.png
| |
− | | |
− | 点击相应的音频文件即可播放。播放时界面如下:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/3/33/Mp3-1.png
| |
− | | |
− | === 播放视频===
| |
− | | |
− | android自带视频处理功能,在android应用界面显示为图库。点击图库按钮,会在外置SD卡中自动寻找能够识别的视频和图片文件,如下图:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/8/8f/Mp4.png
| |
− | | |
− | 点击中间的按钮:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/6/6b/Mp4-1.png
| |
− | | |
− | 上图中,带有播放符号的即为视频文件,不带的为图片文件。点击带播放符号的文件:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/7/76/Mp4-2.png
| |
− | | |
− | 再点击播放按钮:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/3/3d/Mp4-3.png
| |
− | | |
− | X3399 android6.0系统还带一款4k视频播放器,播放器会自动关联视频文件,点击需要播放的视频即可播放
| |
− | | |
− | [[image:RK33994K.png|1,024 × 600px]]
| |
− | | |
− | 如果遇到图库无法支持的视频文件,可以采用第三方播放器如RockPlayer进行播放,如网络上最为流行的rmvb和rm文件。这时,机器俨然成为了一个具有支持rm/rmvb等格式视频的超强mp4了。如对屏幕尺寸有更高要求,可以使用VGA或HDMI方式,直接将视频文件显示到显示器或电视机上。
| |
− | | |
− | 使用RockPlayer播放视频时,会弹出一个硬解和软解的对话框,如果属于3399硬解码的视频文件,选择硬解模式,否则选择软解模式。如播放rm/rmvb文件,选择软解模式才能播放,如下图所示:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/f/ff/Mp4-6.png
| |
− | | |
− | === 图片浏览 ===
| |
− | | |
− | 浏览图片时,同样使用上面的图库浏览。点击图库图标,点击要浏览的图片即可浏览。滑动可以浏览下一张图片,如下图所示:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/c/ce/Image-view.png
| |
− | | |
− | === 语言设置 ===
| |
− | | |
− | 点击设置中的语言和输入法一栏,再点击选择语言,会弹出多种语言,选择需要的语言即可,如下图:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/3/39/Language.png
| |
− | | |
− | ===使用WIFI上网 ===
| |
− | | |
− | X3399开发板自带wifi/BT二合一模组,无需额外USBwifi即可无线上网。启动开发板,点击设置,在Wi-Fi一栏的方框中有个关闭按钮,将他拨到右边,即打开状态,如下图:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/5/52/Wifi-default.png
| |
− | | |
− | 再点击Wi-Fi一栏,进入wifi界面,找到属于自己的无线网络信号并点击,输入密码后,点击连接即可上网。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/3/3b/Wifi-default1.png
| |
− | | |
− | ===使用蓝牙传输数据 ===
| |
− | | |
− | x3399开发板支持AP6335芯片的WIFI/BT二合一模块。点击设置->蓝牙,将蓝牙开关打开,如下图所示:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/5/5a/Blutooth.png
| |
− | | |
− | 点击蓝牙,进入设置界面,找到一个支持蓝牙设备的安卓手机,并打开蓝牙,且可被发现。在x3399开发板的蓝牙设置界面的右上脚点击搜索设备,在可用设备一栏中将会显示出所有找到的蓝牙设备。找到需要匹配的蓝牙设备并点击,在开发板上弹出配对请求:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/5/5f/Blutooth1.png
| |
− | | |
− | 点击配对,同时,在手机端也会弹出类似的画面,也点击配对即可。成功配对后的界面如下:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/9/95/Blutooth2.png
| |
− | | |
− | 这时,配对的设备间就可以通过蓝牙共享文件了。点击开发板的图库,找到一张图片并选中:
| |
− | http://x.9tripod.com/wiki/zh/images/d/d6/Blutooth3.png
| |
− | | |
− | 点击右上脚的分享按钮,选择蓝牙,弹出如下界面:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/6/6f/Blutooth4.png
| |
− | | |
− | 选择配对成功的蓝牙设备,这时在配对设备上将会弹出一个接收文件的对话框,点击接收即可。
| |
− | | |
− | ===使用蓝牙播放音乐 ===
| |
− | | |
− | x3399开发板可支持通过蓝牙连接蓝牙音箱,并播放音乐。准备一个蓝牙音箱,并切换到蓝牙模式,进入开发板的蓝牙界面并打开,点击右上脚的搜索设备,将会找到蓝牙音箱,下图中的GS805即是蓝牙音箱:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/0/0d/Blutooth-mp3.png
| |
− | | |
− | 点击GS805,稍等几秒,将会配对成功,无需任何确认动作。这时,随意在开发板上播放音视频,音乐将会通过蓝牙音箱播放出来。
| |
− | | |
− | ===使用USB鼠标键盘 ===
| |
− | | |
− | 启动开发板,将USB鼠标或者USB无线鼠标键盘接到USB HOST接口,即可使用鼠标键盘操作android界面了。
| |
− | | |
− | === APK应用安装 ===
| |
− | | |
− | Android系统下有很多种APK的安装方法,这里介绍四种。
| |
− | | |
− | ==== 使用SD卡安装 ====
| |
− | | |
− | 将拷贝有APK安装包的SD卡插到开发板,打开开发板的“文件管理”应用程序,界面如下:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/6/67/SD-APK.png
| |
− | | |
− | 可以看到,安装包一栏找到了3个安装包。点击进去,会列出安装列表:
| |
− | | |
− | 点击要安装的APK文件:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/2/2f/SD-APK1.png
| |
− | | |
− | 依次点击下一步,直到安装完成即可。
| |
− | | |
− | ==== 使用adb工具安装 ====
| |
− | | |
− | 在上一章节,<nowiki>ApkInstaller.ra</nowiki>r的解压目录中已经存在有adb工具了,我们在命令行下进入该目录,执行如下指令安装APK:
| |
− | | |
− | <pre><nowiki>adb install *.apk </nowiki></pre>
| |
− | | |
− | 正常安装的界面如下:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/5/5d/Adb-apk.png
| |
− | | |
− | ==== 在线安装 ====
| |
− | | |
− | 用户可以通过91助手,百度应用中心、360手机助手等第三方软件直接在线安装,这里就不详细说明了。
| |
− | | |
− | === 屏幕抓图===
| |
− | ==== 使用eclipse抓图 ====
| |
− | | |
− | android有很多截图工具,但是很多都需要root权限,在平时做开发时,我们可以使用eclipse自带的插件进行截图,非常的方便。
| |
− | | |
− | 启动开发板,并进入android系统。使用USB延长线将x3399开发板与PC机连接,第一次连接时会提示需要安装软件,如下图:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/7/7d/Android-driver1.png
| |
− | | |
− | 选择否,点下一步:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/e/e3/Android-driver2.png
| |
− | | |
− | 选择自动安装软件,点下一步,直至安装完成。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/b/b5/Android-driver3.png
| |
− | | |
− | 安装完成之后,打开eclipse软件,如果没有安装,需先安装该软件。然后点击Window->Show view->Devices,如下图:
| |
− | | |
− | 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
| |
− | | |
− | 点击上图右上脚的摄相头标志,就会弹出要保存的图像,点击save保存即可,如下图所示:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/3/38/Camera-save.png
| |
− | | |
− | ==== 使用360手机助手抓图 ====
| |
− | | |
− | 在PC机上安装360手机助手手,启动开发板,通过USB延长线将开发板连接到PC机的USB口,打开360手机助手,360手机助手将会找到x3399开发板。如果找不到,将USB线拨掉重插,在开发板上会弹出一个授权界面,点击确认即可。正常连接后的360手机助手界面如下:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/f/f0/360-screenshot.png
| |
− | | |
− | 点击左下脚的截屏按钮即可。
| |
− | | |
− | === 挂载TF卡 ===
| |
− | | |
− | 系统启动后,会自动挂载右侧卡槽中的TF卡到/mnt/external_sd/目录,如下图所示:
| |
− | | |
− | [[image:RK3399android-tf.png|939 × 563px]]
| |
− | | |
− | === 挂载U盘===
| |
− | | |
− | 启动开发板,并进入android系统。插入U盘后,系统会将U盘自动挂载到/mnt/usb_storage*(*表示0到4)目录。
| |
− | | |
− | === 计算器 ===
| |
− | | |
− | 点击android应用的计算器即可使用计算器功能,如下图所示:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/c/cc/Counter.png
| |
− | | |
− | === 输入法 ===
| |
− | | |
− | 推荐安装讯飞输入法,测试界面如下:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/0/0b/Xunfei-input.png
| |
− | | |
− | === 浏览器 ===
| |
− | | |
− | android默认自带一个浏览器,该浏览器功能已经非常完善了,如果用户仍然觉得不够要求,可以下载安装第三方浏览器,如UC浏览器等。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/4/43/Brower.png
| |
− | | |
− | === 屏幕旋转 ===
| |
− | | |
− | 重力传感器已经集成到开发板上,将开发板移动到四周任一方向,界面会随之改变。当然并不是所有应用程序都会随之改变,有部分应用程序不支持屏幕旋转。旋转后示例图片如下:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/d/d8/Screen-rotation.png
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/1/17/Screen-rotation1.png
| |
− | | |
− | === 时间设置 ===
| |
− | | |
− | 点击android应用中的设置,可以看到有日期和时间一栏,点击进去,选择相应的栏目设置即可。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/d/d2/Date-set.png
| |
− | | |
− | ===拍照摄相 ===
| |
− | | |
− | 点击android应用中的相机,会进入图像预览模式。点击右下脚的拍照按钮即可拍照,如下图所示:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/b/bb/Shot-picture.png
| |
− | | |
− | 右下脚可以切换拍照和录像功能。
| |
− | | |
− | === 使用有线以太网上网===
| |
− | | |
− | 将可以正常上网的网线连接到开发板的网口座上,网口座的指示灯会正常闪烁,正常上网界面如下:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/6/61/Wired-internet.png
| |
− | | |
− | === 优酷 ===
| |
− | | |
− | 将优酷的APK软件安装到开发板,连接网线就可以看视频了。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/1/17/Youku.png
| |
− | | |
− | === 播放电视===
| |
− | | |
− | 安装龙龙直播,泰捷视频等网络播放器,插上网线即可播放。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/3/30/Live-tv.png
| |
− | | |
− | === 使用遥控器操作开发板 ===
| |
− | | |
− | 默认x3399开发板硬件支持红外遥控器,我们可以通过遥控器操作android界面,在泰捷视频等电视界面通过遥控器操作,开发板就完全变成了一个机顶盒。
| |
− | [[image:Picture 4|284x478px]]
| |
− | === 4K视频播放 ===
| |
− | | |
− | 3399相对3288,支持更多种全高清视频的硬解码,可以流畅的播放这些格式的1080P视频文件。
| |
− | | |
− | 通常情况下,使用RockPlayer或者自带的播放器都可播放。如果遇到自带播放器无法播放,可选择RockPlayer。播放界面如下:
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/a/a1/RockPlayer.png
| |
− | | |
− | === HDMI显示===
| |
− | | |
− | HDMI显示支持直接将LCD上显示的视频还原到带有HDMI接口的电视机上,支持1080P高清视频,兼容720P,576P以及480P的视频。同时还将音频也一并传送到电视机上。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/b/b4/HDMIshow.jpg
| |
− | | |
− | ===开关机 ===
| |
− | | |
− | x3399开发板使用了PMU进行电源管理。当外接上5V的电源适配器后,x3399开发板将会被自动点亮,进入系统后,长按开机键,会弹出一个选择对话框,点击关机按钮将会弹出确认关机的对话框,点击确认即可关机。
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/e/e1/ON-OFF.png
| |
− | | |
− | | |
− | | |
− | === 休眠唤醒 ===
| |
− | | |
− | 进入android文件系统后,轻按开关机键,屏幕将会熄灭,然后进入深度休眠状态。可以通过串口查看进入休眠的打印信息。再次轻按开关机键,开发板将会唤醒。
| |
− | | |
− | ==Android测试程序==
| |
− | | |
− | 我们在x3288,x3399开发板上开发了强大的安卓测试软件,基本上可以测试开发板的所有硬件功能,它在产品量产,程序开发上有很大的参考价值。在APP界面点击安卓测试,即可进入测试界面,使用触摸屏左右滑动,或者用鼠标滑动可切换测试的硬件。
| |
− | | |
− | === 液晶屏测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/5/57/Lcd-test.png
| |
− | | |
− | 在液晶屏测试界面,点击中间的任意纯色位置,会有不同的颜色变化,我们可以观察LCD是否有丢色,坏点等。
| |
− | | |
− | === 触摸屏测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/e/e6/Touch-test.png
| |
− | | |
− | 在触摸屏测试界面,点击开始测试,即可在屏幕上任意手写,在批量生产时,我们通常通过画对角线测试触摸电路是否正常。
| |
− | | |
− | === 发光二极管测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/6/66/Led-test.png
| |
− | | |
− | 点击图片上任意的灯,为红色时,对应开发板上的LED灯亮,为灰色时,对应LED灯灭。
| |
− | | |
− | ===蜂鸣器测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/2/2b/Beep-test.png
| |
− | | |
− | 按住开始测试键,蜂鸣器会鸣叫,松开开始测试键,蜂鸣器停止鸣叫。
| |
− | | |
− | === 背光测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/e/e5/Backlight-test.png
| |
− | | |
− | 划动中间的圆圈,背光亮度会随之发生变化。
| |
− | | |
− | === 按键测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/d/d0/Key-test.png
| |
− | | |
− | 按下或抬起开发板上四个独立按键的任意一个,界面上将会提示对应的按键的按下和抬起动作。
| |
− | | |
− | === 电池测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/2/29/Battery-test.png
| |
− | | |
− | 该界面反应了接在开发板上的电池电量信息。
| |
− | | |
− | === 数模转换测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/e/e4/Adc-test.png
| |
− | | |
− | 监测四路ADC的电压。我们可以通过调节开发板上的精密可调电位器,观察上面对应通道的电压是否变化。
| |
− | | |
− | === 重力传感器测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/6/6f/Gsensor-test.png
| |
− | | |
− | 旋转开发板时,上面的X,Y,Z轴的值会随之发生变化。
| |
− | | |
− | === 音频测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/c/cb/Audio-test.png
| |
− | | |
− | 点击开始测试,会听到有清脆的声音出来。
| |
− | | |
− | === 摄像头测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/d/dd/Camera-test.png
| |
− | | |
− | 装上摄相头,点击开始测试,会看到摄像头抓到的预览界面显示出来。
| |
− | | |
− | === 无线网络测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/5/54/Wireless-test.png
| |
− | | |
− | 使用WIFI连上无线网络后,无线网络测试界面会搜索到附近的网络并列出来。
| |
− | | |
− | === 网络连接测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/5/54/Internet-test.png
| |
− | | |
− | 当有线或无线网络正常连接时,网络连接测试界面可以浏览网页。
| |
− | | |
− | === 串口测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/a/a9/TtyAMA-test.png
| |
− | | |
− | 将需要测试的串口的TXD和RXD短路,再点击开始测试,界面上会提示对应串口会自发自收0123456789。如果不能自发自收,说明对应的串口硬件有问题。
| |
− | | |
− | === 外部存储器测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/f/f3/Sdcard-test.png
| |
− | | |
− | 将TF卡插到开发板上,点击开始测试,界面上会显示TF卡的相关信息。
| |
− | | |
− | === 优盘测试 ===
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/d/d0/Udisk-test.png
| |
− | | |
− | 将U盘插到开发板上,点击开始测试,界面上会显示U盘的相关信息。
| |
− | | |
− | ==android内核驱动==
| |
− | ===G-sensor驱动===
| |
− | | |
− | 路径:kernel/drivers/input/sensors/gyro/
| |
− | 文件:lsm330_gyro.c
| |
− | | |
− | ===光感传感器驱动===
| |
− | | |
− | 路径:kernel/drivers/input/sensors/lsensor
| |
− | 文件:cm3218.c
| |
− | | |
− | ===电容触摸屏驱动===
| |
− | | |
− | 路径:kernel/drivers/input/touchscreen/
| |
− | 源码:gslx680.c
| |
− | | |
− | ===液晶屏驱动===
| |
− | <pre><nowiki>
| |
− | 路径:kernel/drivers/video/rockchip/
| |
− | | |
− | kernel/drivers/video/rockchip/dp/
| |
− | | |
− | kernel/drivers/video/rockchip/transmitter
| |
− | | |
− | kernel/arch/arm64/boot/dts/rockchip
| |
− | | |
− | 源码:rockchip_dp.c,mipi_dsi.c,<nowiki>lcd-edp-lp079qx1.dt</nowiki>si,<nowiki>lcd-mipi-7inch-wy070ml.dt</nowiki>si
| |
− | </pre>
| |
− | ===按键驱动===
| |
− | | |
− | 路径:kernel/drivers/input/keyboard
| |
− | | |
− | 源码:rk_keys.c
| |
− | | |
− | ===WIFI/BT模块驱动===
| |
− | | |
− | 路径:kernel/drivers/net/wireless/rockchip_wlan
| |
− | | |
− | 源码:该目录下所有源码文件
| |
− | | |
− | ===摄像头驱动===
| |
− | | |
− | 路径:hardware/rockchip/camera/SiliconImage/isi/drv
| |
− | | |
− | 源码:该目录下
| |
− | | |
− | ===HDMI驱动===
| |
− | | |
− | 路径:kernel/drivers/video/rockchip/hdmi
| |
− | | |
− | ===proc文件系统===
| |
− | ====启动环境变量查询====
| |
− | | |
− | 使用如下指令查询启动环境变量配置:
| |
− | | |
− | cat /proc/cmdline
| |
− | | |
− | 会有如下类似打印信息:
| |
− | <pre><nowiki>
| |
− | root@x3399:/ # cat /proc/cmdline
| |
− | | |
− | earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1 <nowiki>androidboot.ba</nowiki>seband=N/A <nowiki>androidboot.se</nowiki>linux=permissive <nowiki>androidboot.ha</nowiki>rdware=rk30board <nowiki>androidboot.co</nowiki>nsole=ttyFIQ0 mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(misc),0x00008000@0x00008000(resource),0x00008000@0x00010000(kernel),0x00010000@0x00018000(boot),0x00018000@0x00028000(recovery),0x00030000@0x00040000(backup),0x00040000@0x00070000(cache),0x00600000@0x000B0000(system),0x00008000@0x006B0000(metadata),0x00002000@0x006B8000(baseparamer),0x00000400@0x006BA000(frp),-@0x006BA400(userdata) storagemedia=emmc uboot_logo=0x02000000@0x7dc00000:0x01000000 <nowiki>loader.ti</nowiki>mestamp=2017-01-20_15:16:33 <nowiki>androidboot.mo</nowiki>de=emmc
| |
− | | |
− | root@x3399:/ #
| |
− | </pre>
| |
− | ====CPU信息查询====
| |
− | | |
− | 使用如下指令查询CPU信息:
| |
− | | |
− | cat /proc/cpuinfo
| |
− | | |
− | 会有如下类似打印信息:
| |
− | <pre><nowiki>
| |
− | root@x3399:/ # cat /pro
| |
− | | |
− | proc/ property_contexts
| |
− | | |
− | root@x3399:/ # cat /proc/cpuinfo
| |
− | | |
− | processor : 0
| |
− | | |
− | BogoMIPS : 48.00
| |
− | | |
− | Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
| |
− | | |
− | CPU implementer : 0x41
| |
− | | |
− | CPU architecture: 8
| |
− | | |
− | CPU variant : 0x0
| |
− | | |
− | CPU part : 0xd03
| |
− | | |
− | CPU revision : 4
| |
− | | |
− | | |
− | | |
− | processor : 1
| |
− | | |
− | BogoMIPS : 48.00
| |
− | | |
− | Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
| |
− | | |
− | CPU implementer : 0x41
| |
− | | |
− | CPU architecture: 8
| |
− | | |
− | CPU variant : 0x0
| |
− | | |
− | CPU part : 0xd03
| |
− | | |
− | CPU revision : 4
| |
− | | |
− | | |
− | | |
− | processor : 2
| |
− | | |
− | BogoMIPS : 48.00
| |
− | | |
− | Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
| |
− | | |
− | CPU implementer : 0x41
| |
− | | |
− | CPU architecture: 8
| |
− | | |
− | CPU variant : 0x0
| |
− | | |
− | CPU part : 0xd03
| |
− | | |
− | CPU revision : 4
| |
− | | |
− | | |
− | | |
− | processor : 3
| |
− | | |
− | BogoMIPS : 48.00
| |
− | | |
− | Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
| |
− | | |
− | CPU implementer : 0x41
| |
− | | |
− | CPU architecture: 8
| |
− | | |
− | CPU variant : 0x0
| |
− | | |
− | CPU part : 0xd03
| |
− | | |
− | CPU revision : 4
| |
− | | |
− | | |
− | | |
− | processor : 4
| |
− | | |
− | BogoMIPS : 48.00
| |
− | | |
− | Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
| |
− | | |
− | CPU implementer : 0x41
| |
− | | |
− | CPU architecture: 8
| |
− | | |
− | CPU variant : 0x0
| |
− | | |
− | CPU part : 0xd08
| |
− | | |
− | CPU revision : 2
| |
− | | |
− | | |
− | | |
− | processor : 5
| |
− | | |
− | BogoMIPS : 48.00
| |
− | | |
− | Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
| |
− | | |
− | CPU implementer : 0x41
| |
− | | |
− | CPU architecture: 8
| |
− | | |
− | CPU variant : 0x0
| |
− | | |
− | CPU part : 0xd08
| |
− | | |
− | CPU revision : 2
| |
− | | |
− | root@x3399:/ #
| |
− | </pre>
| |
− | ====内存信息查询====
| |
− | | |
− | 使用如下指令查询内存使用信息:
| |
− | | |
− | cat /proc/meminfo
| |
− | | |
− | 会有如下类似打印信息:
| |
− | <pre><nowiki>
| |
− | root@x3399:/ # cat /pr
| |
− | | |
− | proc/ property_contexts
| |
− | | |
− | root@x3399:/ # cat /proc/meminfo
| |
− | | |
− | MemTotal: 2041364 kB
| |
− | | |
− | MemFree: 845216 kB
| |
− | | |
− | MemAvailable: 1554116 kB
| |
− | | |
− | Buffers: 1468 kB
| |
− | | |
− | Cached: 696428 kB
| |
− | | |
− | SwapCached: 0 kB
| |
− | | |
− | Active: 436404 kB
| |
− | | |
− | Inactive: 554568 kB
| |
− | | |
− | Active(anon): 294576 kB
| |
− | | |
− | Inactive(anon): 10908 kB
| |
− | | |
− | Active(file): 141828 kB
| |
− | | |
− | Inactive(file): 543660 kB
| |
− | | |
− | Unevictable: 0 kB
| |
− | | |
− | Mlocked: 0 kB
| |
− | | |
− | SwapTotal: 520908 kB
| |
− | | |
− | SwapFree: 520908 kB
| |
− | | |
− | Dirty: 8 kB
| |
− | | |
− | Writeback: 0 kB
| |
− | | |
− | AnonPages: 293128 kB
| |
− | | |
− | Mapped: 352516 kB
| |
− | | |
− | Shmem: 12428 kB
| |
− | | |
− | Slab: 94504 kB
| |
− | | |
− | SReclaimable: 65316 kB
| |
− | | |
− | SUnreclaim: 29188 kB
| |
− | | |
− | KernelStack: 11216 kB
| |
− | | |
− | PageTables: 11696 kB
| |
− | | |
− | NFS_Unstable: 0 kB
| |
− | | |
− | Bounce: 0 kB
| |
− | | |
− | WritebackTmp: 0 kB
| |
− | | |
− | CommitLimit: 1541588 kB
| |
− | | |
− | Committed_AS: 25896976 kB
| |
− | | |
− | VmallocTotal: 258867136 kB
| |
− | | |
− | VmallocUsed: 0 kB
| |
− | | |
− | VmallocChunk: 0 kB
| |
− | | |
− | CmaTotal: 131072 kB
| |
− | | |
− | CmaFree: 128616 kB
| |
− | | |
− | root@x3399:/ #
| |
− | </pre>
| |
− | ====磁盘分区信息查询====
| |
− | | |
− | 使用如下命令查询磁盘分区信息:
| |
− | | |
− | cat /proc/partitions
| |
− | | |
− | 会有如下类似打印信息:
| |
− | <pre><nowiki>
| |
− | root@x3399:/ # cat /proc/partitions
| |
− | | |
− | major minor #blocks name
| |
− | | |
− | | |
− | | |
− | 1 0 8192 ram0
| |
− | | |
− | 1 1 8192 ram1
| |
− | | |
− | 1 2 8192 ram2
| |
− | | |
− | 1 3 8192 ram3
| |
− | | |
− | 1 4 8192 ram4
| |
− | | |
− | 1 5 8192 ram5
| |
− | | |
− | 1 6 8192 ram6
| |
− | | |
− | 1 7 8192 ram7
| |
− | | |
− | 1 8 8192 ram8
| |
− | | |
− | 1 9 8192 ram9
| |
− | | |
− | 1 10 8192 ram10
| |
− | | |
− | 1 11 8192 ram11
| |
− | | |
− | 1 12 8192 ram12
| |
− | | |
− | 1 13 8192 ram13
| |
− | | |
− | 1 14 8192 ram14
| |
− | | |
− | 1 15 8192 ram15
| |
− | | |
− | 254 0 520912 zram0
| |
− | | |
− | 179 0 15267840 mmcblk0
| |
− | | |
− | 179 1 4096 mmcblk0p1
| |
− | | |
− | 179 2 4096 mmcblk0p2
| |
− | | |
− | 179 3 4096 mmcblk0p3
| |
− | | |
− | 179 4 16384 mmcblk0p4
| |
− | | |
− | 179 5 16384 mmcblk0p5
| |
− | | |
− | 179 6 32768 mmcblk0p6
| |
− | | |
− | 179 7 49152 mmcblk0p7
| |
− | | |
− | 179 8 98304 mmcblk0p8
| |
− | | |
− | 179 9 131072 mmcblk0p9
| |
− | | |
− | 179 10 3145728 mmcblk0p10
| |
− | | |
− | 179 11 16384 mmcblk0p11
| |
− | | |
− | 179 12 4096 mmcblk0p12
| |
− | | |
− | 179 13 512 mmcblk0p13
| |
− | | |
− | 179 14 11736576 mmcblk0p14
| |
− | | |
− | 179 96 4096 mmcblk0rpmb
| |
− | | |
− | 179 64 4096 mmcblk0boot1
| |
− | | |
− | 179 32 4096 mmcblk0boot0
| |
− | | |
− | root@x3399:/ #
| |
− | </pre>
| |
− | ====内核版本查询====
| |
− | | |
− | 使用如下命令查询内核版本:
| |
− | | |
− | cat /proc/version
| |
− | | |
− | 会有如下类似打印信息:
| |
− | <pre><nowiki>
| |
− | root@x3399:/ # cat /proc/version
| |
− | | |
− | Linux version 4.4.16 (jjj@jjj-desktop) (gcc version 4.9.x-google 20140827 (prerelease) (GCC) ) #164 SMP PREEMPT Mon Jan 16 18:49:48 CST 2017
| |
− | | |
− | root@x3399:/ #
| |
− | </pre>
| |
− | ====网络设备查询====
| |
− | | |
− | 使用如下命令查询网络设备信息:
| |
− | | |
− | cat /proc/net/dev
| |
− | | |
− | 会有如下类似打印信息:
| |
− | <pre><nowiki>
| |
− | root@x3399:/ # 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: 6032 80 0 0 0 0 0 0 6032 80 0 0 0 0 0 0
| |
− | | |
− | wlan0: 503506 2298 0 0 0 0 0 53 23070 251 0 0 0 0 0 0
| |
− | | |
− | eth0: 0 0 0 0 0 0 0 0 508 6 0 0 0 0 0 0
| |
− | | |
− | root@x3399:/ #
| |
− | </pre>
| |
− | ====查看内核启动信息====
| |
− | | |
− | 使用如下命令查询内核启动信息:
| |
− | | |
− | cat /proc/kmsg
| |
− | | |
− | ==android开发项目实战==
| |
− | | |
− | 说明:以下为实际项目实例,用户可参考x210开发文档练习,后续我们会陆续发布。在进行下面的任一个实验之前,请确保前面的环境已经搭建完毕。'''
| |
− | | |
− | ===实战1:创建hello x3399工程===
| |
− | | |
− | 参考《x4418 android平台用户手册》。
| |
− | | |
− | ===实战2:在x3399开发板上运行hello x3399测试程序===
| |
− | | |
− | 参考《x4418 android平台用户手册》。
| |
− | | |
− | ===实战3:从零开始编写LED测试程序===
| |
− | | |
− | 参考《x4418 android平台用户手册》。
| |
− | | |
− | ===实战4:建立第一个APK应用程序,通过JNI+NDK调用底层驱动===
| |
− | | |
− | 参考《x4418 android平台用户手册》。
| |
− | | |
− | ===实战5:修改VGA分辨率===
| |
− | | |
− | 参考《x4418 android平台用户手册》。
| |
− | | |
− | ===实战6:如何修改<nowiki>init.rc</nowiki>文件===
| |
− | ====永久修改====
| |
− | | |
− | 在system/core/rootdir目录下找到<nowiki>init.rc</nowiki>文件,修改后执行./<nowiki>mk.sh</nowiki> –s,将会生成新的<nowiki>system.im</nowiki>g文件,重新烧写<nowiki>system.im</nowiki>g即可更新<nowiki>init.rc</nowiki>。注意,在编译时,首先需要先将out目录下的<nowiki>init.rc</nowiki>删除后再编译,否则可能不会生效。
| |
− | | |
− | ====临时修改====
| |
− | | |
− | '''注意:以下步骤为基于x3288平台的修改步骤,在x3399平台下大同小异,读者可以先行尝试,后续我们将发布基于x3399平台的修改脚本。'''
| |
− | | |
− | 默认<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: </nowiki>liuqiming
| |
− | | |
− | <nowiki># date: 2016-11-22</nowiki>
| |
− | | |
− | <nowiki># mail: liuqiming@9tripod.com</nowiki>
| |
− | | |
− | | |
− | | |
− | 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"
| |
− | | |
− | echo "<nowiki>3.de</nowiki>lete cache files"
| |
− | | |
− | echo "<nowiki>4.ex</nowiki>it"
| |
− | | |
− | | |
− | | |
− | <nowiki>#</nowiki>准备工作,环境变量的声明
| |
− | | |
− | 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;
| |
− | | |
− | | |
− | | |
− | <nowiki>#</nowiki>读取要执行的操作索引
| |
− | | |
− | read -p "Choose:" CHOOSE
| |
− | | |
− | | |
− | | |
− | <nowiki>#</nowiki>解压<nowiki>boot.im</nowiki>g
| |
− | | |
− | <nowiki>if [ "1" = ${CHOOSE} ];then</nowiki>
| |
− | | |
− | echo "unzip <nowiki>boot.im</nowiki>g"
| |
− | | |
− | cd $TARGET_DIR
| |
− | | |
− | <nowiki>#</nowiki>第一步:新建ramdisk目录
| |
− | | |
− | <nowiki>[ -e "</nowiki>ramdisk" ] ||{ echo "mkdir ramdisk"; mkdir ramdisk;}
| |
− | | |
− | <nowiki>#</nowiki>第二步:判断是否存在<nowiki>boot.im</nowiki>g文件
| |
− | | |
− | <nowiki>[ -f "$TARGET_DIR/</nowiki><nowiki>boot.im</nowiki>g" ] || { echo "error! can't find <nowiki>boot.im</nowiki>g!"; rm -rf ramdisk;exit; }
| |
− | | |
− | cd ramdisk
| |
− | | |
− | <nowiki>#</nowiki>第三步:拷贝<nowiki>boot.im</nowiki>g
| |
− | | |
− | cp ../<nowiki>boot.im</nowiki>g .
| |
− | | |
− | <nowiki>#</nowiki>第四步:解压<nowiki>boot.im</nowiki>g文件,得到<nowiki>boot.img-ramdisk.gz</nowiki>文件
| |
− | | |
− | <nowiki>[ -f "/bin/split_bootimg.pl" ] || { cp $TOOLS_DIR/split_bootimg.pl /bin; }</nowiki>
| |
− | | |
− | <nowiki>split_bootimg.pl</nowiki> <nowiki>boot.im</nowiki>g
| |
− | | |
− | 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
| |
− | | |
− | echo "^_^ unzip <nowiki>boot.im</nowiki>g finished!"
| |
− | | |
− | rm -f <nowiki>boot.img-ramdisk.gz</nowiki>
| |
− | | |
− | rm -f <nowiki>boot.img-second.gz</nowiki>
| |
− | | |
− | rm -f <nowiki>boot.im</nowiki>g-kernel
| |
− | | |
− | exit
| |
− | | |
− | | |
− | | |
− | <nowiki>#</nowiki>打包<nowiki>boot.im</nowiki>g
| |
− | | |
− | elif<nowiki> [ "2" = ${CHOOSE} ];then</nowiki>
| |
− | | |
− | echo "create <nowiki>boot.im</nowiki>g with kernel..."
| |
− | | |
− | <nowiki>#</nowiki>第一步:判断是否存在ramdisk目录
| |
− | | |
− | <nowiki>[ -e "$TARGET_DIR/</nowiki>ramdisk<nowiki>" ] || { echo "can't find [</nowiki>ramdisk],please unzip <nowiki>boot.im</nowiki>g first!"; exit; }
| |
− | | |
− | <nowiki>#</nowiki>第二步:去除默认的<nowiki>root.im</nowiki>g文件
| |
− | | |
− | rm -f $TARGET_DIR/<nowiki>boot.im</nowiki>g
| |
− | | |
− | cd $TARGET_DIR
| |
− | | |
− | <nowiki>#</nowiki>第三步:将当前目录所有文件打包到<nowiki>boot.im</nowiki>g
| |
− | | |
− | <nowiki>[ -d $TARGET_DIR/</nowiki>ramdisk ] && \
| |
− | | |
− | mkbootfs $TARGET_DIR/ramdisk | minigzip > $TARGET_DIR/<nowiki>ramdisk.im</nowiki>g && \
| |
− | | |
− | truncate -s "%4" $OUT/<nowiki>ramdisk.im</nowiki>g && \
| |
− | | |
− | mkbootimg --kernel ${OUT}/kernel --ramdisk ${OUT}/<nowiki>ramdisk.im</nowiki>g --second $TARGET_DIR/<nowiki>resource.im</nowiki>g --output $TARGET_DIR/<nowiki>boot.im</nowiki>g
| |
− | | |
− | rm -rf ramdisk
| |
− | | |
− | exit
| |
− | | |
− | | |
− | | |
− | <nowiki>#</nowiki>清除残余文件
| |
− | | |
− | elif<nowiki> [ "3" = ${CHOOSE} ];then</nowiki>
| |
− | | |
− | cd ${TARGET_DIR}
| |
− | | |
− | rm -rf ramdisk
| |
− | | |
− | echo "^_^ delete cache files ok!"
| |
− | | |
− | | |
− | | |
− | <nowiki>#</nowiki>退出脚本
| |
− | | |
− | elif<nowiki> [ "4" = ${CHOOSE} ];then</nowiki>
| |
− | | |
− | exit
| |
− | | |
− | fi
| |
− | | |
− | 执行./<nowiki>ramdisk.sh</nowiki>,输入1,回车,将会自动解压out/release目录下的<nowiki>boot.im</nowiki>g,并存放到out/release/ramdisk目录。
| |
− | | |
− | 执行./<nowiki>ramdisk.sh</nowiki>,输入2,回车,将会自动将out/release/ramdisk目录下的文件打包成<nowiki>boot.im</nowiki>g。
| |
− | </pre>
| |
− | ===实战7:如何修改开机动画===
| |
− | | |
− | 默认android启动时,会有android的英文字母不断高亮滚动显示,构成了一幅美丽的开机动画。其实这个开机动画是可以定制的,有兴趣的读者可以自行尝试。
| |
− | | |
− | ===实战8:如何修改uboot中的开机LOGO===
| |
− | | |
− | 在kernel根目录下,存放有<nowiki>logo.bm</nowiki>p和<nowiki>logo_kernel.bm</nowiki>p两张图片,在编译内核后,他们会被打包到<nowiki>resource.im</nowiki>g中。开机启动时,uboot会从中读取<nowiki>logo.bm</nowiki>p并显示出来。默认uboot只支持8b模式的图像读取,且必须为BMP格式。找一张分辨率不是太大的图片,转换成BMP格式,在WINDOWS的图片编辑软件下转换成8b模式后,替换kernel根目录下的<nowiki>logo.bm</nowiki>p即可。注意,如果分辨率过大,可能会无法显示。
| |
− | | |
− | ===实战9:如何修改内核中的LOGO===
| |
− | | |
− | 修改内核的LOGO和修改uboot的LOGO方法类似,所不同的是,我们需要修改<nowiki>logo_kernel.bm</nowiki>p文件,而不是<nowiki>logo.bm</nowiki>p文件。如果我们只需要显示一幅图片,删掉<nowiki>logo_kernel.bm</nowiki>p即可。
| |
− | | |
− | ===实战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仓库:
| |
− | <pre><nowiki>
| |
− | 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'
| |
− | </pre>
| |
− | ====恢复到上一版本====
| |
− | | |
− | 首先,使用git log命令查询修改记录:
| |
− | <pre><nowiki>
| |
− | 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$
| |
− | </pre>
| |
− | ==== 修改源码后,提交修改记录 ====
| |
− | | |
− | 修改了某些文件,需要提交到服务器,具体操作如下:
| |
− | | |
− | 第一步:使用git pull将服务器仓库提交到本地
| |
− | | |
− | http://x.9tripod.com/wiki/zh/images/c/c6/Git-pull.png
| |
− | | |
− | 提示出错,有两种解决办法,第一种,先将drivers/mtd/nand/nand_base.c备份,比如:mv drivers/mtd/nand/nand_base.c drivers/mtd/nand<nowiki>/nand_base.c.ba</nowiki>k
| |
− | | |
− | 然后再执行git pull。第二种,执行git checkout –f,然后再执行git pull。
| |
− | | |
− | 正常的操作如下:
| |
− | http://x.9tripod.com/wiki/zh/images/9/9f/Git-pull-ok.png
| |
− | | |
− | 上面的提示文件为服务器上已经更新的文件,执行git pull后,已经同步到本地了。
| |
− | | |
− | 第二步:使用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_x3399,再执行打包指令。打包完成后,再将out_x3399还原成out即可。
| |
− | | |
− | 另外,如果编译了uboot,内核等,在源码包中会存在很多*.o,*.cmd的临时文件,这些也是我们所不需要的,在打包时也一并排除在外。
| |
− | | |
− | 在android源码总目录的同级目录下执行如下指令完成打包:
| |
− | <pre><nowiki>
| |
− | mv x3399_marshmallow\out x3399_ marshmallow \out_x3399
| |
− | | |
− | tar jcvf x3399_ <nowiki>marshmallow.tar.bz</nowiki>2 x3399_ marshmallow –exclude=”.git” –exclude=”out_x3399” –exclude=”*.o” –exclude=”*.cmd”
| |
− | | |
− | mv x3399_ marshmallow \out_x3399 x3399_ marshmallow\out
| |
− | </pre>
| |
− | ====使用git指令====
| |
− | | |
− | 使用git指令打包源码的前提是整个android源码包已经由git管理起来。在android源码包的根目录下(包含有uboot,kernel等目录的同一级目录)使用如下指令打包整个源码包:
| |
− | | |
− | git archive --format=tar HEAD > x3399_ marshmallow.tar;bzip2 x3399_ marshmallow.tar
| |
− | | |
− | ===实战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的配置情况
| |
− | </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 |
| |
− | | |
− | +--------------------------+
| |
− | | |
− | 通过键盘的上下键盘选择到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? |
| |
− | | |
− | +-----------------------------------------------------------------------+
| |
− | </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$
| |
− | </pre>
| |
− | 第三步:在LINUX目录下执行如下命令安装:
| |
− | | |
− | sudo make clean
| |
− | | |
− | sudo make install
| |
− | | |
− | 实际操作时发现有如下错误提示:
| |
− | <pre><nowiki>
| |
− | cd wchmknod;\
| |
− | | |
− | ./wchmknod
| |
− | | |
− | /bin/sh: line 1: ./wchmknod: 权限不够
| |
− | | |
− | <nowiki>make: *** [</nowiki>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
| |
− | | |
− | 再make install,即可安装成功。
| |
− | </pre>
| |
− | 第四步:执行如下指令加载驱动
| |
− | | |
− | modprobe wch
| |
− | | |
− | 或者
| |
− | | |
− | insmod driver/<nowiki>wch.ko</nowiki>
| |
− | | |
− | 第五步:使用如下指令查询驱动是否正常加载:
| |
− | | |
− | lsmod | grep wch
| |
− | | |
− | 示例如下:
| |
− | <pre><nowiki>
| |
− | lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$ lsmod |grep wch
| |
− | | |
− | wch 58933 1
| |
− | | |
− | lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$
| |
− | </pre>
| |
− | 这里查找到了已经加载的驱动,表明驱动加载成功。
| |
− | | |
− | 第六步:查看/dev下生成的相关节点:
| |
− | <pre><nowiki>
| |
− | 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$
| |
− | </pre>
| |
− | 表明节点已经成功生成。
| |
− | | |
− | 第七步:使用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
| |
− | </pre>
| |
− | 可见,PCI转串口驱动已经能够正常使用了。
| |
− | | |
− | 第八步:以上步骤,仅仅是临时加载了驱动,ubuntu系统重启后,<nowiki>wch.ko</nowiki>文件并没有自动加载。因此,需要在ubuntu的启动脚本里面添加自动加载的命令。
| |
− | | |
− | 编辑/etc/rc.d<nowiki>/rc.lo</nowiki>cal文件,在最末尾添加如下语句:
| |
− | | |
− | modprobe wch
| |
− | | |
− | 第九步:重启ubuntu系统,再次尝试串口是否能正常使用。
| |