Exynos4412 Android4.4 平台 WiFi 功能移植 第四篇

来源:互联网 发布:php后端开发教程 编辑:程序博客网 时间:2024/05/29 16:33

HAL层移植

 HAL层移植相对简单,MT6620 采用的是Android的WiFi架构,没有经过修改,按照MTK的指导文档移植即可,这里需要注意的是wifi.c文件和init.connectivity.rc文件.

1.5.1 wifi.c文件

 wifi.c文件的路径

iTop4412_KK4.4/hardware/libhardware_legacy/wifi.c

该文件会与wpa_supplicnat服务进行通信,是Android进行WIFi控制的HAL层的实现,根据logcat 输出信息判断WiFi 工作流程哪里出了问题,笔者修改了wifi.c文件的宏定义:

static charprimary_iface[PROPERTY_VALUE_MAX];

// TODO: use new ANDROID_SOCKETmechanism, once support for multiple

// sockets is in

//dg cancel formt6620

//#defineWIFI_DRIVER_MODULE_NAME1         "rtl8188eu"

//#defineWIFI_DRIVER_MODULE_PATH1       "/system/lib/modules/rtl8188eu.ko"

//#defineWIFI_DRIVER_MODULE_NAME2         "rtl8192cu"

//#defineWIFI_DRIVER_MODULE_PATH2       "/system/lib/modules/rtl8192cu.ko"

//#defineWIFI_DRIVER_MODULE_NAME3         "rt5370sta"

//#defineWIFI_DRIVER_MODULE_PATH3       "/system/lib/modules/rt5370sta.ko"

 

    由于我们在 init.connectivity.rc 里面加载了  WiFi驱动库及运行 wmt_launcher服务,所以不再需要wif.c加载驱动了,直接注释掉相关宏即可.

 

wifi.c的 int wifi_load_driver() 函数会设置wifi的相关属性:

 

staticconst char DRIVER_PROP_NAME[]    ="wlan.driver.status";

property_set(DRIVER_PROP_NAME,"ok");

 

设置属性后会触发WiFi上电操作,因为我们在init.connectivity.rc设置了属性触发:

 

#monitor property and power on/off wlan

onproperty:wlan.driver.status=ok

         write /dev/wmtWifi "1"

onproperty:wlan.driver.status=unloaded

         write /dev/wmtWifi "0"    

wifi.c 会启动wpa_suplicant服务:

intwifi_start_supplicant(int p2p_supported)

该函数会查找wpa_supplicant服务是否已经运行,如没有运行会启动该服务.

1.5.2  init.connectivity.rc文件

init.connectivity.rc 原始文件有MTK提供:

iTop4412_KK4.4/hardware/mediatek/config/combo_mt66xx/init.combo_mt66xx.rc

 

原始文件名称为init.combo_mt66xx.rc,拷贝到ramdisk的root目录下面名称变更为init.connectivity.rc文件 。

 

我们在该文件增加了加载驱动模块库操作,运行wmt_lanucher服务操作,另外需要注意文件原有的创建wifi相关目录操作,及修改权限,变更拥有者,这些command非常的重要,比如:

   mkdir /data/misc/wifi 0770 wifi wifi

    mkdir /data/misc/wifi/sockets0770 wifi wifi

   mkdir /data/misc/wpa_supplicant 0770 wifi wifi

   mkdir /data/misc/p2p_supplicant 0770 wifi wifi

   chown wifi wifi /data/misc/wifi/wpa_supplicant.conf

   chown wifi wifi /data/misc/wifi/p2p_supplicant.conf

   chmod 0660 /data/misc/wifi/wpa_supplicant.conf

   chmod 0660 /data/misc/wifi/p2p_supplicant.conf

  wpa_supplicant会在/data/misc/wifi/sockets目录下面创建wlan0文件节点用于与外部程序wpa_cli或者Android层服务进行通信.

  这样在Android4.4的Setting里面打开WiFi,就可以扫描到热点,连接互联网了,启动WiFi之前注意关闭有线连接,否则会存在网络访问冲突.

 

   注意: Android系统第一次运行是没有开启WiFi功能的,如果您的开发板上面有WiFi模块,且手动开启了Android  Setting界面的 WiFi功能 ,那么请不要把WiFi模块从底板上面拆除,否则Android启动过程中因为找不到WiFi模块 ,会频繁 打印出调试信息,导致Android启动失败 ,如果确实产生了这个问题,请重新烧写Android系统此问题即可解决.

 

总结:

    以上作为 iTOP4412开发平台移植 WiFi功能的过程总结,即将发布的Android4.4的Kernel及Android层代码均包含Porting后的代码,也就是Wifi正常工作的代码,方便大家学习和产品研发.


   如果您在实际的项目中需要WiFi功能,请参考官方的原理图设计硬件,尽力使用相同的WiFi资源,比如WiFi使能配置引脚,WiFi中断配置引脚,WiFi 复位引脚,串口配置引脚等等,这样您只需要关注硬件部分,驱动使用我们移植好的即可,否则需要您修改WiFi引脚配置,进行必要的调试工作,增加自己的工作量。


MT6620  Android4.4   Porting Guid and drivers:

http://download.csdn.net/detail/yimiyangguang1314/8656149



0 0
原创粉丝点击