導航:首頁 > 源碼編譯 > android交叉編譯調用驅動

android交叉編譯調用驅動

發布時間:2023-09-11 14:20:35

android驅動開發好了,怎麼調試

本文用《Android深度探索(卷1):HAL與驅動開發》的隨書源代碼為例詳細說明如何配置Android驅動開發和測試環境,並且如何使用源代碼中的build.sh腳本文件在各種平台(Ubuntu linux、Android模擬器和S3C6410開發板)上編譯、安裝和測試Linux驅動。建議讀者使用Ubuntu Linux12.04或更高版本實驗本文的方法。最好用root賬號登錄Linux。
一、安裝交叉編譯器
如果只是在Ubuntu Linux上測試Linux驅動就不需要安裝交叉編譯器了,但要在Android模擬器或S3C6410開發板上進行測試,就必須安裝交叉編譯器。
首先下載交叉編譯器(分卷壓縮

下載後解壓,會發現有兩個tgz文件,可以將這兩個文件放到/root/compilers目錄中,在Linux終端進入該目錄,執行如下命令安裝交叉編譯器。
[plain] view plain
# tar zxvf arm-linux-gcc-4.3.2.tgz -C /
# tar jxvf arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 -C /
二、編譯和測試Linux內核
這里的Linux內核有兩個,一個是goldfish,也就是Android模擬器使用的Linux內核、另外一個是S3C6410開發板使用的Linux內核(Linux2.6.36)。讀者首先要下載這兩個Linux內核。

Android模擬器用的Linux內核源代碼(分卷壓縮)

用於S3C6410開發板的Linux內核源代碼(分卷壓縮)
分卷1
分卷2

由於隨書代碼中的word_count驅動已經在goldfish和linux2.6.36中分別建立了符號鏈接,以便在編譯linux內核時同時也會編譯word_count驅動,所以linux內核與源代碼目錄應與作者機器上的目錄相同。也就是兩個linux內核目錄與源代碼目錄如下:
linux內核目錄
/root/kernel/goldfish
/root/kernel/linux_kernel_2.6.36
源代碼目錄
/root/drivers
注意/root/drivers目錄下就直接是每一章的源代碼了,例如/root/drivers/ch06、/root/drivers/ch07
現在需要將/usr/local/arm/arm-none-linux-gnueabi/bin路徑加到Linux的PATH環境變數中(不會加的上網查,這是Linux的基本功)
最後進入/root/compilers/goldfish目錄,執行make命令編譯linux內核,如果完全編譯,大概20分鍾左右。編譯完成後,會在/root/kernel/goldfish/arch/arm/boot目錄中生成一個zImage文件,代碼1.7MB,這就是用於Android模擬器的Linux內核文件。
三、編譯Linux驅動
現在來編譯隨書光碟的驅動程序,這里以word_count驅動為例。在Linux終端進入/root/drivers/ch06/word_count目錄。先別忙著編譯。首先要設置打開/root/drivers/common.sh文件,修改第一行UBUNTU_KERNEL_PATH變數值為自己機器上安裝的Ubuntu Linux內核路徑,只要執行「ls /usr/src」命令即可查看當前機器可用的linux內核。如可以設置下面的路徑。
UBUNTU_KERNEL_PATH=/usr/src/linux-headers-3.2.0-23-generic
剩下的兩個(S3C6410_KERNEL_PATH和/root/kernel/goldfish)只要按著前面的路徑解壓Linux內核源代碼,就不用設置了。
在word_count目錄中執行「source build.sh」命令,會允許選擇在哪個平台上編譯驅動,直接按回車會在Ubuntu Linux上編譯。如果編譯成功,會發現當前目錄多一個word_count.ko文件(驅動文件)。
現在來編譯S3C6410上運行的word_count驅動。先別忙,在編譯之前,需要Android中的adb命令。因為build.sh足夠只能,在編譯完後,如果有多個Android設備連接到PC,會允許用戶選擇上傳到哪個設備裝載,這里需要選擇S3C6410開發板,然後會直接上傳到開發板上,如圖1所示。
可以直接使用adb shell命令進入開發板,也可以使用/root/drivers/shell.sh腳本完成同樣的工作,只是後者如果有多個android設備,會允許用選擇,而不是輸入相應的設備ID。使操作更方便。在/root/drivers目錄中提供了很多這樣的腳本(shell.sh、push.sh、pull.sh等),這些腳本都會允許用戶選擇操作的Android設備。
我們通常使用Android SDK中的adb命令,到官方網站下載裝載linux版本的Android SDK,然後將<AndroidSDK根目錄> /platform-tools加到PATH環境變數中。
現在再次執行「source build.sh」命令,選擇第2項(S3C6410開發板),如果系統沒找到開發板,需要將USB線拔下重插一下。然後就可以進入開發板的終端,輸入lsmod命令查看驅動的安裝情況了。
如果在模擬器上測試,選第3項。具體測試的方法請參見書中相應的章節。
四、測試Linux驅動
測試word_count驅動的方法很多,通過命令行測試的方法請參見書中相應的章節,在word_count目錄中有一個test_word_count程序,通過執行如下的命令可以測試word_count驅動,編譯test_word_count.c程序的方法書中已詳細描述。
test_word_count 「abc bb cc」
上面的命令會輸出單詞數為3。
如果要編譯Android HAL,需要Android源代碼。購買S3C6410開發板時商家通常會帶一些光碟,裡面有用於開發板的Android源代碼,如果商家沒給光碟,別忘了要哦!

❷ 請教如何在android 系統下交叉編譯curl庫

你怎麼編譯的, cocos2dx的android.mk不能直接編譯, 要編譯主工程時包含編譯. 可以參考tests\proj.android\build_native.sh文件, 把裡面的幾個環境變數還成你自己的路徑再運行即可. 你的主工程的jni目錄下的android.mk和application.mk也要參考tests\proj.android\jni裡面的對應文件, 主要就是加入cocos2d-x幾個工程的依賴.

❸ 怎樣將android wifi編譯成驅動模塊

修改 init.rc:很多文章都有描述,但還是有些說明不清的地方,我先列出增加項,然後作些說明。
增加: mkdir /system/etc/wifi 0771 wifi wifi
chmod 0771 /system/etc/wifi
chmod 0660 /system/etc/wifi/wpa_supplicant.conf
chown wifi wifi /system/etc/wifi/wpa_supplicant.conf #wifi的原始配置文件
# wpa_supplicant socket
mkdir /data/system/wpa_supplicant 0771 wifi wifi
chmod 0771 /data/system/wpa_supplicant #放置wifi interface的地方
mkdir /data/misc/wifi 0771 wifi wifi
chmod 0771 /data/misc/wifi
chmod 0660 /data/misc/wifi/wpa_supplicant.conf #wifi的配置文件,將由wpa_supplicant根據實際配置寫入該文件
mkdir /data/misc/wifi/sockets 0777 wifi wifi #與上層通過socket通信的路徑
# Prepare for wifi
setprop wifi.interface ra0 #intreface名稱設置,這在framework/base/wifi/java/android/net/wifi /WifiStateTracker.java中會用到,以處理dhcp。rt2070用ra0,而vt6656使用eth1。
這里0771對 目錄許可權的處理是為了所有用戶能對下一級進行搜索,而紅字特別提醒的許可權配置,是因為/data/misc/wifi/sockets目錄不僅為wifi擁有者服務,還因為通信的原因要和其他用戶聯系,要不然,將會出現Unable to open connection to supplicant on "/data/system/wpa_supplicant/ra0": Connection refused,或permission denied的錯誤。很多人乾脆將上述所有的許可權都設為0777,當然也行,但總覺得有些粗糙。
service的修改:
service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant /
-Dwext -ira0 -c/data/misc/wifi/wpa_supplicant.conf #也可以用/system/etc/wifi/wpa_supplicant.conf代替
user root
group system wifi inet
# socket wpa_wlan0 dgram 660 wifi wifi #屏蔽該項是因為這項是用於UDP連接的
disable
oneshot

service dhcpcd /system/bin/logwrapper /system/bin/dhcpcd -d -B ra0
group system dhcp wifi
disabled
oneshot

❹ 如何在android安卓添加或載入設備驅動

驅動裝到手機上,把模塊連接的時候根據提示操作就行了!
就像iPhone的App Store一樣,Android也有自己的「Market」,目前Market上每天都有新增加的軟體和游戲,並且現階段出現的所有應用軟體和程序都是免費的。以下是Market使用教程:
1.打開G1的主菜單,找到並開啟Market軟體商店。在Macket主菜單中:
AndroidApplications:經過Google認可的Android軟體。
AndroidGames:經過Google認可的Android游戲。
AndroidSearch:搜索Market軟體商店裡的軟體。
AndroidMy downloads:查看你從Market下載好的軟體。
Android主菜單上面可以滾動的圖標是Google官方隨機推薦的一些第三方軟體。
2. 先點擊「Applications」後,會出現所有的第三方軟體分類,除了第一個All applications是指查看所有的第三方軟體之外,其他均為細分類。隨便點擊一個分類,則會出現該分類下的所有對應軟體,默認情況下By popularity是指按人氣由高到低的順序顯示該分類下的軟體,By date則是按照時間的先後順序來顯示該分類下的軟體。
3. 點擊一個軟體,你將會看到該軟體的詳細功能描述、網友評論、作者信息。如果你想安裝此軟體,可以直接點擊「Install」,那麼此時屏幕中將會顯示該軟體可能會涉及到的G1相關功能、個人隱私信息等提示,沒有問題的話,你就可以直接點擊「OK」,來下載並安裝此軟體了。
4. 如果你不想安裝此軟體,可以點擊「Cancel」來取消,如果你此時想進行更多操作,請點擊屏幕下方的 MENU按鈕,在屏幕下方出現的白色窗口裡:
AndroidMarket home:回到Market首頁
AndroidSearch:開始搜索Market里的軟體
AndroidMy downloads:查看已經下載好的軟體
AndroidHelp:上網查看Market的相關使用幫助
AndroidSecurity:查看該軟體所涉及的安全信息
AndroidFlag content:標記軟體內容

Search——軟體搜索篇
5. 如果你點擊Search,畫面頂部將會出現搜索欄,此時你可以隨意輸入你喜歡的軟體名稱,然後點擊Search即可。

My downloads——已下載軟體查看及卸載
6. 如果你點擊My downloads,此時將會出現的軟體列表即為你從Market上下載並安裝的軟體。若你想寫在寫在某個軟體,只需要找到並點擊這個軟體,然後在點擊「Uninstall」即可完成卸載工作!

❺ Android NDK交叉編譯openCV

注意android-ndk-r16b-linux-x86_64.zip編譯測試程序時候會link出錯,配局仿建議用r18b

build下就生成培纖我們需要的OpenCV sdk。

編譯完成

用如下CMakeLists.txt編臘簡譯運行程序

❻ 如何學習Android驅動開發

一、Android驅動的基礎知識
1.Android驅動是基於Linux驅動,強烈推薦閱讀Linux Device Driver 3rd版,這本書講了Linux下設備驅動的基礎知識,要求反復細讀。
2.能讀懂和編寫一些C程序。
3.能懂Java基礎,因為Framework層的代碼與驅動代碼聯系比較緊密,稍懂一些Java代碼,會發現對整個驅動框架的了解更加熟悉。

二、Android/Linux相關驅動框架知識
1.需要Android/Linux相關的知識。
2.需要對Android各模塊驅動框架的了解。
3.需要基本的Android調試能力。

三、相關的硬體知識和通信知識
1.Android驅動平時的工作就是調試各種外圍設備,是直接跟硬體打交道,需要看得懂電路原理圖,了解基本的顯示原理和基本的攝像頭成像原理等。
2.做Android手機,需要了解基本的通信相關知識,射頻原理和基本的Modem相關知識,只有懂相關的硬體知識和通訊設備相關的基礎知識,才可以寫出更好的Android驅動程序。

四、熱愛驅動開發和不斷學習
做Android驅動開發需要的是不斷的學習,時刻保持著一股激情,不斷的學習才能更好的完成日常的驅動開發任務,並能保持對開發的敏銳感覺。就如喬布斯所說的:Stay hungry, Stay foolish.

❼ 怎麼查看Android編譯時候交叉編譯鏈工具位置

經常搞嵌入式開發的朋友對於交叉編譯環境應該並不陌生,說白了,就是一組運行在x86 PC機的編譯工具,可以讓你在PC機上編譯出目標平台(例如ARM)可識別的二進制文件。Android平台也提供了這樣的交叉編譯工具鏈,就放在Android的NDK開發包的toolchains目錄下,因此,我們的Makefile文件中,只需給出相應的編譯工具即可。
廢話就先說到這,直接上例子,我們目標是把下面這個math.c文件編譯成一個靜態庫文件:
#include <stdio.h>
int add( int a , int b ) {
return a+b;
}
你需要編寫一個Makefile文件,這里假設你的Android ndk被安裝在 /opt/android/ndk 目錄下,當然,你可以根據自己的實際情況修改Makefile中相關路徑的定義,Makefile文件示例如下:
# Makefile Written by ticktick
# Show how to cross-compile c/c++ code for android platform
.PHONY: clean
NDKROOT=/opt/android/ndk
PLATFORM=$(NDKROOT)/platforms/android-14/arch-arm
CROSS_COMPILE=$(NDKROOT)/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-
CC=$(CROSS_COMPILE)gcc
AR=$(CROSS_COMPILE)ar
LD=$(CROSS_COMPILE)ld
CFLAGS = -I$(PWD) -I$(PLATFORM)/usr/include -Wall -O2 -fPIC -DANDROID -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp
LDFLAGS =

閱讀全文

與android交叉編譯調用驅動相關的資料

熱點內容
ascii碼是編譯的時候用嗎 瀏覽:779
壓縮機感應包可以通用嗎 瀏覽:410
方舟伺服器怎麼發布到搜索列表 瀏覽:270
xml防反編譯 瀏覽:239
數據傳輸加密系統技術方案 瀏覽:842
程序員沒有準備去面試 瀏覽:4
51單片機usb滑鼠 瀏覽:879
qq伺服器的ip地址查詢 瀏覽:112
java仿qq聊天 瀏覽:400
解壓的ipa重新打包 瀏覽:142
程序員那麼可愛vip版 瀏覽:239
程序員怎麼升職 瀏覽:243
圖形化命令按鈕vb 瀏覽:987
vcu盤加密怎麼設置 瀏覽:414
如何加密備份微信聊天記錄 瀏覽:528
安卓手機如何模擬鍵盤 瀏覽:931
查看dns地址命令 瀏覽:767
android錄屏工具 瀏覽:841
成都互動直播系統源碼 瀏覽:955
usb藍牙android 瀏覽:409