RK3288 Android 5.1 Manual
目錄
- 1 android開發平台的搭建
- 2 Android開發工具
- 3 安裝android源碼包
- 4 android腳本分析配置
- 5 編譯android源碼包
- 6 燒寫android映像文件
- 7 android開發指南
- 7.1 命令終端
- 7.2 播放mp3
- 7.3 播放視頻
- 7.4 圖片瀏覽
- 7.5 語言設置
- 7.6 使用WIFI上網
- 7.7 使用藍牙傳輸數據
- 7.8 使用藍牙播放音樂
- 7.9 使用USB鼠標鍵盤
- 7.10 APK應用安裝
- 7.11 屏幕抓圖
- 7.12 掛載TF卡
- 7.13 掛載U盤
- 7.14 計算器
- 7.15 輸入法
- 7.16 瀏覽器
- 7.17 屏幕旋轉
- 7.18 時間設置
- 7.19 拍照攝相
- 7.20 使用有線以太網上網
- 7.21 優酷
- 7.22 播放電視
- 7.23 使用遙控器操作開發板
- 7.24 1080P視頻播放
- 7.25 QQ
- 7.26 QQ鬥地主
- 7.27 憤怒的小鳥
- 7.28 賽車
- 7.29 VGA顯示
- 7.30 HDMI顯示
- 7.31 開關機
- 7.32 休眠喚醒
- 8 Android測試程序
- 9 android內核驅動
- 10 android開發項目實戰
- 10.1 實戰1:創建hello x3288工程
- 10.2 實戰2:在x3288開發板上運行hello x3288測試程序
- 10.3 實戰3:從零開始編寫LED測試程序
- 10.4 實戰4:建立第一個APK應用程序,通過JNI+NDK調用底層驅動
- 10.5 實戰5:修改VGA分辨率
- 10.6 實戰6:如何修改init.rc文件
- 10.7 實戰7:如何修改開機動畫
- 10.8 實戰8:如何修改uboot中的開機LOGO
- 10.9 實戰9:如何修改內核中的LOGO
- 10.10 實戰11:使用git管理源代碼
- 10.11 實戰13:如何打包整個android bsp包
- 10.12 實戰15:android調試技巧之mm指令
- 10.13 實戰16:ubuntu下minicom的設置
android開發平台的搭建
Android自從升級到4.0以來,相比之前的版本工程更加龐大,編譯整套源碼對PC機硬件要求很高,因此不建議採用虛擬機編譯,強烈建議直接安裝Linux操作系統,充分發揮PC機的性能。我們這裡以ubuntu14.04 64位系統機器為例講解,如果您是新手,建議與我們版本保持一致。
使用U盤安裝ubuntu
使用U盤安裝ubuntu系統簡單快捷,強烈推薦使用此方法安裝。
安裝工具:
- 2G以上U盤一個
- lili usb creater 軟件,下載地址:http://www.linuxliveusb.com/
- ubuntu最新系統,下載地址:http://www.ubuntu.com/download/
- PC機一台
安裝方法:
第一步:下載好ubuntu的ISO文件,和lili usb creater這個軟件並安裝。
第二步:插入usb,並打開usb creater 這個軟件,根據軟件提示設置,在步驟1中選擇安裝盤,找到識別出的U盤;在步驟2中找到下載的ubuntu映像文件;步驟3默認,步驟4中選中隱藏優盤上創建的文件,使用FAT32格式化U盤;最後在步驟5中點擊閃電圖標開始安裝,直到提示優盤已安裝完成為止。
第三步:重啟電腦,開機時,看清屏幕下方的提示,進入BIOS設置菜單,選擇U盤啟動。一般台式機是按DEL鍵,筆記本有些是按F2,有些按F10進入。設置完成後保存退出。
第四步:再次重啟系統,這時已經可以看到ubuntu的安裝界面了,選擇中文,繼續;
第五步:選擇 install (您也可以選擇live mode 可以體驗下系統),繼續;
第六步:也選擇中文,點擊繼續:再繼續;
第七步:配置網絡,可以安裝時升級,也可以不升級,等安裝完系統後再手動升級;
第八步:第一個選項是把以前的系統升級到ubuntu14.04,如果你只要單系統的可以選擇第一項,第二項是升級到ubuntu14.04並把其他的資料刪除掉,第三項是我們用的最多的,比較靈活,選something else,繼續,在這裡我分出了兩個區給ubuntu,一個 / 和 一個 /home ,分區可以新建,可以對它格式化,具體根據需要選擇;
第九步:這是設置區域,選擇上海就行了;
第十步:選擇鍵盤布局。選中國;
第十一步:選擇用戶名和密碼,到此配置完畢,點擊繼續直接安裝,喝一會兒咖啡,待安裝完畢,重啟之後,就可以看到美麗的ubuntu世界了。
設置XP為開機默認啟動
ubuntu安裝後每次開機都是默認進入ubuntu系統的,對於以windows為主的朋友,每次開機都要守在畫面切換到XP啟動,可見十分麻煩,通過下面,你可以設置讓你的XP系統為第一啟動。
修改/boot/grub/grub.cfg文件,可以看到最末尾有如下語句:
<nowiki> menuentry "Microsoft Windows XP Professional (on /dev/sda1)" { insmod part_msdos insmod ntfs set root='(hd0,msdos1)' search --no-floppy --fs-uuid --set 0E48A65048A6367D drivemap -s (hd0) ${root} chainloader +1 } ### END /etc/grub.d/30_os-prober ### <nowiki>
仔細閱讀該文件,發現有不少menuentry,這些正是對應了開機啟動時的選擇項,將上面語句放在第一個menuentry的前面,這樣Windows XP就為默認的啟動系統了。修改後的部分代碼如下:
### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=white/black set menu_color_highlight=black/light-gray ### END /etc/grub.d/05_debian_theme ### ### BEGIN /etc/grub.d/30_os-prober ### menuentry "Microsoft Windows XP Professional (on /dev/sda1)" { insmod part_msdos insmod ntfs set root='(hd0,msdos1)' search --no-floppy --fs-uuid --set 0E48A65048A6367D drivemap -s (hd0) ${root} chainloader +1 } ### END /etc/grub.d/30_os-prober ### ### BEGIN /etc/grub.d/10_linux ### menuentry 'Ubuntu, with Linux 2.6.35-30-generic' --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod part_msdos insmod ext2 set root='(hd0,msdos9)' search --no-floppy --fs-uuid --set 4833f619-6388-4dd3-acd7-6fa3eacb9a15 linux /boot/vmlinuz-2.6.35-30-generic root=UUID=4833f619-6388-4dd3-acd7-6fa3eacb9a15 ro quiet splash initrd /boot/initrd.img-2.6.35-30-generic }
ubuntu下磁盤格式化
在做開發時,經常會把SD卡格式化為msdos,ext3等格式。這時,放在windows下將無法格式化,只能藉助於Linux。
在Linux下使用fdisk和mkfs兩個工具實現SD卡的格式化。首先,使用fdisk指令刪除裡面的所有分區,步驟為:
fdisk /dev/sdb d w
每輸一次d,輸入一次分區的序號,直到刪完,再按w寫入,完成分區的刪除。再按n,回車,回車,新建一個分區。之後再使用mkfs工具格式化為指定格式的盤,如格式化為fat32格式,則執行如下指令:
mkfs –t vfat /dev/sdb
Ubuntu下通過SSH遠程登錄服務器
第一步:在服務器上安裝ssh的服務器端。
apt-get install openssh-server
第二步:啟動ssh-server。
service ssh restart
第三步:確認ssh-server已經正常工作。
netstat -tlp
有如下打印信息:
tcp 0 0 *:ssh *:* LISTEN -
看到上面這一行輸出說明ssh-server已經在運行了。
第四步:在Ubuntu客戶端通過ssh登錄服務器。假設服務器的IP地址是172.18.0.198,登錄的用戶名是liuqiming。
$ ssh -l liuqiming 172.18.0.198
接下來會提示輸入密碼,然後就能成功登錄到服務器上了。可以通過資源管理器瀏覽的方式登錄服務器,點擊位置->連接到服務器,服務器類型選擇ssh,服務器一欄填入服務器的IP地址,點擊連接即可。
ubuntu下使用郵箱
ubuntu下默認就有郵箱軟件,如在使用時發現無法接受或發送郵件,在發送電子郵件->身份驗證點擊檢查的類型,再選擇沒有劃斜線的就好了。
ubuntu下安裝五筆
使用如下指令:
sudo apt-get install ibus-tables-wubi
然後在系統->首選項->鍵盤輸入法的輸入法中選擇WUBI,添加進去即可。
ubuntu下安裝chrome瀏覽器
ubuntu10.10默認安裝的火狐瀏覽器,如果用戶喜歡該瀏覽器,可以跳過此節。google出了基於linux的瀏覽器chrome,用戶可以使用如下方式安裝。在網上下載安裝源文件,http://tools.google.com/chrome/,也可以從光盤中獲得,雙擊即可安裝。
ubuntu下安裝VIM
使用如下命令安裝即可:
sudo apt-get install vim
ubuntu打開WINDOWS下記事本亂碼問題
出現這種情況的原因是,gedit 使用一個編碼匹配列表,只有在這個列表中的編碼才會進行匹配,不在這個列表中的編碼將顯示為亂碼。您要做的就是將 GB18030 加入這個匹配列表。
您可以遵循以下步驟,使您的gedit正確顯示中文編碼文件。
1. 終端中鍵入「gconf-editor」,並按下回車鍵,打開「配置編輯器」。
2. 展開左邊的樹節點,找到 /apps/gedit-2/preferences/encodings 節點並單擊它。
3. 雙擊右邊的 auto_detected 鍵,打開「編輯鍵」對話框。
4. 單擊列表右邊的「添加」按鈕,輸入「GB18030」,單擊確定按鈕。
5. 列表的最底部新增加了一個「GB18030」。單擊右邊的向上,將「GB18030」放在第二位;
6. 單擊確定按鈕,關閉配置編輯器。
現在,gedit 應該能夠順利打開 GB18030 編碼的文本文件了。如果不放心,可以再增加GBK、GB2312編碼。
ubuntu下安裝源碼比較工具
ubuntu下源碼比較工具很多,比較常見的是meld工具,使用如下指令安裝:
sudo apt-get install meld
安裝完成後,可以在應用程序->編程中打開。
ubuntu下安裝串口終端minicom
使用如下指令安裝:
sudo apt-get install minicom
安裝完成後,需要設置minicom。如果直接使用串口,通常設置為ttyS0,如果使用USB轉串口,通常設置為ttyUSB0。輸入如下指令:
sudo minicom -s
選擇Serial port setup,選擇A,輸入正確的串口終端,選擇E,輸入115200 8N1,選擇F和G,都設置為No,不使用流控,再回車,選擇Save setup as dfl。注意,只有root用戶才有權限保存參數。筆記本用戶通常使用的USB轉串口延長線,目前市面上大多都是pl2303方案,插上USB轉串口延長線後,輸入如下命令查詢驅動是否正常加載:
lsmod |grep pl2303
正常加載時會提示如下信息:
lqm@lqm:~$ lsmod |grep pl2303 pl2303 11756 1 usbserial 33100 3 pl2303
再使用如下命令查詢系統的一些信息:
dmesg | tail -f
正常情況下會出現如下提示:
lqm@lqm:~$ dmesg |tail -f <nowiki>[ 383.093851] ERROR! H2M_MAILBOX still hold by MCU. command fail [ 383.148849] ---> RTMPFreeTxRxRingMemory [ 383.148903] <--- RTMPFreeTxRxRingMemory [ 383.180580] RTUSB disconnect successfully [ 387.762330] usb 2-4: USB disconnect, address 3 [ 387.762566] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0 [ 387.762601] pl2303 2-4:1.0: device disconnected [ 392.164589] usb 2-4: new full speed USB device using ohci_hcd and address 5 [ 392.379898] pl2303 2-4:1.0: pl2303 converter detected [ 392.412998] usb 2-4: pl2303 converter now attached to ttyUSB0</nowiki>
表示串口設備名稱為ttyUSB0。有時會提示如下錯誤:
lqm@lqm:~$ dmesg | tail -f <nowiki>[ 408.910351] 0x1300 = 00073200 [ 413.945752] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1177 [ 419.047006] ===>rt_ioctl_giwscan. 7(7) BSS returned, data->length = 1067 [ 419.047302] ==>rt_ioctl_siwfreq::SIOCSIWFREQ[cmd=0x8b04] (Channel=1) [ 419.392535] wlan0: no IPv6 routers present [ 433.902136] ===>rt_ioctl_giwscan. 6(6) BSS returned, data->length = 960 [ 473.902907] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1271 [ 533.900777] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1200 [ 613.904091] ===>rt_ioctl_giwscan. 9(9) BSS returned, data->length = 1435 [ 713.904199] ===>rt_ioctl_giwscan. 8(8) BSS returned, data->length = 1263</nowiki>
一般情況下重插撥一次USB轉串口線即可。
ubuntu卡死的解決辦法
ubuntu系統有時也會像windows系統一樣,卡死不動。這時除了復位系統,我們也可以嘗試如下方法:
一:按住ctrl+alt+F2進入tty2;
二:查看進程:
ps -e
三:kill掉相關進程
四:再按住alt+F7返回圖形界面
Android開發工具
代碼編輯工具
在windows下開發時,很多人都習慣使用source insight,但是source insight並沒有linux版本,而且自從3.5版本之後,就再也沒有更新了。
在linux下,同樣也有很多優秀的代碼編輯軟件,如Emacs、KVIM、Arachnophilia、Bluefish、Komodo Edit、NEdit、Gedit、Kate、Quanta Plus等等。這裡介紹兩款比較優秀的代碼編輯軟件,slickedit和eclipse。
slickedit
安裝步驟如下:
第一步:解壓se_14000202_linux_full.tar.gz:
tar -zxvf <nowiki>se_14000202_linux_full.tar.gz</nowiki>
第二步:進入解壓的目錄,運行安裝程序vsinst。這裡要加上sudo,增加讀寫訪問權限:
sudo ./vsinst
第三步:會彈出安裝信息,按住回車不放,直到彈出如下提示:
<nowiki>Do you agree to the above license terms?[yes or no] </nowiki>輸入
yes
第四步:彈出如下信息:
<nowiki>Install directory [/opt/slickedit]: </nowiki>
這裡提示輸入安裝路徑,默認按回車即可
第五步:提示如下信息:
<nowiki>Directory /opt/slickedit/ does not exist. Create [Y]? </nowiki>
輸入Y,回車, 程序開始安裝。
第六步:安裝過程中會彈出一個SlickEdit License Manager的對話框,點退出
再彈出一個對話框,點OK
第七步:這時會提示:
INSTALLATION SUCCESSFULLY COMPLETED 1.Type "/opt/slickedit/bin/vs" to run SlickEdit. 2.You may want to add "/opt/slickedit/bin/" to your users' PATH.
第八步:退回原存放安裝文件的目錄,解壓破解文件
<nowiki>slickedit2009-14.0.2.2-linux-cracked.tar.gz: tar -xvf slickedit2009-14.0.2.2-linux-cracked.tar.gz</nowiki>
將解壓出的破解文件VS拷備到/opt/slickedit/bin目錄下:
sudo cp vs /opt/slickedit/bin
第九步:在/opt/slickedit/bin目錄下,執行./vs命令打開slickedit軟件,看看是否大功告成?以下是執行命令:
cd / ./opt/slickedit/bin/vs
第十步:啟動方式
可以在 [終端] 中 ./vs 啟動 ,也可以自己創建一個起動器。
cd /opt/slickedit/bitmaps
找到圖標文件,slickedit 2010下我選擇了vse_profile_256.bmp
$ sudo cp <nowiki>vse_profile_256.bmp /usr/share/icons </nowiki>
一般把圖標都放在/usr/share/icons下
$ cd /usr/share/applications $ sudo gedit <nowiki>slickedit.desktop </nowiki>
輸入如下語句:
<nowiki>[Desktop Entry] Name=Slickedit Comment=Slickedit Exec=/opt/slickedit/bin/vs Icon=/usr/share/icons/vse_profile_256.bmp Terminal=false Type=Application Categories=Development; StartupNotify=true </nowiki>
這時,在應用程序->編程中,就能找到slickedit的圖標了。
第十一步:如果你實在是用煩了這個軟件,那就幹掉他吧!進入/opt目錄,輸入如下指令:
rm -rf slickedit
從此讓他滾得越遠越好!
附:slickedit行號顯示:
tool->options->Languages->Application Languages->C/C++->View->Line numbers
eclipse
在ubuntu下安裝eclipse
第一步:進入如下網站下載eclipse:
選擇Eclipse IDE for Java Developers,Linux 32 Bit或Linux 64 Bit根據自己的機器而定;
第二步:將下載的文件解壓到用戶目錄:
cp <nowiki>eclipse-java-indigo-SR1-linux-gtk.tar.gz ~/ cd ~ tar xf eclipse-java-indigo-SR1-linux-gtk.tar.gz</nowiki>
第三步:創建啟動圖標:
sudo cp <nowiki>icon.xpm /usr/share/icons/eclipse.xpm sudo gedit /usr/share/applications/eclipse.desktop </nowiki>
輸入如下語句:
<nowiki>[Desktop Entry] Name=eclipse Comment=eclipse Exec=/home/lqm/eclipse/eclipse Icon=/usr/share/icons/eclipse.xpm Terminal=false Type=Application Categories=Development; StartupNotify=true </nowiki>
這時,在應用程序->編程中,就能找到eclipse圖標了,點擊即可啟動eclipse.
第四步:安裝CDT插件
安裝eclipse後,還不能建立C/C++工程,需安裝插件。進入官網下載:
http://www.eclipse.org/downloads/download.php?file=/tools/cdt
解壓下載的文件cdt-master-8.0.1.zip,將解壓出來的plugins和features目錄拷貝到eclipse安裝目錄,直接合併即可完成安裝。
使用eclipse新建一個工程
第一步:打開eclipse,首次打開時,會提示選擇工作路徑,建立自己的路徑,確定即可;
第二步:新建一個工程。點擊
File->New->Project,
選擇
C/C++->C Project,
點擊
Next,
在Project name一欄輸入工程名稱,如xboot,在Project name下面有一個Use default location的選擇框,去掉前面的勾, 點擊
Browse,
指向我們需要修改的文件的目錄。
在Project type中選擇一個工程類型,如Shared Library->Empty Project,在Toolchains中選擇Cross GCC,再點擊Next,在Select Configurations中選擇配置類型,如Release,點擊Finish完成。
第三步:這時在Project Explorer中有xboot的目錄,右擊xboot,點擊Import,找到General->File System,雙擊,彈出Import對話框,在From directory中找到需要加載的文件的目錄,點擊Select All,將把加載的目錄的所有類型文件添加到工程中,點擊Finish按鈕,提示是否覆蓋.cproject,點擊Yes To All,這時我們需要編輯的文件就已經全加載到工程中了。
adb工具
安裝adb工具
網上下載最新的SDK,下載地址為:
http://developer.android.com/sdk/index.html
對於WINDOWS系統,需下載installer_r12-windows.exe,如下圖所示:
如果PC機上沒有安裝JDK,會提示需要先安裝,需從java官網下載,如jdk-6u25-windows-i586.exe,不同的版本名稱不一樣。安裝完JDK後,再安裝SDK,默認會裝在C盤,建議安裝在D盤,這時adb工具在下面的路徑:
D:\Program Files\Android\android-sdk\platform-tools
修改系統環境變量,找到Path環境變量,在前面添加
D:\Program Files\Android\android-sdk\platform-tools;
注意一定要加一個分號隔開。然後在WINDOWS的CMD命令行中輸入adb,將會彈出adb的一些參數。如果出現」adb不是內部或外部命令的錯誤」,表示系統沒有找到adb,將上面目錄中的adb.exe和AdbWinApi.dll拷貝到C:\WINDOWS\system32中即可。
查看設備的連接狀態
開發板上電,進入 setting,選擇「 developer options」,勾選「 USB debugging」進入WINDOWS下的CMD命令行,輸入如下命令驗證開發板是否連接:
adb devices
顯示下面內容表示成功連接:
進入adb shell
使用如下命令進入開發板終端:
adb shell
如下圖所示:
輸入exit退回DOS操作界面。注意,有時候,執行adb devices命令時,會提示error: more than one device and emulator,很有可能是播放了USB設備造成的。這時已經無法再通過adb傳輸數據,解決的辦法很簡單,如果是使用windows,直接在進程中幹掉adb.exe,再啟動adb即可。
串口工具secureCRT
安裝secureCRT工具,在計算機設備管理器中找到COM口號,點擊「快速連接」,如下圖:
協議選擇serial(我的設備是COM2),其他選項按照下圖所示選擇,右側三個流控制選項不能勾選!
接下來用USB轉串口線接到開發板的調試串口與PC即可看到調試串口打印的log信息。
安裝android源碼包
安裝android源碼依賴包
說明:本文檔所有開發全部基於ubuntu14.04 64位系統,後續不再聲明。
使用如下命令安裝所需的軟件包(安裝前使用sudo apt-get update獲得一下最近的軟件包的列表):
sudo apt-get install git-core gnupg sun-java6-jdk flex bison gperf libsdl-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev genromfs u-boot-tools libxml2-utils texinfo mercurial subversion whois
很可能個別軟件包會安裝失敗,比如sun-java6-jdk,這時需要我們手動來安裝。下面是在ubuntu下手動安裝jdk1.6的詳細步驟:
第一步:在官網下載最新的jdk1.6的安裝源文件jdk-6u27-linux-i586.bin,下載地址為:
第二步:將下載的文件複製到/usr/lib/jvm目錄,執行如下命令安裝:
chmod +x <nowiki>jdk-6u27-linux-i586.bin sudo ./jdk-6u27-linux-i586.bin </nowiki>
第三步:修改環境變量:
sudo gedit /etc/profile
在最末尾加入如下語句:
<nowiki>#set java environment JAVA_HOME=/usr/lib/jvm/jdk1.6.0_27 export JRE_HOME=/usr/lib/jvm/jdk1.6.0_27/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH</nowiki>
第四步:重啟系統
第五步:查看當前java安裝版本:
root@lqm:/usr/lib/jvm# java -version java version "1.6.0_27" Java(TM) SE Runtime Environment (build 1.6.0_27-b07) Java HotSpot(TM) Server VM (build 20.2-b06, mixed mode) root@lqm:/usr/lib/jvm#
到此,jdk1.6成功安裝。
注意,如果安裝了jdk1.5和1.6,很有可能查詢版本時,仍然是1.5的,執行如下指令:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_27/bin/java 255 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_27/bin/javac 255
這兩條指令用於創建符號鏈接。其中,/usr/bin/java 是不用改動的,為你的原有的jdk路徑,/usr/lib/jvm/jdk1.6.0_27/bin/java這個是jdk1.6的java路徑255是優先級。
再執行如下命令:
sudo update-alternatives --config java sudo update-alternatives --config javac
彈出如下對話框:
root@lqm:/usr/local# update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java). 选择 路径 优先级 状态 <nowiki>------------------------------------------------------------ * 0 /usr/lib/jvm/jdk1.6.0_27/bin/java 255 自动模式 1 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java 53 手动模式 2 /usr/lib/jvm/jdk1.6.0_27/bin/java 255 手动模式 </nowiki>
要維持當前值[*]請按回車鍵,或者鍵入選擇的編號。這裡選擇我們需要使用的jdk 版本,回車即可。
說明:jdk1.6也可以使用如下方法安裝:
手動修改下載源,指令如下:
cd /etc/apt cp <nowiki>sources.list sources.list.bak vim sources.list </nowiki>
在最末行添加如下語句:
deb <nowiki>http://archive.canonical.com/ubuntu maverick partner </nowiki>
然後更新源:
apt-get update
再安裝java6:
apt-get install sun-java6-jdk
安裝交叉編譯工具鏈
我們已經將交叉編譯工具鏈集成到源碼包中,無需再手動安裝。交叉編譯工具鏈路徑:
Sourcetree/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8
安裝64位系統必要的一些補丁包
apt-get install lsb-core libc6-dev-i386 g++-multilib lib32z1-dev lib32ncurses5-dev
指定GCC交叉編譯器
在ubuntu系統上安裝最新的GCC交叉編譯器時,版本已經超過4.4了,使用如下指令可查詢GCC的版本:
gcc –version
可能出現的界面如下:
terry@ubuntu-server:~$ gcc --version gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 Copyright © 2011 Free Software Foundation, Inc. terry@ubuntu-server:~$
上面顯示4.6.3版本,默認我們給出的包,在4.6.3上編譯會提示一些錯誤,都是新的GCC引出的錯誤,網上都有解決辦法,如果不想修改這些錯誤,可將GCC版本降至4.4即可。解決辦法 :
sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib
裝完後,開始降級gcc ,這不會影響系統,僅僅是改個鏈接而已,不喜歡的話改回來即可。
cd /usr/bin sudo mv gcc <nowiki>gcc.bk sudo ln -s gcc-4.4 gcc sudo mv g++ g++.bk sudo ln -s g++-4.4 g++ </nowiki>
安裝android源碼包
從網盤中拷貝android源碼包,放在自己的用戶名目錄,光盤中存放着android4.4的源碼包,其名稱為x3288_lollipop_v10.tar.bz2。注意最好不要放在文件系統的根目錄,這樣會出現管理權限問題。
示例方法:在用戶權限下執行如下命令:
cp yourcdromdir/source/ <nowiki>x3288_lollipop_v10.tar.bz2 ~/ cd tar xvf x3288_lollipop_v10.tar.bz2 </nowiki>
這時,整個android文件系統全部都放在了當前解壓的目錄中。至此,android源碼包安裝完成。
說明:源碼包名稱可能會因發布日期等有所不同,具體以網盤中實際名稱為準。
android腳本分析配置
源碼編譯腳本分析
說明:各種版本的源碼編譯腳本大同小異,原理完全相同,具體腳本以相關源碼包中的為準,這裡僅用來分析其實現機制。
編譯腳本mk內容及注釋如下:
<nowiki>#!/bin/bash # # Description : Android Build Script. # Authors : lqm www.9tripod.com # Version : 1.0 # Notes : None # # # JAVA PATH # export PATH=/usr/lib/jvm/jdk1.6.0_45/bin:$PATH # # Some Directories # BS_DIR_TOP=$(cd `dirname $0` ; pwd) BS_DIR_RELEASE=${BS_DIR_TOP}/out/release BS_DIR_UBOOT=${BS_DIR_TOP}/uboot BS_DIR_KERNEL=${BS_DIR_TOP}/kernel # # Target Config #指定uboot,内核以及文件系统配置文件 BS_CONFIG_BOOTLOADER_UBOOT=x3288_config BS_CONFIG_KERNEL=x3288_defconfig BS_CONFIG_FILESYSTEM=PRODUCT-rk3288-eng # 在编译前,事先设置一些编译环境,保证准确可靠的编译 setup_environment() { LANG=C cd ${BS_DIR_TOP}; PATH=${BS_DIR_TOP}/out/host/linux-x86/bin:$PATH; mkdir -p ${BS_DIR_RELEASE} || return 1 } # 编译 uboot,编译完后,自动将 bootloader.bin 拷贝到 out/release 目录 build_bootloader_uboot() { # Compiler uboot cd ${BS_DIR_UBOOT} || return 1 make distclean || return 1 make ${BS_CONFIG_BOOTLOADER_UBOOT} || return 1 make -j${threads} || return 1 # Copy bootloader to release directory cp -v ${BS_DIR_UBOOT}/RK3288UbootLoader_V2.19.09.bin ${BS_DIR_RELEASE} echo "^_^ uboot path: ${BS_DIR_RELEASE}/RK3288UbootLoader_V2.19.09.bin" return 0 } # 编译内核,编译完成后,会自动将内核映像 kernel.img & resource.img拷贝到 out/release 目#录 build_kernel() { #export PATH=${BS_DIR_UBOOT}/tools:$PATH # Compiler kernel cd ${BS_DIR_KERNEL} || return 1 make ${BS_CONFIG_KERNEL} return 1 make x3288.img -j${threads} || return 1 # Copy kernel.img & resource.img to release directory cp -v ${BS_DIR_KERNEL}/kernel.img ${BS_DIR_RELEASE} cp -v ${BS_DIR_KERNEL}/resource.img ${BS_DIR_RELEASE} return 0 } # 编译 android 文件系统 build_system() { cd ${BS_DIR_TOP} || return 1 source build/envsetup.sh || return 1 make -j${threads} ${BS_CONFIG_FILESYSTEM} || return 1 # create boot.img echo -n "create boot.img without kernel... " [ -d $OUT/root ] && \ mkbootfs $OUT/root | minigzip > $OUT/ramdisk.img && \ truncate -s "%4" $OUT/ramdisk.img && \ rkst/mkkrnlimg $OUT/ramdisk.img $BS_DIR_RELEASE/boot.img >/dev/null echo "done." # create recovery.img echo -n "create recovery.img with kernel and with out resource... " [ -d $OUT/recovery/root ] && \ mkbootfs $OUT/recovery/root | minigzip > $OUT/ramdisk-recovery.img && \ truncate -s "%4" $OUT/ramdisk-recovery.img && \ mkbootimg --kernel $OUT/kernel --ramdisk $OUT/ramdisk-recovery.img --output $OUT/recovery.img && \ cp -a $OUT/recovery.img $BS_DIR_RELEASE/ echo "done." # create misc.img echo -n "create misc.img.... " cp -a rkst/Image/misc.img $BS_DIR_RELEASE/misc.img cp -a rkst/Image/pcba_small_misc.img $BS_DIR_RELEASE/pcba_small_misc.img cp -a rkst/Image/pcba_whole_misc.img $BS_DIR_RELEASE/pcba_whole_misc.img echo "done." # create system.img if [ -d $OUT/system ] then echo -n "create system.img... " system_size=`ls -l $OUT/system.img | awk '{print $5;}'` [ $system_size -gt "0" ] || { echo "Please make first!!!" && exit 1; } MAKE_EXT4FS_ARGS=" -L system -S $OUT/root/file_contexts -a system $BS_DIR_RELEASE/system.img $OUT/system" ok=0 while [ "$ok" = "0" ]; do make_ext4fs -l $system_size $MAKE_EXT4FS_ARGS >/dev/null 2>&1 && tune2fs -c -1 -i 0 $BS_DIR_RELEASE/system.img >/dev/null 2>&1 && ok=1 || system_size=$(($system_size + 5242880)) done e2fsck -fyD $BS_DIR_RELEASE/system.img >/dev/null 2>&1 || true echo "done." fi chmod a+r -R $BS_DIR_RELEASE/ return 0 } threads=1 uboot=no kernel=no system=no if [ -z $1 ]; then uboot=yes kernel=yes system=yes fi while [ "$1" ]; do case "$1" in -j=*) x=$1 threads=${x#-j=} ;; -u|--uboot) uboot=yes ;; -k|--kernel) kernel=yes ;; -s|--system) system=yes ;; -a|--all) uboot=yes kernel=yes system=yes ;; -h|--help) cat >&2 <<EOF Usage: build.sh [OPTION] Build script for compile the source of telechips project. -j=n using n threads when building source project (example: -j=16) -u, --uboot build bootloader uboot from source -k, --kernel build kernel from source -s, --system build android file system from source -a, --all build all, include anything -h, --help display this help and exit EOF exit 0 ;; *) echo "build.sh: Unrecognised option $1" >&2 exit 1 ;; esac shift done setup_environment || exit 1 if [ "${uboot}" = yes ]; then build_bootloader_uboot || exit 1 fi if [ "${kernel}" = yes ]; then build_kernel || exit 1 fi if [ "${system}" = yes ]; then build_system || exit 1 fi exit 0 </nowiki>
配置使用MIPI屏
在kernel/arch/arm/boot/dts目錄下存放了多個已經調試好的液晶屏的配置文件,7寸RGB屏的配置文件為
x3288_lcd070hdr.dtsi,
7寸MIPI屏的配置文件為
x3288_lcd070hdm.dtsi。
在
kernel/arch/arm/boot/dts/x3288.dts
中選擇配置使用的液晶模組即可,如需要使用7寸MIPI屏,示例代碼如下:
//#include "<nowiki>x3288_lcd070hdr.dtsi" #include "x3288_lcd070hdm.dtsi" </nowiki>
編譯android源碼包
說明:編譯映像時一定要使用普通權限編譯。編譯完成後,生成的映像文件RK3288UbootLoader_V2.19.09.bin,boot.img, system.img, kernel.img, misc.img, recovery.img, resource.img,update.img。
編譯uboot
在android源碼目錄下執行如下命令編譯uboot,編譯完成後映像文件RK3288UbootLoader_V2.30.10.bin(因版本不同,名稱不一定相同)會釋放到out/release目錄。
./mk -u
編譯android內核
在android源碼目錄下執行如下命令編譯android內核,編譯完成後映像文件kernel.img、resource.img會釋放到out/release目錄。
./mk -k
編譯android文件系統
在android源碼目錄下執行如下命令編譯android映像文件,編譯完成後映像文件會釋放到out/release目錄。
./mk -s
編譯完文件系統,在out/release目錄下會生成如下文件:
- RK3288UbootLoader_V2.19.09.bin: uboot映像文件
- Kernel.img:內核映像
- Resource.img:資源映像,內含開機圖片和內核的設備樹信息。
- Boot.img: Android的初始文件映像,負責初始化並加載system分區。
- System.img:android的system分區映像,ext4文件格式系統。
- Recovery.img:急救模式映像。
- Misc.img:分區映像,負責啟動模式切換和急救模式的參數傳遞。
- update.img:整個升級文件的單一映像,包括了uboot,內核,文件系統等。
查看編譯幫助
執行如下指令可查詢mk腳本使用方法:
./mk -h
燒寫android映像文件
Windows系統映像燒寫
RKTool驅動安裝
解壓RKTools.rar,工具路徑:SDK\RKTools\windows\Release_DriverAssitant打開「DriverInstall.exe」,點擊「驅動安裝」,提示安裝驅動成功即可。
注意事項:
1.目前支持的操作系統包括:XP,Win7_32,Win7_64,Win8_32,Win8_64。
2.XP系統在驅動安裝完後,若還提示「發現新設備」, 安裝驅動時選擇「自動安裝」。
3.若之前已經安裝過老版本驅動,請先點擊「驅動卸載」後再進行「驅動安裝」。
燒錄方法一:單個升級固件update.img
生成統一固件update.img
我們已經在mk腳本中集成了生成統一固件的方法,在編譯android文件系統時(./mk -s),會自動生成update.img,並釋放到out/release目錄。
燒錄固件update.img
打開
RKTools\windows\AndroidTool_Release_v2.3\AndroidTool_Release_v2.3\AndroidTool.exe
選擇「升級固件」選項卡,點擊「固件」,在彈出窗口中選擇已經生成的update.img 文件,如下圖所示。
工具配置好後,連接開發板(如下圖):
按下RECOVERY鍵,然後插上microUSB線與5V DC電源線
燒錄工具界面會提示發現一個LOADER設備,然後點擊升級,即可開始升級過程(註:如果提示發現一個ADB設備,點擊切換按鈕切換成LOADER設備即可)。
上圖為升級完成截圖。
燒錄方法二:多設備升級固件update.img
該工具適合用戶批量刷機,可以同時給多台開發板刷機。
打開路徑:
SDK\RKTools\windows\FactoryTool_v1.33
下的「FactoryTool.exe」,點擊「固件」選擇update.img,勾選「升級」,點擊「啟動」,如下圖所示:
步驟1:點擊固件,選擇update.img;
步驟2:點擊啟動(選擇升級按鈕);
步驟3:連接開發板USB、DC電源,按下recovery鍵,對應USB口發現設備,並實現自動升級;然後重複步驟3即可同時升級第二台、第三台設備,升級成功或者失敗的設備會在兩邊的列表中列出,移除成功或者失敗的設備後可以繼續連接需要升級的設備。
Linux系統燒寫映像
生成固件update.img
我們已經在mk腳本中集成了生成統一固件的方法,在編譯android文件系統時(./mk -s),會自動生成update.img,並釋放到out/release目錄。
燒錄固件update.img
工具路徑:
RKTools\linux\Linux_Upgrade_Tool_v1.2
在升級之前將update.img拷貝到upgrade_tool相同目錄下,運行upgrade_tool(需要sudo)
work@ubuntu:~/3288/Linux_Upgrade_Tool_v1.2/cp rockdev<nowiki>/update.img . work@ubuntu:~/3288/Linux_Upgrade_Tool_v1.2$ sudo ./upgrade_tool </nowiki>
執行結果如下圖,發現設備列表,輸入要升級的DevNo(設備號)選擇設備
選擇設備後彈出工具使用菜單如下圖,左側是功能描述,右側是命令語法,升級相關操作都在upgrade command列表下,忘記命令語法可以輸入H進行查看,清屏輸入CS,退出按Q。
- CD命令: 選擇設備, 當執行的命令有包含設備重啟操作時, 需重新選擇設備,當改變操作設備時需重新選擇
- SD命令:msc切換到rockusb升級模式。 當切換執行成功後, 需要重新選擇設備
- UF命令:升級完整update.img固件,當執行成功後需要重新選擇設備
- UL命令:升級loader功能,當執行成功後需要重新選擇設備
- DI命令:下載單獨image鏡像到指定扇區,例如升級kernel.img或者system.img都可以直接使用此功能.例如下載kernel.img: DI -k kernel.img parameter //如果之前通過DI下載過parameter,則再下載kernel.img時就可以不用指定最後的parameter參數
- DB命令:下載boot,在maskrom狀態下,可以通過此功能, 讓maskrom設備進行Rockusb協議通訊
- EF命令:擦除整個nandflash
- LF命令:低格保留塊後面區域,只有在loader模式下使用
執行uf update.img 開始更新固件,下圖為更新完成截圖。
Rockusb>uf <nowiki>update.img </nowiki>
備註:也可通過配置config.ini文件配置升級映像文件,只需輸入UF即可升級,請用戶自行嘗試。
使用upgrade_tool指令燒寫映像
上一節我們介紹了通過upgrade_tool燒寫統一固件update.img的方法,熟悉三星平台的開發者會發現,這種方法並不是很高效,真正操作起來,它遠沒有fastboot工具來的迅速。其實,upgrade_tool工具同樣支持類似於fastboot的燒寫方式。
為了燒寫方便,在mk腳本中,默認在編譯系統時,已經將燒寫工具upgrade_tool拷貝到out/release目錄了。
第一步:打開串口終端,並打開minicom,用於適時監控串口調試信息;
第二步:按住RECOVERY鍵,連接USB OTG線和電源線,這時uboot打印信息將會提示已經進入USB下載模式。如果接通電源後沒來得及按住RECOVERY鍵,在按住RECOVERY鍵的同時,再按下復位鍵即可。注意,使用
第二步:打開第二個串口終端,進入out/release目錄;
第三步:在out/release目錄下敲擊如下指令,燒寫相應的映像。
sudo upgrade_tool di –k <nowiki>kernel.img(烧写内核) sudo upgrade_tool di –s system.img(烧写文件系统) sudo upgrade_tool di resource resource.img(烧写资源文件) sudo upgrade_tool di –r recovery.img(烧写急救文件) sudo upgrade_tool ul RK3288UbootLoader_V2.30.10.bin(烧写bootloader) sudo upgrade_tool uf update.img(烧写统一固件) </nowiki>
使用Rkflashkit燒寫映像
rkflashkit 有圖形界面,後加了命令行支持,更是好用。
work@ubuntu:~/rktool$ sudo apt-get install build-essential fakeroot work@ubuntu:~/rktool$ git clone <nowiki>https://github.com/linuxerwang/rkflashkit work@ubuntu:~/rktool$ cd rkflashkit work@ubuntu:~/rktool$ ./waf debian work@ubuntu:~/rktool$ sudo apt-get install python-gtk2 work@ubuntu:~/rktool$ sudo dpkg -i rkflashkit_0.1.4_all.deb </nowiki>
注意:rkflashkit_0.1.4_all.deb會因版本更新,版本數字可能會有所變化,如果執行失敗,執行ls命令查看下即可。
work@ubuntu:~/rktool/$ sudo rkflashkit
如下是圖形界面,在Devices下選擇設備,選擇要燒寫的分區和對應的映像文件,點擊Flash image即可。
該工具也支持命令行,使用help命令查看使用方法
work@ubuntu:~/rktool/rkflashkit$ rkflashkit --help <nowiki>Usage: <cmd> [args] [<cmd> [args]...] part List partition flash @<PARTITION> <IMAGE FILE> Flash partition with image file cmp @<PARTITION> <IMAGE FILE> Compare partition with image file backup @<PARTITION> <IMAGE FILE> Backup partition to image file erase @<PARTITION> Erase partition reboot Reboot device For example, flash device with boot.img and kernel.img, then reboot: sudo rkflashkit flash @boot boot.img @kernel.img kernel.img reboot work@ubuntu:~/rktool/rkflashkit$ </nowiki>
使用TF卡升級固件
功能說明
SD Card Boot功能是主控在上電時,優先從SD卡上查找啟動代碼,然後加載引導,從而實現特定功能。目前SD Card Boot已經實現兩個功能:SD卡升級和SD卡運行。
SD卡升級功能,將SD卡啟動代碼寫到SD卡的保留區,然後將固件拷貝到SD卡可見分區上,主控從SD卡啟動時,SD卡啟動代碼和升級代碼將固件升級到本地主存儲中,並支持PCBA測試和Demo文件的拷貝。可以完全做到脫離PC機進行固件升級,提高生產效率。
SD卡運行功能,將固件升級到SD卡保留區中,把SD卡當作主存儲使用。主控從SD 卡啟動時,固件已經存放在SD卡上,有沒有本地主存儲都可以正常工作。目前主要應用是板卡廠做PCBA測試,而不會破壞flash數據。
軟件說明
工具目錄有如下文件:
SD_Firmware_Tool.exe:制卡工具
Config.ini:配置文件
SDBoot.bin:SDRK2926、RK2928、RK3166和RK3188使用SDBoot.bin支持SD卡升級和啟動功能;RK3288使用RK3288Loader_uboot_V2.16.bin及以後版本。
製作前軟件配置
編輯config.ini配置文件以下項目設置為TRUE
* #当值为TRUE时,新卡格式适用3288项目 * USE_FW_LOADER=TRUE
工具界面如下:
製作
注意:製作啟動卡會格式化SD卡,用戶需要注意備份重要數據,防止誤刪。
第一步,選擇對應的可移動磁盤設備;
第二步,選擇功能模式:固件升級、PCBA測試、SD啟動;
* 默认会勾选“固件升级”,即只升级固件。 * 如果在升级固件前需要做 “PCBA 测试”,则同时勾选“固件升级”、“PCBA测试”。 * 如果不升级固件,只需要测试PCBA,则单选“PCBA测试”,不选择“固件升级”。 * “SD启动”会把固件烧写到SD中,所有分区都分配在SD卡上,运行时不会修改内部存储的数据(相当于SD卡做主存储设备)。
注意:SD卡運行模式,對kernel的編譯有要求,需要把kernel的SD卡驅動配置去掉,不參與編譯。
修改為:
第三步,選擇對應平台的update.img固件;
第四步(可選),如果需要拷貝demo文件到用戶盤根目錄,點擊選擇Demo按鈕,選擇需要拷貝的文件目錄。選擇的目錄下所有文件會拷貝到SD根目錄下的Demo目錄中,在SD引導固件升級後,Demo目錄下的文件會拷貝到樣機用戶盤的根目錄下。
第五步,點擊開始創建即可。
android開發指南
命令終端
將串口連接開發板上調試串口,進入android系統後,會自動進入android終端,如下圖所示:
播放mp3
android命令行播放mp3
在android的在命令行下,可以使用強大的am指令做很多事情。在android終端輸入am,正常情況下會有如下提示信息:
# am usage: am [subcommand] [options] start an Activity: am start [-D] [-W] <INTENT> -D: enable debugging -W: wait for launch to complete start a Service: am startservice <INTENT> send a broadcast Intent: am broadcast <INTENT> start an Instrumentation: am instrument [flags] <COMPONENT> -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT) -e <NAME><VALUE>: set argument <NAME> to <VALUE> -p <FILE>: write profiling data to <FILE> -w: wait for instrumentation to finish before returning start profiling: am profile <PROCESS> start <FILE> stop profiling: am profile <PROCESS> stop <INTENT> specifications include these flags: [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] [-c <CATEGORY> [-c <CATEGORY>] ...] [-e|--es <EXTRA_KEY><EXTRA_STRING_VALUE> ...] [--esn <EXTRA_KEY> ...] [--ez <EXTRA_KEY><EXTRA_BOOLEAN_VALUE> ...] [-e|--ei <EXTRA_KEY><EXTRA_INT_VALUE> ...] [-n <COMPONENT>] [-f <FLAGS>] [--grant-read-uri-permission] [--grant-write-uri-permission] [--debug-log-resolution] [--activity-brought-to-front] [--activity-clear-top] [--activity-clear-when-task-reset] [--activity-exclude-from-recents] [--activity-launched-from-history] [--activity-multiple-task] [--activity-no-animation] [--activity-no-history] [--activity-no-user-action] [--activity-previous-is-top] [--activity-reorder-to-front] [--activity-reset-task-if-needed] [--activity-single-top] [--receiver-registered-only] [--receiver-replace-pending] [<URI>] </nowiki>
啟動的方法為:
<nowiki># am start -n 包(package)名/包名.活动(activity)名称 </nowiki>
啟動的方法可以從每個應用的AndroidManifest.xml的文件中得到,以計算器(calculator)為例,
<?xml version="1.0" encoding=""?> <manifestxmlns:android="<nowiki>http://schemas.android.com/apk/res/android" package="com.android.calculator2"> <applicationandroid:label="@string/app_name"android:icon="@drawable/icon"> <activity android:name="Calculator" android:theme="@android:style/Theme.Black"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest> </nowiki>
由此計算器(calculator)的啟動方法為:
<nowiki># am start-ncom.android.calculator2/com.android.calculator2.Calculator</nowiki>
Music的啟動方法為:
<nowiki># am start-ncom.android.music/com.android.music.MusicBrowserActivity</nowiki>
這時,屏幕上會有music的播放列表,但是並沒有播放。如果需要播放,得執行下面的指令:
am start -n <nowiki>com.android.music/com.android.music.MediaPlaybackActivity -d /mnt/extsd/liangliangxianwang.mp3 </nowiki>
使用android默認音頻播放器
確保外置的SD卡中存在mp3文件,點擊音樂,播放器會自動識別音頻文件,如下圖:
點擊相應的音頻文件即可播放。播放時界面如下:
播放視頻
android自帶視頻處理功能,在android應用界面顯示為圖庫。點擊圖庫按鈕,會在外置SD卡中自動尋找能夠識別的視頻和圖片文件,如下圖:
點擊中間的按鈕:
上圖中,帶有播放符號的即為視頻文件,不帶的為圖片文件。點擊帶播放符號的文件:
再點擊播放按鈕:
X3288 android5.1系統還帶一款4k視頻播放器,播放器會自動關聯視頻文件,點擊需要播放的視頻即可播放
如果遇到圖庫無法支持的視頻文件,可以採用第三方播放器如RockPlayer進行播放,如網絡上最為流行的rmvb和rm文件。這時,機器儼然成為了一個具有支持rm/rmvb等格式視頻的超強mp4了。如對屏幕尺寸有更高要求,可以使用VGA或HDMI方式,直接將視頻文件顯示到顯示器或電視機上。
使用RockPlayer播放視頻時,會彈出一個硬解和軟解的對話框,如果屬於3288硬解碼的視頻文件,選擇硬解模式,否則選擇軟解模式。如播放rm/rmvb文件,選擇軟解模式才能播放,如下圖所示:
圖片瀏覽
瀏覽圖片時,同樣使用上面的圖庫瀏覽。點擊圖庫圖標,點擊要瀏覽的圖片即可瀏覽。滑動可以瀏覽下一張圖片,如下圖所示:
語言設置
點擊設置中的語言和輸入法一欄,再點擊選擇語言,會彈出多種語言,選擇需要的語言即可,如下圖:
使用WIFI上網
X3288開發板自帶wifi/BT二合一模組,無需額外USBwifi即可無線上網。啟動開發板,點擊設置,在Wi-Fi一欄的方框中有個關閉按鈕,將他撥到右邊,即打開狀態,如下圖:
再點擊Wi-Fi一欄,進入wifi界面,找到屬於自己的無線網絡信號並點擊,輸入密碼後,點擊連接即可上網。
使用藍牙傳輸數據
x3288開發板支持AP6335芯片的WIFI/BT二合一模塊。點擊設置->藍牙,將藍牙開關打開,如下圖所示:
點擊藍牙,進入設置界面,找到一個支持藍牙設備的安卓手機,並打開藍牙,且可被發現。在x3288開發板的藍牙設置界面的右上腳點擊搜索設備,在可用設備一欄中將會顯示出所有找到的藍牙設備。找到需要匹配的藍牙設備並點擊,在開發板上彈出配對請求:
點擊配對,同時,在手機端也會彈出類似的畫面,也點擊配對即可。成功配對後的界面如下:
這時,配對的設備間就可以通過藍牙共享文件了。點擊開發板的圖庫,找到一張圖片並選中:
點擊右上腳的分享按鈕,選擇藍牙,彈出如下界面:
選擇配對成功的藍牙設備,這時在配對設備上將會彈出一個接收文件的對話框,點擊接收即可。
使用藍牙播放音樂
x3288開發板可支持通過藍牙連接藍牙音箱,並播放音樂。準備一個藍牙音箱,並切換到藍牙模式,進入開發板的藍牙界面並打開,點擊右上腳的搜索設備,將會找到藍牙音箱,下圖中的GS805即是藍牙音箱:
點擊GS805,稍等幾秒,將會配對成功,無需任何確認動作。這時,隨意在開發板上播放音視頻,音樂將會通過藍牙音箱播放出來。
使用USB鼠標鍵盤
啟動開發板,將USB鼠標或者USB無線鼠標鍵盤接到USB HOST接口,即可使用鼠標鍵盤操作android界面了。
APK應用安裝
Android系統下有很多種APK的安裝方法,這裡介紹四種。
使用SD卡安裝
將拷貝有APK安裝包的SD卡插到開發板,打開開發板的「文件管理」應用程序,界面如下:
可以看到,安裝包一欄找到了3個安裝包。點擊進去,會列出安裝列表:
點擊要安裝的APK文件:
依次點擊下一步,直到安裝完成即可。
使用ApkInstaller安裝
使用ApkInstaller安裝APK,需要將開發板與PC機同步起來。
第一步:啟動開發板,並進入android系統。
第二步:將光盤中的ApkInstaller.rar解壓到PC機的任意目錄,如D盤;
第三步:雙擊ApkInstaller.exe應用程序,如下圖所示:
在解壓目錄下默認有一個名為mVideoPlayer.apk的APK文件,安裝軟件已經將它列出來了。我們需要將安裝的APK軟件放在該目錄。
第四步:點擊安裝->開始安裝,或者點擊快捷方式http://x.9tripod.com/wiki/zh/images/b/b0/Triangle-Shortcuts.png開始安裝。安裝完成後,界面上會有相應提示。
說明:此方法適合批量安裝APK文件。
使用adb工具安裝
在上一章節,ApkInstaller.rar的解壓目錄中已經存在有adb工具了,我們在命令行下進入該目錄,執行如下指令安裝APK:
adb install *.apk
正常安裝的界面如下:
在線安裝
用戶可以通過91助手,百度應用中心、360手機助手等第三方軟件直接在線安裝,這裡就不詳細說明了。
屏幕抓圖
使用eclipse抓圖
android有很多截圖工具,但是很多都需要root權限,在平時做開發時,我們可以使用eclipse自帶的插件進行截圖,非常的方便。
啟動開發板,並進入android系統。使用USB延長線將x3288開發板與PC機連接,第一次連接時會提示需要安裝軟件,如下圖:
選擇否,點下一步:
選擇自動安裝軟件,點下一步,直至安裝完成。
安裝完成之後,打開eclipse軟件,如果沒有安裝,需先安裝該軟件。然後點擊Window->Show view->Devices,如下圖:
確保機器處於開機狀態,這時Devices會找到機器的設備號,如下圖:
點擊上圖右上腳的攝相頭標誌,就會彈出要保存的圖像,點擊save保存即可,如下圖所示:
使用360手機助手抓圖
在PC機上安裝360手機助手手,啟動開發板,通過USB延長線將開發板連接到PC機的USB口,打開360手機助手,360手機助手將會找到x3288開發板。如果找不到,將USB線撥掉重插,在開發板上會彈出一個授權界面,點擊確認即可。正常連接後的360手機助手界面如下:
點擊左下腳的截屏按鈕即可。
掛載TF卡
系統啟動後,會自動掛載右側卡槽中的TF卡到/mnt/external_sd/目錄,如下圖所示:
掛載U盤
啟動開發板,並進入android系統。插入U盤後,系統會將U盤自動掛載到/mnt/usb_storage*(*表示0到4)目錄。
計算器
點擊android應用的計算器即可使用計算器功能,如下圖所示:
輸入法
推薦安裝訊飛輸入法,測試界面如下:
瀏覽器
android默認自帶一個瀏覽器,該瀏覽器功能已經非常完善了,如果用戶仍然覺得不夠要求,可以下載安裝第三方瀏覽器,如UC瀏覽器等。
屏幕旋轉
重力傳感器已經集成到開發板上,將開發板移動到四周任一方向,界面會隨之改變。當然並不是所有應用程序都會隨之改變,有部分應用程序不支持屏幕旋轉。旋轉後示例圖片如下:
時間設置
點擊android應用中的設置,可以看到有日期和時間一欄,點擊進去,選擇相應的欄目設置即可。
拍照攝相
點擊android應用中的相機,會進入圖像預覽模式。點擊右下腳的拍照按鈕即可拍照,如下圖所示:
右下腳可以切換拍照和錄像功能。
使用有線以太網上網
將可以正常上網的網線連接到開發板的網口座上,網口座的指示燈會正常閃爍,正常上網界面如下:
優酷
將優酷的APK軟件安裝到開發板,連接網線就可以看視頻了。
播放電視
安裝龍龍直播,泰捷視頻等網絡播放器,插上網線即可播放。
使用遙控器操作開發板
默認x3288開發板硬件支持紅外遙控器,我們可以通過遙控器操作android界面,在泰捷視頻等電視界面通過遙控器操作,開發板就完全變成了一個機頂盒。
1080P視頻播放
3288相對4412,支持更多種全高清視頻的硬解碼,可以流暢的播放這些格式的1080P視頻文件。
通常情況下,使用RockPlayer或者自帶的播放器都可播放。如果遇到自帶播放器無法播放,可選擇RockPlayer。播放界面如下:
使用91助手或從QQ官網下載針對android版本的QQ軟件,安裝到x3288開發板,即可使用QQ了。
QQ鬥地主
用戶可自己下載安裝測試。
憤怒的小鳥
用戶可自己下載安裝測試。
賽車
用戶可自己下載安裝測試。
VGA顯示
注意,x3288開發板本身不帶VGA電路,如需使用VGA,需另加VGA轉接板。
HDMI顯示
HDMI顯示支持直接將LCD上顯示的視頻還原到帶有HDMI接口的電視機上,支持1080P高清視頻,兼容720P,576P以及480P的視頻。同時還將音頻也一併傳送到電視機上。
開關機
x3288開發板使用了PMU進行電源管理。當外接上5V的電源適配器後,x3288開發板將會被自動點亮,進入系統後,長按開機鍵,會彈出一個選擇對話框,點擊關機按鈕將會彈出確認關機的對話框,點擊確認即可關機。
休眠喚醒
進入android文件系統後,輕按開關機鍵,屏幕將會熄滅,然後進入深度休眠狀態。可以通過串口查看進入休眠的打印信息。再次輕按開關機鍵,開發板將會喚醒。
Android測試程序
我們在x4418,x6818開發板上開發了強大的安卓測試軟件,基本上可以測試開發板的所有硬件功能,它在產品量產,程序開發上有很大的參考價值。在x3288開發平台上,我們將儘快提供。在APP界面點擊安卓測試,即可進入測試界面,使用觸摸屏左右滑動,或者用鼠標滑動可切換測試的硬件。
液晶屏測試
在液晶屏測試界面,點擊中間的任意純色位置,會有不同的顏色變化,我們可以觀察LCD是否有丟色,壞點等。
觸摸屏測試
在觸摸屏測試界面,點擊開始測試,即可在屏幕上任意手寫,在批量生產時,我們通常通過畫對角線測試觸摸電路是否正常。
發光二極管測試
點擊圖片上任意的燈,為紅色時,對應開發板上的LED燈亮,為灰色時,對應LED燈滅。
蜂鳴器測試
按住開始測試鍵,蜂鳴器會鳴叫,鬆開開始測試鍵,蜂鳴器停止鳴叫。
背光測試
划動中間的圓圈,背光亮度會隨之發生變化。
按鍵測試
按下或抬起開發板上四個獨立按鍵的任意一個,界面上將會提示對應的按鍵的按下和抬起動作。
電池測試
該界面反應了接在開發板上的電池電量信息。
數模轉換測試
監測四路ADC的電壓。我們可以通過調節開發板上的精密可調電位器,觀察上面對應通道的電壓是否變化。
重力傳感器測試
旋轉開發板時,上面的X,Y,Z軸的值會隨之發生變化。
音頻測試
點擊開始測試,會聽到有清脆的聲音出來。
攝像頭測試
裝上攝相頭,點擊開始測試,會看到攝像頭抓到的預覽界面顯示出來。
無線網絡測試
使用WIFI連上無線網絡後,無線網絡測試界面會搜索到附近的網絡並列出來。
網絡連接測試
當有線或無線網絡正常連接時,網絡連接測試界面可以瀏覽網頁。
串口測試
將需要測試的串口的TXD和RXD短路,再點擊開始測試,界面上會提示對應串口會自發自收0123456789。如果不能自發自收,說明對應的串口硬件有問題。
外部存儲器測試
將TF卡插到開發板上,點擊開始測試,界面上會顯示TF卡的相關信息。
優盤測試
將U盤插到開發板上,點擊開始測試,界面上會顯示U盤的相關信息。
android內核驅動
G-sensor驅動
路徑:kernel/drivers/input/sensors/accel/mma8452.c hardware/rockchip/sensor/st 文件:mma8452.c及st目录
電容觸摸屏驅動
路径:kernel/drivers/input/touchscreen/ 源码:gslX680.c
液晶屏驅動
路径:kernel/drivers/video/rockchip/lcdc/ 源码:rk3288_lcdc.c
按鍵驅動
路径:kernel/drivers/input/keyboard 源码:rk_keys.c
WIFI/BT模塊驅動
路径:kernel/drivers/net/wireless/rockchip_wlan 源码:该目录下所有源码文件
攝像頭驅動
路径:hardware/rockchip/camera/SiliconImage/isi/drv 源码:该目录下
VGA驅動
路径:kernel/drivers/video/rockchip
HDMI驅動
路径:kernel/drivers/video/rockchip/hdmi
proc文件系統
啟動環境變量查詢
使用如下指令查詢啟動環境變量配置:
cat /proc/cmdline
會有如下類似打印信息:
vmalloc=496M console=ttyFIQ0 <nowiki>androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(misc),0x00008000@0x00006000(resource),0x00008000@0x0000e000(kernel),0x00010000@0x00016000(boot),0x00010000@0x00026000(recovery),0x0001a000@0x00036000(backup),0x00040000@0x00050000(cache),0x00002000@0x00090000(kpanic),0x00300000@0x00092000(system),0x00008000@0x00392000(metadata),0x00200000@0x0039A000(userdata),0x00020000@0x0059A000(radical_update),-@0x005BA000(user) storagemedia=emmc uboot_logo=0x02000000@0x7dc00000:0x01000000 loader.timestamp=2016-02-19_17:53:13 androidboot.mode=emmc </nowiki>
CPU信息查詢
使用如下指令查詢CPU信息:
cat /proc/cpuinfo
會有如下類似打印信息:
shell@rk3288:/ # cat /proc/cpuinfo Processor : ARMv7 Processor rev 1 (v7l) processor : 0 model name : ARMv7 Processor rev 1 (v7l) BogoMIPS : 48.00 Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc0d CPU revision : 1 processor : 1 model name : ARMv7 Processor rev 1 (v7l) BogoMIPS : 48.00 Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc0d CPU revision : 1 processor : 2 model name : ARMv7 Processor rev 1 (v7l) BogoMIPS : 48.00 Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc0d CPU revision : 1 processor : 3 model name : ARMv7 Processor rev 1 (v7l) BogoMIPS : 48.00 Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc0d CPU revision : 1 Hardware : Rockchip RK3288 (Flattened Device Tree) Revision : 0000 Serial : e3d650362e219fe2
內存信息查詢
使用如下指令查詢內存使用信息:
cat /proc/meminfo
會有如下類似打印信息:
shell@rk3288:/ # cat /proc/meminfo MemTotal: 2062080 kB MemFree: 1573408 kB Buffers: 11140 kB Cached: 206416 kB SwapCached: 0 kB Active: 165880 kB Inactive: 156828 kB Active(anon): 105176 kB Inactive(anon): 268 kB Active(file): 60704 kB Inactive(file): 156560 kB Unevictable: 0 kB Mlocked: 0 kB HighTotal: 1540096 kB HighFree: 1141180 kB LowTotal: 521984 kB LowFree: 432228 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 105152 kB Mapped: 58948 kB Shmem: 308 kB Slab: 24800 kB SReclaimable: 12056 kB SUnreclaim: 12744 kB KernelStack: 4160 kB PageTables: 5844 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 1031040 kB Committed_AS: 19085052 kB VmallocTotal: 499712 kB VmallocUsed: 45004 kB VmallocChunk: 361448 kB
磁盤分區信息查詢
使用如下命令查詢磁盤分區信息:
cat /proc/partitions
會有如下類似打印信息:
shell@rk3288:/ # cat /proc/partitions major minor #blocks name 254 0 520912 zram0 179 0 15267840 mmcblk0 179 1 4096 mmcblk0p1 179 2 4096 mmcblk0p2 179 3 16384 mmcblk0p3 179 4 16384 mmcblk0p4 179 5 32768 mmcblk0p5 179 6 32768 mmcblk0p6 179 7 53248 mmcblk0p7 179 8 131072 mmcblk0p8 179 9 4096 mmcblk0p9 179 10 1572864 mmcblk0p10 179 11 16384 mmcblk0p11 179 12 1048576 mmcblk0p12 179 13 65536 mmcblk0p13 179 14 12261376 mmcblk0p14
內核版本查詢
使用如下命令查詢內核版本:
cat /proc/version
會有如下類似打印信息:
shell@rk3288:/ # cat /proc/version Linux version 3.10.0 (lqm@lqm) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #42 SMP PREEMPT Fri May 27 11:50:10 CST 2016
網絡設備查詢
使用如下命令查詢網絡設備信息:
cat /proc/net/dev
會有如下類似打印信息:
shell@rk3288:/ # cat /proc/net/dev Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 eth0: 0 0 0 0 0 0 0 0 992 6 0 0 0 0 0 0
查看內核啟動信息
使用如下命令查詢內核啟動信息:
cat /proc/kmsg
android開發項目實戰
說明:以下為實際項目實例,用戶可參考x210開發文檔練習,後續我們會陸續發布。在進行下面的任一個實驗之前,請確保前面的環境已經搭建完畢。
實戰1:創建hello x3288工程
參考《x4418 android平台用戶手冊》。
實戰2:在x3288開發板上運行hello x3288測試程序
參考《x4418 android平台用戶手冊》。
實戰3:從零開始編寫LED測試程序
參考《x4418 android平台用戶手冊》。
實戰4:建立第一個APK應用程序,通過JNI+NDK調用底層驅動
參考《x4418 android平台用戶手冊》。
實戰5:修改VGA分辨率
參考《x4418 android平台用戶手冊》。
實戰6:如何修改init.rc文件
永久修改
在
system/core/rootdir
目錄下找到init.rc文件,修改後執行
./mk –s,
將會生成新的system.img文件,重新燒寫system.img即可更新init.rc。注意,在編譯時,首先需要先將out目錄下的
init.rc
刪除後再編譯,否則可能不會生效。
臨時修改
默認init.rc在ramdisk.img中,ramdisk.img又被打包到boot.img中,因此,如果我們需要臨時修改boot.img,首先需要解壓boot.img,再手動修改我們需要修改的內容,再打包即可。為此,我們特別編寫了解壓和壓縮的腳本文件。
在android根目錄下,新建腳本文件ramdisk.sh,編輯內容如下:
<nowiki>#!/bin/bash # create: liuqiming # date: 2016-11-22 # mail: liuqiming@9tripod.com echo "Modify boot.img" echo "1.unzip boot.img" echo "2.Create boot.img" echo "3.delete cache files" echo "4.exit" #准备工作,环境变量的声明 SOURCE_DIR=$(cd `dirname $0` ; pwd) TOOLS_DIR=${SOURCE_DIR}/tools TARGET_DIR=${SOURCE_DIR}/out/release OUT=${SOURCE_DIR}/out/target/product/rk3288 PATH=${SOURCE_DIR}/out/host/linux-x86/bin:$PATH; #读取要执行的操作索引 read -p "Choose:" CHOOSE #解压boot.img if [ "1" = ${CHOOSE} ];then echo "unzip boot.img" cd $TARGET_DIR #第一步:新建ramdisk目录 [ -e "ramdisk" ] ||{ echo "mkdir ramdisk"; mkdir ramdisk;} #第二步:判断是否存在boot.img文件 [ -f "$TARGET_DIR/boot.img" ] || { echo "error! can't find boot.img!"; rm -rf ramdisk;exit; } cd ramdisk #第三步:拷贝boot.img cp ../boot.img . #第四步:解压boot.img文件,得到boot.img-ramdisk.gz文件 [ -f "/bin/split_bootimg.pl" ] || { cp $TOOLS_DIR/split_bootimg.pl /bin; } split_bootimg.pl boot.img rm -f boot.img #第五步:解压boot.img-ramdisk.gz文件 gzip -dc boot.img-ramdisk.gz | cpio -i echo "^_^ unzip boot.img finished!" rm -f boot.img-ramdisk.gz rm -f boot.img-second.gz rm -f boot.img-kernel exit #打包boot.img elif [ "2" = ${CHOOSE} ];then echo "create boot.img with kernel..." #第一步:判断是否存在ramdisk目录 [ -e "$TARGET_DIR/ramdisk" ] || { echo "can't find [ramdisk],please unzip boot.img first!"; exit; } #第二步:去除默认的root.img文件 rm -f $TARGET_DIR/boot.img cd $TARGET_DIR #第三步:将当前目录所有文件打包到boot.img [ -d $TARGET_DIR/ramdisk ] && \ mkbootfs $TARGET_DIR/ramdisk | minigzip > $TARGET_DIR/ramdisk.img && \ truncate -s "%4" $OUT/ramdisk.img && \ mkbootimg --kernel ${OUT}/kernel --ramdisk ${OUT}/ramdisk.img --second $TARGET_DIR/resource.img --output $TARGET_DIR/boot.img rm -rf ramdisk exit #清除残余文件 elif [ "3" = ${CHOOSE} ];then cd ${TARGET_DIR} rm -rf ramdisk echo "^_^ delete cache files ok!" #退出脚本 elif [ "4" = ${CHOOSE} ];then exit fi 执行./ramdisk.sh,输入1,回车,将会自动解压out/release目录下的boot.img,并存放到out/release/ramdisk目录。 执行./ramdisk.sh,输入2,回车,将会自动将out/release/ramdisk目录下的文件打包成boot.img。 </nowiki>
實戰7:如何修改開機動畫
默認android啟動時,會有android的英文字母不斷高亮滾動顯示,構成了一幅美麗的開機動畫。其實這個開機動畫是可以定製的,有興趣的讀者可以自行嘗試。
實戰8:如何修改uboot中的開機LOGO
瑞芯微官方提供的uboot會讀取kernel根目錄下的logo.bmp和logo_kernel.bmp兩個文件,分別用於做uboot和內核的開機LOGO,uboot和內核的LOGO顯示全部是由uboot完成的。其中logo.bmp用作uboot的開機LOGO,logo_kernel.bmp用作內核的開機LOGO。值得注意的是,如果我們要將uboot和內核顯示的LOGO設置得相同,並不能簡單的複製,因為他們的圖片格式是有區別的。logo.bmp支持8b的bmp格式圖片,而logo_kernel.bmp只支持壓縮後的8b的bmp格式圖片,因此logo_kernel.bmp實際上要比logo.bmp的尺寸要小得多。而且在實際顯示時,很明顯的看到顯示內核LOGO時,如果顏色比較豐富,就會失真。為了只顯示一幅圖片,我們直接將kernel目錄下的logo_kernel.bmp刪除即可。
如果我們需要換uboot的開機LOGO,找一張分辨率不是太大的圖片,轉換成BMP格式,然後使用WINDOWS的圖庫編輯功能,轉換成8b模式,保存並替換kernel目錄下的logo.bmp即可。注意,如果LOGO的分辨率設置得過大,也可能導致無法顯示。如果需要全屏開機LOGO,默認的uboot代碼就不適用了,需要重新移植。
實戰9:如何修改內核中的LOGO
同上,找一張分辨率不是太大的圖片,轉換成BMP格式,在WINDOWS的圖片編輯軟件下轉換成8b模式後,還需要藉助於linux下強大的gimp工具,將圖片壓縮,內核LOGO才能顯示出來。默認瑞芯微提供的這套方案,內核LOGO分辨率不夠大,而且會明顯失真,無法顯示真彩圖片,如果開發的工程師一定要顯示完美的內核LOGO,建議使用linux下標準的開機LOGO方案。
實戰11:使用git管理源代碼
在我們最開始編碼時,就應該養成使用git等工具管理源碼的好習慣。這裡簡單介紹git的一些常用操作,具體更深入的學習,需要讀者深入研究。
git指令
1).初始化倉庫
git init
2).查看版本庫的狀態
git status
3).查看版本庫的狀態
git log
4).提交文件到倉庫索引中
git add . ---提交当前目录所有修改
git add hello.c example.c ---提交两个文件到仓库索引
5).提交內容到倉庫:
git commit -a -m "yx modify some files"
6).比較當前的工作目錄和倉庫數據庫中的差異
git diff ---建议使用windows 客户端
7).恢復到某個版本
git reset --hard 8f097e ---恢复到某个历史版本
8).打標籤
git tag V1.01 8f097e -m "20100101发布" ---给某个版本打上标签
git tag -d V1.01 ---删除标签
9).clone倉庫
git clone git@172.18.0.198:boot ---clone仓库到当前目录
git clone git@172.18.0.198:boot temp ---clone仓库到temp目录
10)服務器倉庫同步到本地
git pull ---将服务器最新内容同步到本地
11).將本地倉庫中的內容同步到服務器中
git push ---提交当前目录修改记录到服务器(服务器已存在此目录)
git push git@172.18.0.198:FCR/K660/app master ---提交当前目录修改到服务器(服务器不存在此目录)
12).查看项目版本更新细节
git show 18183e ---显示当前分支的最新版本的更新细节
初始化git倉庫
在第一次解壓android源碼後,進入android根目錄,更新本地Git倉庫:
cd android_gingerbread #进入工作目录
git init-db #初始化工作目录
git add . #将工作目录的所有文件添加进来以便跟踪管理
git commit -a #将所监视的文件提交到仓库
sudo apt-get install qgit
第一次建立倉庫後,給出第一次提交:
git commit -m "初始化工程"
否則,輸入git log時,會提示如下錯誤:
fatal: bad default revision 'HEAD'
恢復到上一版本
首先,使用git log命令查詢修改記錄:
lqm@lqm:~/android_gingerbread$ git log commit d5fd5223fd354c0a9c63057a7b8fe9a6870bdd7e Author: lqm <lqm@lqm.(none)> Date: Wed Dec 14 10:34:34 2011 +0800
刪除不必要的處理器文件
commit 1af4b99d582bf33cc2f37a0529554426b30a168d Author: lqm <lqm@lqm.(none)> Date: Wed Dec 14 10:14:39 2011 +0800
初始化工程
lqm@lqm:~/android_gingerbread$
再使用git reset指令恢復到某個提交狀態:
lqm@lqm:~/android_gingerbread$ git reset --hard 1af4b
Checking out files: 100% (12517/12517), done.
HEAD is now at 1af4b99 初始化工程
lqm@lqm:~/android_gingerbread$
修改源碼後,提交修改記錄
修改了某些文件,需要提交到服務器,具體操作如下:
第一步:使用git pull將服務器倉庫提交到本地
提示出錯,有兩種解決辦法,第一種,先將drivers/mtd/nand/nand_base.c備份,比如:mv drivers/mtd/nand/nand_base.c drivers/mtd/nand/nand_base.c.bak
然後再執行git pull。第二種,執行git checkout –f,然後再執行git pull。
正常的操作如下:
上面的提示文件為服務器上已經更新的文件,執行git pull後,已經同步到本地了。
第二步:使用git status,查看修改的文件:
上圖表示本地修改了build/mk和common/env_common.c兩個文件。
第三步:使用git add指令將指定的文件提交到倉庫索引
git add . #将当前目录所有修改的文件提交到仓库索引
或者使用下面的指令:
git add build/mk #将指定的文件提交到仓库索引,env_common.c并未提交。
第四步:使用
git commit #命令注释修改的内容到仓库
第五步:使用
git push #指令将修改的文件提交到服务器
說明:如果源碼保存在本機上,不用操作第一步和第五步。
實戰13:如何打包整個android bsp包
這裡推薦兩種常用的打包方法。
使用tar指令
通常在編譯完android源碼包後,在android源碼目錄中會生成各種釋放文件,它統統被匯集到源碼根目錄的out目錄,打包時我們需要將它排除在外。另外,使用git管理工具管理源碼時,在android源碼根目錄會生成.git目錄,隨着修改次數的增加,該目錄內容會越來越多,打包時也需要將它排除在外。
由於在整個android源碼中,存在其他的out目錄,為了在使用tar指令打包時,防止將這些目錄也排除在外,因此我們可以首先將源碼根目錄的out目錄重命名,如out_x3288,再執行打包指令。打包完成後,再將out_x3288還原成out即可。
另外,如果編譯了uboot,內核等,在源碼包中會存在很多*.o,*.cmd的臨時文件,這些也是我們所不需要的,在打包時也一併排除在外。
在android源碼總目錄的同級目錄下執行如下指令完成打包:
mv x3288_kitkat\out x3288_kitkat\out_x3288
tar jcvf x3288_kitkat.tar.bz2 x3288_kitkat –exclude=”.git” –exclude=”out_x3288” –exclude=”*.o” –exclude=”*.cmd”
mv x3288_kitkat \out_x3288 x3288_kitkat\out
使用git指令
使用git指令打包源碼的前提是整個android源碼包已經由git管理起來。在android源碼包的根目錄下(包含有uboot,kernel等目錄的同一級目錄)使用如下指令打包整個源碼包:
git archive --format=tar HEAD > x3288_kitkat.tar
bzip2 x3288_kitkat.tar
實戰15:android調試技巧之mm指令
在Android SDK源碼工程下,如果編譯整個工程可能需要兩三個小時,即使二次編譯也要二十多分鐘。如果只想單獨編譯某個APK應用,那麼可以這樣做:
1)在build目錄下執行
. envsetup.sh (注意,命令前面有一个点,然后接一个“空格”键)
執行完後,就會多出以下幾個命令:
- croot: Changes directory to the top of the tree. - m: Makes from the top of the tree. - mm: Builds all of the modules in the current directory. - mmm: Builds all of the modules in the supplied directories. - cgrep: Greps on all local C/C++ files. - jgrep: Greps on all local Java files. - resgrep: Greps on all local res/*.xml files. /*???*/ - godir: Go to the directory containing a file. - printconfig: 当前build的配置情况
2)mm命令
用於當前目錄下的工程
3)mmm命令
用於編譯指定目錄,如:mmm Settings 表示編譯Settings這個目錄,之後會生成新的apk
實戰16:ubuntu下minicom的設置
在做項目開發時,串口調試已經成為我們開發的必備工具。但是現在很多主板,或是筆記本上都已經省掉了串口,這對我們開發人員來說,無疑會帶來些不必要的麻煩。為此,我們可能會通過PCI轉串口,USB轉串口等來開發。值得慶幸的是,在windows下使用的人多,我們很容易就能夠安裝PCI轉串口驅動或是USB轉串口驅動。如果我們使用純的linux系統開發,安裝驅動可能就沒這麼簡單了。因此,這裡分享一些我們實際開發中總結的一些經驗,避免新人多走彎路。
通用串口的minicom設置方法
通常情況下,PC機上自帶的串口,在windows和ubuntu下都自帶驅動了,這時安裝就比較簡單了。
第一步:安裝minicom
sudo apt-get install minicom
第二步:設置minicom的端口
sudo minicom -s
界面如下:
<nowiki> +-----[configuration]------+ | Filenames and paths | | File transfer protocols | | Serial port setup | | Modem and dialing | | Screen and keyboard | | Save setup as dfl | | Save setup as.. | | Exit | | Exit from Minicom | +--------------------------+ </nowiki>
通過鍵盤的上下鍵盤選擇到Serial port setup,回車
+-----------------------------------------------------------------------+ | A - Serial Device : /dev/ttyWCH1 | | B - Lockfile Location : /var/lock | | C - Callin Program : | | D - Callout Program : | | E - Bps/Par/Bits : 115200 8N1 | | F - Hardware Flow Control : No | | G - Software Flow Control : No | | | | Change which setting? | +-----------------------------------------------------------------------+
輸入A,光標會停留到Serial Device的界面,將設備節點設置為/dev/ttyS0;輸入F,關閉硬流控;再回車,退出當前設置,回到上一界面,選擇Save setup as dfl,再選擇Exit退出設置。到此,minicom安裝完成。
USB轉串口安裝方法
這裡以PL2303的驅動IC為例。默認ubuntu10.10系統已經自帶有PL2303的驅動了。因此,這個安裝比較簡單。
第一步:將USB轉串口延長線連接到PC機的USB口,啟動ubuntu系統;
第二步:執行如下指令檢查是否有USB轉串口的設備節點:
lqm@lqm:~$ ls /dev/ttyU*
/dev/ttyUSB0
第三步:重新設置minicom的設備節點,方法同上;
第四步:打開minicom,測試USB轉串口是否能正常使用。
PCI轉串口安裝方法
PCI轉串口的芯片比較多,這裡以CH35X為例,講述在ubuntu下的安裝方法。
第一步:下載最新的安裝包CH35XDRV.ZIP,或者從光盤裡面獲得;
第二步:將CH35XDRV.ZIP拷貝到ubuntu的任意目錄並解壓,得到CH35XDRV目錄,使用命令終端進入該目錄,示例如下:
lqm@lqm:~/下载/CH35XDRV/CH35XDRV$ pwd /home/lqm/下载/CH35XDRV/CH35XDRV lqm@lqm:~/下载/CH35XDRV/CH35XDRV$ ls CH35X??-???+?-??+-?+?.chm DRV_16S DRV_1P DRV_1S DRV_1S1P DRV_2S DRV_2S1P DRV_2S1P_RA DRV_4S DRV_4S1P DRV_6S DRV_8S <nowiki>PCISETUP.exe README.TXT SETUPX64 TOOLS lqm@lqm:~/下载/CH35XDRV/CH35XDRV$ cd DRV_2S lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S$ ls DOS LINUX WINDOWS lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S$ cd LINUX/ lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$ ls driver Makefile README wchdump wchmknod wchterm lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$ </nowiki>
第三步:在LINUX目錄下執行如下命令安裝:
sudo make clean
sudo make install
實際操作時發現有如下錯誤提示:
cd wchmknod;\ ./wchmknod /bin/sh: line 1: ./wchmknod: 权限不够 <nowiki>make: *** [wchmknod_install] 错误 126 root@lqm:/home/lqm/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX# 进入./wchmknod目录,更改wchmknod文件权限,再编译即可: root@lqm:/home/lqm/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX# cd wchmknod/ root@lqm:/home/lqm/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX/wchmknod# ls wchmknod root@lqm:/home/lqm/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX/wchmknod# ls -la 总计 12 drwxrwxrwx 2 lqm lqm 4096 2011-04-29 16:55 . drwxrwxrwx 6 lqm lqm 4096 2011-04-29 16:55 .. -r--r--r-- 1 lqm lqm 936 2010-09-20 04:48 wchmknod root@lqm:/home/lqm/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX/wchmknod# chmod 777 wchmknod </nowiki>
再
make install
即可安裝成功。
第四步:執行如下指令加載驅動
modprobe wch
或者
insmod driver/wch.ko
第五步:使用如下指令查詢驅動是否正常加載:
lsmod | grep wch
示例如下:
lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$ lsmod |grep wch
wch 58933 1
lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$
這裡查找到了已經加載的驅動,表明驅動加載成功。
第六步:查看/dev下生成的相關節點:
lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$ ls /dev/ttyWCH*
/dev/ttyWCH0 /dev/ttyWCH11 /dev/ttyWCH14 /dev/ttyWCH17 /dev/ttyWCH2 /dev/ttyWCH22 /dev/ttyWCH25 /dev/ttyWCH28 /dev/ttyWCH30 /dev/ttyWCH4 /dev/ttyWCH7
/dev/ttyWCH1 /dev/ttyWCH12 /dev/ttyWCH15 /dev/ttyWCH18 /dev/ttyWCH20 /dev/ttyWCH23 /dev/ttyWCH26 /dev/ttyWCH29 /dev/ttyWCH31 /dev/ttyWCH5 /dev/ttyWCH8
/dev/ttyWCH10 /dev/ttyWCH13 /dev/ttyWCH16 /dev/ttyWCH19 /dev/ttyWCH21 /dev/ttyWCH24 /dev/ttyWCH27 /dev/ttyWCH3 /dev/ttyWCH32 /dev/ttyWCH6 /dev/ttyWCH9
lqm@lqm:~/下载/CH35XDRV/CH35XDRV/DRV_2S/LINUX$
表明節點已經成功生成。
第七步:使用minicom設置節點
sudo minicom -s
選擇Serial port setup,回車,再選擇A,將設備節點設置為/dev/ttyWCH0或/dev/ttyWCH1
保存退出,再開啟minicom:
Welcome to minicom 2.4 OPTIONS: I18n Compiled on Jun 3 2010, 13:46:31. Port /dev/ttyWCH1 Press CTRL-A Z for help on special keys OK U-Boot 1.3.4-dirty (Apr 20 2012 - 09:02:38) for SMDKV210 CPU: S5PV210@1000MHz(OK) APLL = 1000MHz, HclkMsys = 200MHz, PclkMsys = 100MHz MPLL = 667MHz, EPLL = 96MHz HclkDsys = 166MHz, PclkDsys = 83MHz HclkPsys = 133MHz, PclkPsys = 66MHz SCLKA2M = 200MHz
可見,PCI轉串口驅動已經能夠正常使用了。
第八步:以上步驟,僅僅是臨時加載了驅動,ubuntu系統重啟後,wch.ko文件並沒有自動加載。因此,需要在ubuntu的啟動腳本裡面添加自動加載的命令。
編輯/etc/rc.d/rc.local文件,在最末尾添加如下語句:
modprobe wch
第九步:重啟ubuntu系統,再次嘗試串口是否能正常使用。