導航:首頁 > 源碼編譯 > 安卓源碼編譯載入wifi驅動

安卓源碼編譯載入wifi驅動

發布時間:2022-04-26 05:25:49

『壹』 怎樣將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源碼編譯c模塊生成可執行文件

1. 在./development目錄下創建一目錄 如:myhello
2. 進入hello目錄,在其下編寫自己的.c文件,如: myhello.c
#include <stdio.h>
int main()
{
printf("hello world\n");
exit(0);
//return 0;
}
3. 在hello目錄中,編寫Android.mk, 內容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myhelloworld
LOCAL_SRC_FILES := myhello.c
LOCAL_MODULE_TAGS := optional
include $(BUILD_EXECUTABLE)
4. 回到Android源代碼頂層目錄,進行編譯,make myhelloworld
5. 生成的可執行文件位於:out/target/proct/lotus/system/bin/ 目錄下
6. adb push 到手機 /data 目錄下,然後進入adb shell,到data目錄下,執行./myhelloworld 皆可

手動編譯連接【arm-eabi-gcc 的目錄隨andorid的版本而有變化,還有就是需要鏈接的文件如果比較多時,需要很多-l 就很麻煩了】
7、編譯成目標文件:
#$(yourAndroid)/prebuilt/linux-x86/toolchain/[arm-eabi-4.2.1]/bin/arm-eabi-gcc -I bionic/libc/arch-arm/include/ -I bionic/libc/include -I bionic/libc/kernel/common -I bionic/libc/kernel/arch-arm -g -c helloworld.c -o hello.o
8、生成可執行代碼:
#$(yourAndroid)/prebuilt/linux-x86/toolchain/[arm-eabi-4.2.1]/bin/arm-eabi-gcc -nostdlib -Bdynamic -Wl,-T,build/core/armelf.x -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,noreloc -o helloworld -Lout/target/proct/[generic]/obj/lib -Wl,-rpath-link=out/target/proct/[generic]/obj/lib -lc hello.o -entry=main

其中[ ]中部分根據實際情況修改

**************************************************
實驗:
1. 建目錄(my Android)/development/test, 在該目錄下新建 Android.mk和fb_test.c文件

2. Android.mk文件

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myfbtest
LOCAL_SRC_FILES := fb_test.c
LOCAL_MODULE_TAGS := optional
include $(BUILD_EXECUTABLE)

3. 以下為fb_test.c
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <linux/kd.h>

#include <stdio.h>

#define FBBIT_PER_PIXEL 32
#define FBBIT_PIXEL_IMAGE 16
#define PIXELS_WIDTH_BYTE 4
#define BYTE_PER_PIXEL 3
#define FB_GRAPHICS_PATH "/dev/graphics/fb0"
#define DEV_TTY0_PATH "/dev/tty0"

#define DISPLAY_ERROR -1
#define DISPLAY_SUCCESS 0

#define GET_BATTERYCAPACITY_ERR -1

#define MAX_STR 255

static struct {
int fd;
void *pixels;
struct fb_fix_screeninfo fixed;
struct fb_var_screeninfo var;
int align_xres;
} fb;

int getBatteryCapacity(void)
{
FILE *in;
char tmpStr[MAX_STR + 1];
char capfile[] = "/sys/class/power_supply/battery/capacity";

if (capfile == NULL)
return GET_BATTERYCAPACITY_ERR;

in = fopen(capfile, "rt");
if (in == NULL)
return GET_BATTERYCAPACITY_ERR;

if (fgets(tmpStr, MAX_STR, in) == NULL) {
printf("Failed to read battery capacity!\n");
fclose(in);
return GET_BATTERYCAPACITY_ERR;

}

printf("Battery capacity(ascii): %s\n", tmpStr);
fclose(in);

return 0;//atoi(tmpStr);
}

static int vt_set_graphicsmode(int graphics)
{
int fd, r;
fd = open(DEV_TTY0_PATH, O_RDWR | O_SYNC);
if (fd < 0)
return DISPLAY_ERROR;
r = ioctl(fd, KDSETMODE, graphics);
close(fd);
return r;
}

int display_init(void)
{
fb.fd = open(FB_GRAPHICS_PATH, O_RDWR);
if (fb.fd < 0)
return DISPLAY_ERROR;

if (ioctl(fb.fd, FBIOGET_FSCREENINFO, &fb.fixed) < 0)
return DISPLAY_ERROR;
if (ioctl(fb.fd, FBIOGET_VSCREENINFO, &fb.var) < 0)
return DISPLAY_ERROR;
fb.align_xres = fb.fixed.line_length /
(fb.var.bits_per_pixel >> BYTE_PER_PIXEL);

fb.pixels = mmap(0, fb.fixed.line_length * fb.var.yres_virtual,
PROT_READ | PROT_WRITE, MAP_SHARED, fb.fd, 0);
if (fb.pixels == MAP_FAILED)
return DISPLAY_ERROR;

vt_set_graphicsmode(KD_GRAPHICS);

memset(fb.pixels, 0, fb.fixed.line_length * fb.var.yres_virtual);
//display_update(fb.pixels, fb.align_xres, fb.var.yres);
fb.var.activate = FB_ACTIVATE_FORCE;
ioctl(fb.fd, FBIOPUT_VSCREENINFO, &fb.var);

printf("display_init ok\n");

return DISPLAY_SUCCESS;
}

void display_on(void)
{
ioctl(fb.fd, FBIOBLANK, FB_BLANK_UNBLANK);
}

void display_off(void)
{
ioctl(fb.fd, FBIOBLANK, FB_BLANK_POWERDOWN);
}

int main()
{
display_init();
display_off();//關顯示屏

getBatteryCapacity();
sleep(5);

display_on();//開顯示屏

return 0;
}

『叄』 安卓驅動如何用源代碼添加

沒辦法,除非官方把這個源代碼開源公布出來

『肆』 如何修改安卓刷機包的WIFI驅動

cm101s3是M8233主板的,也是這個問題

『伍』 (pc安裝)安卓x86,如何安裝無線網卡驅動linux版

最佳答案 tar.gz(bz或bz2等) 一、安裝 1、打開一個SHELL,即終端 2、用cd 命令進入源代碼壓縮包所在的目錄 3、根據壓縮包類型解壓縮文件(*代表壓縮包名稱) tar -zxvf ****.tar.gztar -jxvf ****.tar.bz(或bz2) 4、用CD命令進入解壓縮後的目錄 5、輸入編譯文件命令:./configure(有的壓縮包已經 編譯過,這一步可以省去) 6、然後是命令:make 7、再是安裝文件命令:make install 8、安裝完畢

『陸』 怎麼給安卓手機安裝無線網卡驅動

不能,同時也不需要
安卓手機不需要安裝無線驅動,開啟wifi功能
搜索到無線信號,輸入密碼,即可使用無線上網

『柒』 有關android內核的wifi驅動api

通過程序來實現wifi的自動連接。

這兩天對android的wifi功能研究了一下。下面共享出自己封裝的WifiConnect類。(這里參考了ZXing開源項目中wifi模塊)

首先,要了解android關於wifi的API.

如果喜歡看English API,這是android關於wifi的API地址:

http://developer.android.com/reference/android/net/wifi/package-summary.html(配置Wifi,還需要設定許可權,android中關於wifi的API文檔中說明了要添加什麼許可權)

如果一看英語就頭疼,這里有關於wifi的api的中文解釋

http://note.sdo.com/u/1500295617/n/prb71~jGAHfpnM0l000bgN

切入正題,這里貼出一個封裝了的類(WifiConnect),在實例化WifiConnect對象時,需要傳入一個WifiManager對象。WifiConnect類向外部提供一個Connect方法,參數是無線的SSID,password,還有加密類型。

[java] view plainprint?
  1. <spanstyle="font-size:18px;">packagecom.example.aptest;
  2. importjava.util.List;
  3. importandroid.net.wifi.WifiConfiguration;
  4. importandroid.net.wifi.WifiManager;
  5. publicclassWifiConnect{
  6. WifiManagerwifiManager;
  7. //定義幾種加密方式,一種是WEP,一種是WPA,還有沒有密碼的情況
  8. publicenumWifiCipherType
  9. {
  10. WIFICIPHER_WEP,WIFICIPHER_WPA,WIFICIPHER_NOPASS,WIFICIPHER_INVALID
  11. }
  12. //構造函數
  13. publicWifiConnect(WifiManagerwifiManager)
  14. {
  15. this.wifiManager=wifiManager;
  16. }
  17. //打開wifi功能
  18. privatebooleanopenWifi()
  19. {
  20. booleanbRet=true;
  21. if(!wifiManager.isWifiEnabled())
  22. {
  23. bRet=wifiManager.setWifiEnabled(true);
  24. }
  25. returnbRet;
  26. }
  27. //提供一個外部介面,傳入要連接的無線網
  28. publicbooleanconnect(StringSSID,StringPassword,WifiCipherTypeType)
  29. {
  30. if(!this.openWifi())
  31. {
  32. returnfalse;
  33. }
  34. //開啟wifi功能需要一段時間(我在手機上測試一般需要1-3秒左右),所以要等到wifi
  35. //狀態變成WIFI_STATE_ENABLED的時候才能執行下面的語句
  36. //WifiManager.WIFI_STATE_ENABLING2
  37. //WifiManager.WIFI_STATE_ENABLED3
  38. System.out.println("wifiManager.getWifiState()"+wifiManager.getWifiState());
  39. while(wifiManager.getWifiState()==WifiManager.WIFI_STATE_ENABLING)
  40. {
  41. System.out.println("wifiManager.getWifiState"+wifiManager.getWifiState());
  42. try{
  43. //為了避免程序一直while循環,讓它睡個100毫秒在檢測……
  44. Thread.currentThread();
  45. Thread.sleep(100);
  46. }
  47. catch(InterruptedExceptionie){
  48. }
  49. }
  50. WifiConfigurationwifiConfig=this.createWifiInfo(SSID,Password,Type);
  51. //
  52. if(wifiConfig==null)
  53. {
  54. returnfalse;
  55. }
  56. WifiConfigurationtempConfig=this.isExsits(SSID);
  57. if(tempConfig!=null)
  58. {
  59. wifiManager.removeNetwork(tempConfig.networkId);
  60. }
  61. intnetID=wifiManager.addNetwork(wifiConfig);
  62. booleanbRet=wifiManager.enableNetwork(netID,false);
  63. returnbRet;
  64. }
  65. //查看以前是否也配置過這個網路
  66. (StringSSID)
  67. {
  68. List<WifiConfiguration>existingConfigs=wifiManager.getConfiguredNetworks();
  69. for(:existingConfigs)
  70. {
  71. if(existingConfig.SSID.equals("""+SSID+"""))
  72. {
  73. returnexistingConfig;
  74. }
  75. }
  76. returnnull;
  77. }
  78. (StringSSID,StringPassword,WifiCipherTypeType)
  79. {
  80. WifiConfigurationconfig=newWifiConfiguration();
  81. config.allowedAuthAlgorithms.clear();
  82. config.allowedGroupCiphers.clear();
  83. config.allowedKeyManagement.clear();
  84. config.allowedPairwiseCiphers.clear();
  85. config.allowedProtocols.clear();
  86. config.SSID="""+SSID+""";
  87. if(Type==WifiCipherType.WIFICIPHER_NOPASS)
  88. {
  89. config.wepKeys[0]="""+""";;
  90. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  91. config.wepTxKeyIndex=0;
  92. //或者下面兩段代碼也可以
  93. //config.hiddenSSID=true;
  94. //config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  95. }
  96. elseif(Type==WifiCipherType.WIFICIPHER_WEP)
  97. {
  98. config.wepKeys[0]="""+Password+""";
  99. config.hiddenSSID=true;
  100. config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
  101. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  102. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  103. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
  104. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
  105. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  106. config.wepTxKeyIndex=0;
  107. }
  108. elseif(Type==WifiCipherType.WIFICIPHER_WPA)
  109. {
  110. config.preSharedKey="""+Password+""";
  111. config.hiddenSSID=true;
  112. config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
  113. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  114. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
  115. config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
  116. //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);//這句好像不行
  117. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  118. config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
  119. config.status=WifiConfiguration.Status.ENABLED;
  120. }
  121. else
  122. {
  123. returnnull;
  124. }
  125. returnconfig;
  126. }
  127. }
  128. </span>

『捌』 如何在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 x86 wifi驅動怎麼弄上去,我的本本是 ideapad s10 Broadcom 的無線網卡,

尊敬的用戶,您好!根據您的描述。
就是linux驅動,您搜索一下Broadcom linux驅動,然後找到對應網卡的驅動然後用re文件管理器放到安卓對應位置。
還有您可以看看4.0啟動的時候切換到命令模式,會提示無線網卡找不到什麼驅動的。你把它記下來然後到2.3那裡提取。
中國電信(中國)推出4.5寸大屏手機專題活動,4.5寸大屏手機,屏幕升級,大有看頭。4款大屏手機供您選擇,售價僅僅859元,超高配置超低價格,您值得擁有。相關活動專題如下:詳情請登錄天翼賣場(http://ah.189.cn/iphone/ext/4.5big/index.html)祝您購機愉快!也可向在線客服求助,7X24小時在線喔!

『拾』 有誰知道如何提取android固件裡面的wifi驅動

網路下載

閱讀全文

與安卓源碼編譯載入wifi驅動相關的資料

熱點內容
亞馬遜雲伺服器的選擇 瀏覽:810
單片機頻率發生器 瀏覽:732
備份與加密 瀏覽:623
用什麼app可以看論壇 瀏覽:52
javajdbcmysql連接 瀏覽:473
製作linux交叉編譯工具鏈 瀏覽:751
編程負數除以正數 瀏覽:512
app和aso有什麼區別 瀏覽:326
手機vmap是什麼文件夾 瀏覽:36
塔科夫鎖服如何選擇伺服器 瀏覽:290
消費者生產者問題java 瀏覽:61
程序員筱柒顧默結婚的時候 瀏覽:578
安卓截長屏怎麼弄 瀏覽:475
優信辦理解壓手續怎麼那麼慢 瀏覽:605
私有雲伺服器一體機安全嗎 瀏覽:430
python的tk界面禁用滑鼠 瀏覽:186
怎麼看伺服器mac地址 瀏覽:291
安卓如何將圖鏡像翻轉 瀏覽:325
操作系統設計與實現pdf 瀏覽:547
長虹空調遙控什麼app 瀏覽:739