Linux驱动调试中的Debugfs的使用简介 CONFIG_DEBUG_FS 的功能与配置

在调试linux驱动的时候,可以用debugfs来调试,debugfs类似字符设备驱动一样,甚至更简单,不需要主设备号次设备号等等,只需要实现一个file_operations,然后通过debugfs_create_file就可以在debugfs中建立一个文件结点,就像字符设备驱动那样,只需要对这个文件结点进行open就可以进行readwriteioctl,等等操作,这些操作对应到我们在驱动里为debugfs准备的file_operations


让内核支持DEBUGFS,使能宏CONFIG_DEBUG_FS,在内核配置中选中,一般是在Kernel hacking中:



在实际的使用中,举个例子来说明,在调试GPIO驱动的时候,我们可以通过debugfs来调试:

首先定义一个file_operations

staticconst struct file_operations gpiolib_operations = {

.open = gpiolib_open,

.read = gpiolib_read,

.write = gpiolib_write,

.llseek = seq_lseek,

.release = single_release,

};


然后,建立一个debugfs文件结点:

(void)debugfs_create_file("gpio", S_IFREG | S_IRUGO,

NULL, NULL, &gpiolib_operations);

在实际的驱动中,建立debugfs文件结点一般在驱动初始化的时候。


根据我们的调试需要,实现读写操作,一般用得比较多的是readwrite操作,所以在gpiolib_readgpiolib_write里加入我们的调试代码。调用GPIO驱动的时候,我的想法是,给GPIO结点发一个读指令,那么就得传入的gpio号的状态,给GPIO结点发一个写指令,那么就根据传入的参数设置gpio的状态。于是,我只需要实现write函数:

[html]  view plain  copy
  1. staticssize_t gpiolib_write(struct file *file, const char __user *buf,size_t size, loff_t *ppos)  
  2. {  
  3. charinfo[255];  
  4. int port=0,value=0;  
  5. memset(info,0, 255);  
  6. copy_from_user(info,buf, size);  
  7. printk("gpio:%s\n",info);  
  8. if((info[0]>= '0') && (info[0] <= '9')){  
  9.     port= (info[0] - 48)*10;  
  10.     if((info[1]>= '0') && (info[1] <= '9')){  
  11.         port+= (info[1] - 48);  
  12.             if(info[2]== ' '){  
  13.                 if(info[3] == 'w'){  
  14.                     value = (info[4] =='0')?0:1;  
  15.                 }   
  16.             }   
  17.     }  
  18. }  
  19.   
  20. if(info[3]== 'r'){  
  21.     gpio_direction_input(port);  
  22.     printk("gpio%dstatus = %d\n", port, __gpio_get_value(port));  
  23. }else if(info[3] == 'w'){  
  24.   
  25.     printk("write%d to gpio%d\n", value, port);  
  26.     gpio_direction_output(port,value);  
  27.     __gpio_set_value(port,value);  
  28.        }  
  29. return size;  
  30. }  



这段代码的意思,根据传入的参数info作相应的操作,info的格式是:

info[0]info[1]分别代表gpio号的十位和个位;

info[2]必须为空格;

info[3]为读写性质,‘w'为写,'r'为读;

info[4]如果为写,那么它表示写的状态。


这样就可以在驱动加载之后,shell命令echo来进行调试了

例如gpio号为57的端口控制蜂鸣器,gpio号为37的端口连接按键,那么:

蜂鸣器发声:echo 57 w1 > gpio

蜂鸣器停止:echo 57 w0 > gpio

读取按键状态:echo 37 r > gpio

那么这个gpio文件结点在哪呢?

内核启动后会把debugfs文件系统挂载到/sys/kernel/debug目录下,我们的gpio文件结点就在这里。

如果没有找到,那么可以手动挂载mount-t debugfs none /mnt,这样就挂载到/mnt目录下了。


PS:

更为强大的调试选项:

CONFIG_GPIO_SYSFS   定义此宏后 会在/sys/class/gpio/下面到处gpio的设备文件 可以通过此设备文件对gpio进行控制与读取   

========================================================================================================================

Linux内核里的DebugFS

2011-01-17 23:52 by wwang, 4597 阅读, 5 评论, 收藏,编辑

DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是Linux内核运行起来后才建立起来。

通常情况下,最常用的内核调试手段是printk。但printk并不是所有情况都好用,比如打印的数据可能过多,我们真正关心的数据在大量的输出里不是那么一目了然;或者我们在调试时可能需要修改某些内核变量,这种情况下printk就无能为力,而如果为了修改某个值重新编译内核或者驱动又过于低效,此时就需要一个临时的文件系统可以把我们需要关心的数据映射到用户空间。在过去,procfs可以实现这个目的,到了2.6时代,新引入的sysfs也同样可以实现,但不论是procfs或是sysfs,用它们来实现某些debug的需求,似乎偏离了它们创建的本意。比如procfs,其目的是反映进程的状态信息;而sysfs主要用于Linux设备模型。不论是procfs或是sysfs的接口应该保持相对稳定,因为用户态程序很可能会依赖它们。当然,如果我们只是临时借用procfs或者sysfs来作debug之用,在代码发布之前将相关调试代码删除也无不可。但如果相关的调试借口要在相当长的一段时间内存在于内核之中,就不太适合放在procfs和sysfs里了。故此,debugfs应运而生。

默认情况下,debugfs会被挂载在目录/sys/kernel/debug之下,如果您的发行版里没有自动挂载,可以用如下命令手动完成:

?
# mount -t debugfs none /your/debugfs/dir

Linux内核为debugfs提供了非常简洁的API,本文接下来将以一个实作为例来介绍,sample code可以从这里下载。

这个实作会在debugfs中建立如下的目录结构:

其中,a对应模块中的一个u8类型的变量,b和subdir下面的c都是对应模块里的一个字符数组,只是它们的实现方式不同。

在module_init里,我们首先要建立根目录mydebug:

[html]  view plain  copy
  1. my_debugfs_root = debugfs_create_dir("mydebug", NULL);   

第一个参数是目录的名称,第二个参数用来指定这个目录的上级目录,如果是NULL,则表示是放在debugfs的根目录里。

子目录也是用debugfs_create_dir来实现:

[html]  view plain  copy
  1. sub_dir = debugfs_create_dir("subdir", my_debugfs_root);   

建立文件a的代码非常简单:
[html]  view plain  copy
  1. debugfs_create_u8("a", 0644, my_debugfs_root, &a);   

这表示文件名为“a”,文件属性是0644,父目录是上面建立的“mydebug”,对应的变量是模块中的a。

Linux内核还提供了其他一些创建debugfs文件的API,请参考本文的附录。

b是一个32-bytes的字符数组,在debugfs里,数组可以用blob wrapper来实现。

[html]  view plain  copy
  1. char hello[32] = "Hello world!\n";  
  2. structdebugfs_blob_wrapper b;   
  3.     
  4. b.data = (void*)hello;   
  5. b.size = strlen(hello) + 1;  
  6. debugfs_create_blob("b", 0644, my_debugfs_root, &b);   

这里需要注意的是,blob wrapper定义的数据只能是只读的。在本例中,虽然我们把文件b的权限设定为0644,但实际这个文件还是只读的,如果试图改写这个文件,系统将提示出错。

如果需要对内核数组进行写的动作,blob wrapper就无法满足要求,我们只能通过自己定义文件操作来实现。在这个实作里,可以参考文件c的实现。c和b在模块里对应着同一块字符数组,不同的是,b是只读的,而c通过自定义的文件操作同时实现了读和写。

[html]  view plain  copy
  1. staticint c_open(structinode *inode, structfile *filp)   
  2. {   
  3.     filp->private_data = inode->i_private;  
  4.     return0;   
  5. }   
  6.     
  7. staticssize_t c_read(structfile *filp, char__user *buffer,   
  8.         size_tcount, loff_t *ppos)   
  9. {   
  10.     if(*ppos >= 32)   
  11.         return0;   
  12.     if(*ppos + count > 32)   
  13.         count = 32 - *ppos;  
  14.     
  15.     if(copy_to_user(buffer, hello + *ppos, count))   
  16.         return-EFAULT;   
  17.     
  18.     *ppos += count;  
  19.     
  20.     returncount;   
  21. }   
  22.     
  23. staticssize_t c_write(structfile *filp, constchar __user *buffer,  
  24.         size_tcount, loff_t *ppos)   
  25. {   
  26.     if(*ppos >= 32)   
  27.         return0;   
  28.     if(*ppos + count > 32)   
  29.         count = 32 - *ppos;  
  30.     
  31.     if(copy_from_user(hello + *ppos, buffer, count))   
  32.         return-EFAULT;   
  33.     
  34.     *ppos += count;  
  35.     
  36.     returncount;   
  37. }   
  38.     
  39. structfile_operations c_fops = {   
  40.     .owner = THIS_MODULE,  
  41.     .open = c_open,  
  42.     .read = c_read,  
  43.     .write = c_write,  
  44. };     
  45.     
  46. debugfs_create_file("c", 0644, sub_dir, NULL, &c_fops);   

注:代码里,c_open其实并没有任何用处,因为c_read和c_write直接引用了全局变量hello。这里,我们也可以换一种写法,在read/write函数里用filp->private_data来引用字符数组hello。

到这里,三个文件和子目录已经创建完毕。在module_exit中,我们要记得释放创建的数据。

[html]  view plain  copy
  1. debugfs_remove_recursive(my_debugfs_root);   

debugfs_remove_recursive可以帮我们逐步移除每个分配的dentry,如果您想一个一个手动的移除,也可以直接调用debugfs_remove。

 

附录:

创建和撤销目录及文件

[html]  view plain  copy
  1. <span style="font-size:12px;">structdentry *debugfs_create_dir(constchar *name, structdentry *parent);   
  2. structdentry *debugfs_create_file(constchar *name, mode_t mode,   
  3.         structdentry *parent, void*data,    
  4.         conststruct file_operations *fops);  
  5. void debugfs_remove(struct dentry *dentry);   
  6. void debugfs_remove_recursive(struct dentry *dentry);   
  7. </span>  

创建单值文件
[html]  view plain  copy
  1. structdentry *debugfs_create_u8(constchar *name, mode_t mode, structdentry *parent, u8 *value);   
  2. structdentry *debugfs_create_u16(constchar *name, mode_t mode,structdentry *parent, u16 *value);   
  3. structdentry *debugfs_create_u32(constchar *name, mode_t mode,structdentry *parent, u32 *value);   
  4. structdentry *debugfs_create_u64(constchar *name, mode_t mode, structdentry *parent, u64 *value);   
  5.     
  6. structdentry *debugfs_create_x8(constchar *name, mode_t mode,        structdentry *parent, u8 *value);   
  7. structdentry *debugfs_create_x16(constchar *name, mode_t mode,        structdentry *parent, u16 *value);   
  8. structdentry *debugfs_create_x32(constchar *name, mode_t mode,         structdentry *parent, u32 *value);   
  9.     
  10. structdentry *debugfs_create_size_t(constchar *name, mode_t mode,        structdentry *parent, size_t*value);   
  11. structdentry *debugfs_create_bool(constchar *name, mode_t mode,         structdentry *parent, u32 *value);   
其中,后缀为x8、x16、x32的这三个函数是指debugfs中的数据用十六进制表示。

创建BLOB文件

[html]  view plain  copy
  1. structdebugfs_blob_wrapper {   
  2.     void*data;   
  3.     unsignedlong size;   
  4. };   
  5.     
  6. structdentry *debugfs_create_blob(constchar *name, mode_t mode,   
  7.          structdentry *parent, structdebugfs_blob_wrapper *blob);   

其它
[html]  view plain  copy
  1. structdentry *debugfs_rename(structdentry *old_dir, structdentry *old_dentry,    
  2.         structdentry *new_dir, constchar *new_name);   
  3.     
  4. structdentry *debugfs_create_symlink(constchar *name,    
  5.         structdentry *parent, constchar *target);   

 
====================================================================================================================================
 

以前都習慣用 printk 和 /proc 做輸入輸出的動作, 不過 debugfs 看起來是 User space 和 kernel space 交流更好的選擇.

先確認 Enable Kernel debugfs Function

Kernel hacking —>
-*- Debug Filesystem

先來個簡單的範例,
在你要 debug 的 modules 內, 加入 debugfs 的 include file

#include <linux/debugfs.h>

要將想要輸出的變數, 假設叫 pcie0_linked 輸出到 debugfs 上, 在 initial code 的地方加上
debugfs_create_u32("pcie0_linked", 0644, NULL, &pcie0_linked);

接下來就可以重開機了 load 新 kernel 了,

mount debugfs

$ mount -t debugfs debug /debugfs

或是寫在 /etc/fstab

debugfs /debugfs debugfs debug

這時就可以 ls /debugfs/ , 就會出現 pcie0_linked 的檔案.

[html]  view plain  copy
  1. $ cat /debugfs/pcie0_linked  
  2. 1  
  3. $ echo 0 > /debugfs/pcie0_linked  
  4. $ cat /debugfs/pcie0_linked  
  5. 0  

像是 procfs 一樣, debugfs 也有 create directory 的 function, 以便讓變數可以在目錄內
我們小小改一下上面的程式, 加上 create_dir 的功能

[html]  view plain  copy
  1. struct dentry *pcie_dir;  
  2. pcie_dir = debugfs_create_dir("pcie",NULL);  
  3. if( pcie_dir != NULL ) {  
  4. debugfs_create_u32("pcie0_linked", 0644, pcie_dir, &pcie0_linked);  
  5. }  

改了以上的輸出, 接下來就可以在 /debugfs 下, 看到多了一個 pcie 的目錄, 而 pcie0_linked 就在裡面.

如果想用 hex(16 進位), 可以改用 debugfs_create_x32.

proc file system 最棒的就是可以讀寫檔案了, 可以做更多的控制.
debugfs 也有一個 function 可以讓使用者做檔案讀寫, 這邊寫一個簡單的 sample.

多 include 一個 header

[html]  view plain  copy
  1. #include <linux/seq_file.h>  
  2.   
  3. static int pcie_reg_open(struct seq_file *s, void *data)  
  4. {  
  5. seq_printf(s, "pcie0_link status : %s\n", pcie0_linked == 1 ? "Enable": "D  
  6. return 0;  
  7. }  
  8.   
  9. static int pcie_single_open(struct inode *inode, struct file *file)  
  10. {  
  11. return single_open(file, pcie_reg_open, inode->i_private);  
  12. }  
  13. static ssize_t pcie_debug_write(struct file *file,  
  14. const char __user *userbuf,  
  15. size_t count, loff_t *ppos)  
  16. {  
  17. char buf[20];  
  18.   
  19. if (copy_from_user(buf, userbuf, min(count, sizeof(buf))))  
  20. return -EFAULT;  
  21.   
  22. printk("%s: %s \n",__FUNCTION__, buf);  
  23.   
  24. return count;  
  25. }  
  26.   
  27. static const struct file_operations pcie_ios_fops = {  
  28. .open = pcie_single_open,  
  29. .read = seq_read,  
  30. .write = pcie_debug_write,  
  31. .llseek = seq_lseek,  
  32. .release = single_release,  
  33.   
  34. };  
  35. debugfs_create_file("file", 0644, pcie_dir, NULL, &pcie_ios_fops);  


這樣

[html]  view plain  copy
  1. $ cat /debugs/pcie/file 會顯示  
  2. pcie0_link status : Enable  
  3. 而  
  4. $ echo "richliu" > /debugfs/pcie/file 會顯示  
  5. pcie_debug_write: richliu  
  6.   
  7. $  


 

最後要介紹的是比較特別的一種格式 blob, 這是可以傳 binary 到 user space 的格式, blob 的 struct 是

[html]  view plain  copy
  1. struct debugfs_blob_wrapper {  
  2. void *data;  
  3. unsigned long size;  
  4. };  


在剛剛的 Code 加上

static struct debugfs_blob_wrapper blob; –> 最好放 global.
char data[100];
sprintf(data, "Data Pointer is : %08X \n", data);
blob.data = data;
blob.size = 100;
debugfs_create_blob("blob", S_IRUSR, pcie_dir, &blob);

在 Linux 下直接用 hexdump 去讀資料出來

$ hexdump /debugfs/pcie/blob -c
0000000 D a t a P o i n t e r i s
0000010 : C 4 0 5 C 1 6 0 \n \0 \0 \0 \0
0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
0000060

請記得 Blob 這個檔案是 Read Only, 只能傳出, 不能傳入…

參考:
Debugfs
Debugfs 中譯版(好像是從匪區抄過來的?)

  • 5
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
调通sina33下的AP6212A0版本的BT 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 wb4916 AT qq.com 完成时间:2017/6/26 11:01 版本:V1.0 本文参照: 《A33 wifi移植说明书.pdf》 还有就是全志R16的parrotv1.1的官方SDK(Android4.4.2) 1、打开AP6212的BT,关闭rtl8723bs的BT: [ 3.141273] Bluetooth: HCI UART driver ver 2.2 [ 3.146210] Bluetooth: HCI H4 protocol initialized [ 3.151563] Bluetooth: HCI BCSP protocol initialized [ 3.157154] usbcore: registered new interface driver btusb [ 3.163282] Bluetooth: Generic Bluetooth SDIO driver ver 0.1 [ 3.169599] Bluetooth: BlueSleep Mode Driver Ver 1.1 [ 3.175402] Bluetooth: get rtl8723bs rtl8723bs_bt_host_wake gpio failed [ 3.953017] Bluetooth: RFCOMM TTY layer initialized [ 3.958456] Bluetooth: RFCOMM socket layer initialized [ 3.964183] Bluetooth: RFCOMM ver 1.11 [ 3.968340] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 3.968638] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 3.968734] [mmc]: mclk 0xf1c20090 0xc100000b [ 3.989421] Bluetooth: BNEP filters: protocol multicast [ 3.995242] Bluetooth: HIDP (Human Interface Emulation) ver 1.2 [ 4.001921] L2TP core driver, V2.0 [ 4.005706] PPPoL2TP kernel driver, V2.0 [ 4.010070] L2TP IP encapsulation support (L2TPv3) [ 4.015468] L2TP netlink interface [ 4.019264] L2TP ethernet pseudowire support (L2TPv3) [ 4.023860] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing MMC-HS(SDR20) dt B [ 4.023929] [mmc]: mclk 0xf1c20090 0xc100000b [ 4.040272] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5 [ 4.048780] ThumbEE CPU extension supported. [ 4.053550] Registering SWP/SWPB emulation handler [ 4.059269] [rfkill]: rfkill set power 1 [ 4.063652] gpio ap6xxx_bt_regon set val 0, act val 0 rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r$ ll rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ ./build.sh config Welcome to mkscript setup progress All available chips: 0. sun8iw5p1 Choice: 0 All available platforms: 0. android 1. dragonboard 2. linux Choice: 0 All available kernel: 0. linux-3.4 Choice: 0 All available boards: 0. evb 1. maple 2. redwood 3. y2 4. y3 Choice: 4 rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ cd linux-3.4/ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4$ make ARCH=arm menuconfig [*] Networking support ---> <*> Bluetooth subsystem support ---> Bluetooth device drivers ---> < > Broadcom Bluetooth Low Power Manager Support <*> Realtek Bluesleep driver support 修改为: <*> Broadcom Bluetooth Low Power Manager Support < > An inverter between bt hostwake pin and cpu (NEW) < > Realtek Bluesleep driver support 2、(这个不修改:) R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\overlay\frameworks\base\core\res\res\values\config.xml <!-- List of regexpressions describing the interface (if any) that represent tetherable Wifi interfaces. If the device doesn't want to support tethering over Wifi this should be empty. An example would be "softap.*" --> <string-array translatable="false" name="config_tether_wifi_regexs"> <item>"wlan0"</item> </string-array> <!-- List of regexpressions describing the interface (if any) that represent tetherable bluetooth interfaces. If the device doesn't want to support tethering over bluetooth this should be empty. --> <!-- default: disable Bluetooth PAN feature --> <string-array translatable="false" name="config_tether_bluetooth_regexs"> <item>"bt-pan"</item> </string-array> 3、 R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\astar_y3.mk # ap6181/6210/6330 sdio wifi fw and nvram #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6181/device-bcm.mk) #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6210/device-bcm.mk) $(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6212/device-bcm.mk) #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6330/device-bcm.mk) #rtl8723bs bt fw and config #$(call inherit-product, hardware/realtek/bluetooth/rtl8723bs/firmware/rtlbtfw_cfg.mk) # camera config for camera detector #PRODUCT_COPY_FILES += \ # device/softwinner/astar-y3/hawkview/sensor_list_cfg.ini:system/etc/hawkview/sensor_list_cfg.ini #add gms features #PRODUCT_COPY_FILES += \ # frameworks/native/data/etc/android.hardware.faketouch.xml:system/etc/permissions/android.hardware.faketouch.xml \ # frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \ # frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml # 3G Data Card Packages #PRODUCT_PACKAGES += \ # u3gmonitor \ # chat \ # rild \ # pppd # 3G Data Card Configuration Flie #PRODUCT_COPY_FILES += \ # device/softwinner/polaris-common/rild/ip-down:system/etc/ppp/ip-down \ # device/softwinner/polaris-common/rild/ip-up:system/etc/ppp/ip-up \ # device/softwinner/polaris-common/rild/3g_dongle.cfg:system/etc/3g_dongle.cfg \ # device/softwinner/polaris-common/rild/usb_modeswitch:system/bin/usb_modeswitch \ # device/softwinner/polaris-common/rild/call-pppd:system/xbin/call-pppd \ # device/softwinner/polaris-common/rild/usb_modeswitch.sh:system/xbin/usb_modeswitch.sh \ # device/softwinner/polaris-common/rild/apns-conf_sdk.xml:system/etc/apns-conf.xml \ # device/softwinner/polaris-common/rild/libsoftwinner-ril.so:system/lib/libsoftwinner-ril.so #PRODUCT_COPY_FILES += \ # device/softwinner/polaris-common/rild/init.3gdongle.rc:root/init.sunxi.3gdongle.rc # 3G Data Card usb modeswitch File #PRODUCT_COPY_FILES += \ # $(call find-copy-subdir-files,*,device/softwinner/polaris-common/rild/usb_modeswitch.d,system/etc/usb_modeswitch.d) PRODUCT_PROPERTY_OVERRIDES += \ ro.sw.embeded.telephony = false PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai \ persist.sys.language=zh \ persist.sys.country=CN PRODUCT_PACKAGES += Bluetooth #PRODUCT_PROPERTY_OVERRIDES += \ # ro.product.8723b_bt.used=true #GPS Feature #PRODUCT_PACKAGES += gps.polaris #BOARD_USES_GPS_TYPE := simulator #PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.location.xml:system/etc/permissions/android.hardware.location.xml # evb logger PRODUCT_COPY_FILES += \ device/softwinner/astar-y3/tools/logger.sh:system/bin/logger.sh PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.usb.config=mass_storage,adb \ ro.adb.secure=0 ro.udisk.lable=Polaris \ ro.font.scale=1.0 \ ro.hwa.force=false \ rw.logger=0 \ ro.sys.bootfast=true \ debug.hwc.showfps=0 \ debug.hwui.render_dirty_regions=false #ro.sys.storage_type = emulated \ #for gms #PRODUCT_PROPERTY_OVERRIDES += \ # ro.sys.mutedrm=true \ # ro.adb.secure=1 PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=213 \ ro.product.firmware=v2.0 $(call inherit-product-if-exists, device/softwinner/astar-y3/modules/modules.mk) DEVICE_PACKAGE_OVERLAYS := device/softwinner/astar-y3/overlay PRODUCT_CHARACTERISTICS := tablet # Overrides PRODUCT_AAPT_CONFIG := xlarge hdpi xhdpi large PRODUCT_AAPT_PREF_CONFIG := xhdpi PRODUCT_BRAND := Allwinner PRODUCT_NAME := astar_y3 PRODUCT_DEVICE := astar-y3 PRODUCT_MODEL := QUAD-CORE A33 y3 PRODUCT_MANUFACTURER := softwinner #include device/softwinner/polaris-common/prebuild/google/products/gms_base.mk 4、 R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\BoardConfig.mk # wifi and bt configuration # 1. Wifi Configuration # 1.1 realtek wifi support # 1.1 realtek wifi configuration #BOARD_WIFI_VENDOR := realtek ifeq ($(BOARD_WIFI_VENDOR), realtek) WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl SW_BOARD_USR_WIFI := rtl8188eu BOARD_WLAN_DEVICE := rtl8188eu #SW_BOARD_USR_WIFI := rtl8723au #BOARD_WLAN_DEVICE := rtl8723au #SW_BOARD_USR_WIFI := rtl8723bs #BOARD_WLAN_DEVICE := rtl8723bs endif # 1.2 broadcom wifi support BOARD_WIFI_VENDOR := broadcom ifeq ($(BOARD_WIFI_VENDOR), broadcom) BOARD_WPA_SUPPLICANT_DRIVER := NL80211 WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_WLAN_DEVICE := bcmdhd WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path" #SW_BOARD_USR_WIFI := AP6181 #SW_BOARD_USR_WIFI := AP6210 #WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40181a2.bin" #WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40181a2_p2p.bin" #WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40181a2_apsta.bin" # 2017/6/21 15:11 wenyuanbo configure ap6212 use ap6210 SW_BOARD_USR_WIFI := AP6212 WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm43438a0.bin" WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm43438a0_p2p.bin" WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm43438a0_apsta.bin" #SW_BOARD_USR_WIFI := AP6330 #WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40183b2_ag.bin" #WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40183b2_ag_p2p.bin" #WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40183b2_ag_apsta.bin" endif #1.3 eag wifi config #BOARD_WIFI_VENDOR := eagle ifeq ($(BOARD_WIFI_VENDOR), eagle) WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_eagle BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_eagle SW_BOARD_USR_WIFI := esp8089 BOARD_WLAN_DEVICE := esp8089 endif # 2. Bluetooth Configuration # make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor BOARD_HAVE_BLUETOOTH := true BOARD_HAVE_BLUETOOTH_BCM := true #SW_BOARD_HAVE_BLUETOOTH_NAME := ap6210 SW_BOARD_HAVE_BLUETOOTH_NAME := ap6212 #SW_BOARD_HAVE_BLUETOOTH_NAME := ap6330 #BOARD_HAVE_BLUETOOTH_RTK := true #BLUETOOTH_HCI_USE_RTK_H5 := true #SW_BOARD_HAVE_BLUETOOTH_NAME := rtl8723bs 5、 R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\init.sun8i.rc on early-fs mount_all /fstab.sun8i setprop ro.crypto.fuse_sdcard true insmod /system/vendor/modules/disp.ko insmod /system/vendor/modules/lcd.ko insmod /system/vendor/modules/mali.ko insmod /system/vendor/modules/leds-sunxi.ko insmod /system/vendor/modules/bcmdhd.ko insmod /system/vendor/modules/bcm_btlpm.ko #2G or 3G init.rc # import init.sunxi.3gdongle.rc ## 1. realtek & eagle wifi service ## 1.1 realtek & eagle wifi sta service #service wpa_supplicant /system/bin/wpa_supplicant \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -O/data/misc/wifi/sockets \ # -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # # we will start as root and wpa_supplicant will switch to user wifi # # after setting up the capabilities required for WEXT # # user wifi # # group wifi inet keystore # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # ## 1.2 realtek & eagle wifi sta p2p concurrent service #service p2p_supplicant /system/bin/wpa_supplicant \ # -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ # -e/data/misc/wifi/entropy.bin -N \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -O/data/misc/wifi/sockets \ # -g@android:wpa_wlan0 # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # 2. broadcom wifi service # 2.1 broadcom wifi station and softap service wpa_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -O/data/misc/wifi/sockets \ -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi # group wifi inet keystore class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot # 2.2 broadcom wifi sta p2p concurrent service service p2p_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -O/data/misc/wifi/sockets -N \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ -I/system/etc/wifi/p2p_supplicant_overlay.conf \ -puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \ -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi # group wifi inet keystore class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot 6、(不需要修改) R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\ueventd.sun8i.rc 7、 R:\wyb\ap6212a0_a33_sc3817r\android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml <integer name="def_screen_off_timeout">1800000</integer> <bool name="def_lockscreen_disabled">true</bool> 8、 R:\wyb\ap6212a0_a33_sc3817r\android\frameworks\base\services\java\com\android\server\BatteryService.java // private static final boolean DEBUG = false; private static final boolean DEBUG = true; private void sendIntentLocked() { // Pack up the values and broadcast them to everyone final Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_REPLACE_PENDING); int icon = getIconLocked(mBatteryProps.batteryLevel); intent.putExtra(BatteryManager.EXTRA_STATUS, mBatteryProps.batteryStatus); intent.putExtra(BatteryManager.EXTRA_HEALTH, mBatteryProps.batteryHealth); intent.putExtra(BatteryManager.EXTRA_PRESENT, mBatteryProps.batteryPresent); //intent.putExtra(BatteryManager.EXTRA_LEVEL, mBatteryProps.batteryLevel); intent.putExtra(BatteryManager.EXTRA_LEVEL, 100); intent.putExtra(BatteryManager.EXTRA_SCALE, BATTERY_SCALE); intent.putExtra(BatteryManager.EXTRA_ICON_SMALL, icon); intent.putExtra(BatteryManager.EXTRA_PLUGGED, mPlugType); //intent.putExtra(BatteryManager.EXTRA_VOLTAGE, mBatteryProps.batteryVoltage); intent.putExtra(BatteryManager.EXTRA_VOLTAGE, 4200); intent.putExtra(BatteryManager.EXTRA_TEMPERATURE, mBatteryProps.batteryTemperature); intent.putExtra(BatteryManager.EXTRA_TECHNOLOGY, mBatteryProps.batteryTechnology); intent.putExtra(BatteryManager.EXTRA_INVALID_CHARGER, mInvalidCharger); if (DEBUG) { Slog.d(TAG, "2016/12/05 10:41 wenyuanbo **** Sending ACTION_BATTERY_CHANGED. level:" + mBatteryProps.batteryLevel + ", scale:" + BATTERY_SCALE + ", status:" + mBatteryProps.batteryStatus + ", health:" + mBatteryProps.batteryHealth + ", present:" + mBatteryProps.batteryPresent + ", voltage: " + mBatteryProps.batteryVoltage + ", temperature: " + mBatteryProps.batteryTemperature + ", technology: " + mBatteryProps.batteryTechnology + ", AC powered:" + mBatteryProps.chargerAcOnline + ", USB powered:" + mBatteryProps.chargerUsbOnline + ", Wireless powered:" + mBatteryProps.chargerWirelessOnline + ", icon:" + icon + ", invalid charger:" + mInvalidCharger); } mHandler.post(new Runnable() { @Override public void run() { ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL); } }); } 9、(直接拷贝同目录下的ap6210:) R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\conf\softwinner\ap6212\Android.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := bt_vendor.conf LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/bluetooth LOCAL_MODULE_TAGS := eng LOCAL_SRC_FILES := $(LOCAL_MODULE) include $(BUILD_PREBUILT) R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\conf\softwinner\ap6212\bt_vendor.conf # UART device port where Bluetooth controller is attached UartPort = /dev/ttyS1 # Firmware patch file location FwPatchFilePath = /system/vendor/modules/ # Firmware Name FwPatchFileName = bcm43438a0.hcd 10、新增:vnd_astar-y3-ap6212.txt,直接拷贝:vnd_astar-y2-ap6210.txt R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\include\vnd_astar-y3-ap6212.txt R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\include\vnd_astar-y2-ap6210.txt BLUETOOTH_UART_DEVICE_PORT = "/dev/ttyS1" FW_PATCHFILE_LOCATION = "/system/vendor/modules/" LPM_IDLE_TIMEOUT_MULTIPLE = 5 UART_TARGET_BAUD_RATE = 1500000 BT_WAKE_VIA_PROC = TRUE #LPM_SLEEP_MODE = FALSE BTVND_DBG = TRUE BTHW_DBG = TRUE VNDUSERIAL_DBG = TRUE UPIO_DBG = TRUE 11、 R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\src\userial_vendor.c //#ifdef USE_AP6210_BT_MODULE #if defined(USE_AP6210_BT_MODULE) || defined(USE_AP6212_BT_MODULE) /* PATCH for AP6210. Will detect CTS(module side) to select transport mode*/ ALOGE("userial vendor open: USE AP6210 BT MODULE."); usleep(100000); close(vnd_userial.fd); if ((vnd_userial.fd = open(vnd_userial.port_name, O_RDWR)) == -1) { ALOGE("userial vendor open: unable to open %s", vnd_userial.port_name); return -1; } #endif //USE_AP6210_BT_MODULE 12、 R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\Android.mk ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210) LOCAL_CFLAGS += -DUSE_AP6210_BT_MODULE endif ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212) LOCAL_CFLAGS += -DUSE_AP6212_BT_MODULE endif ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6330) include $(LOCAL_PATH)/conf/softwinner/ap6330/Android.mk endif ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210) include $(LOCAL_PATH)/conf/softwinner/ap6210/Android.mk endif ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212) include $(LOCAL_PATH)/conf/softwinner/ap6212/Android.mk endif 13、 R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\vnd_buildcfg.mk ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210) SRC := $(call my-dir)/include/$(addprefix vnd_, $(addsuffix -ap6210.txt,$(basename $(TARGET_DEVICE)))) endif ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212) SRC := $(call my-dir)/include/$(addprefix vnd_, $(addsuffix -ap6212.txt,$(basename $(TARGET_DEVICE)))) endif 14、(这些AP6212的WIFI的bin文件和BT的hcd文件来自全志R16的SDK,当然也可以找正基原厂/代理商索取:) R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\bcm43438a0.hcd (根据ap6210修改:) R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\device-bcm.mk # # Copyright (C) 2008 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ######################## -include hardware/broadcom/wlan/bcmdhd/config/config-bcm.mk PRODUCT_COPY_FILES += \ hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0.bin:system/vendor/modules/fw_bcm43438a0.bin \ hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0_apsta.bin:system/vendor/modules/fw_bcm43438a0_apsta.bin \ hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0_p2p.bin:system/vendor/modules/fw_bcm43438a0_p2p.bin \ hardware/broadcom/wlan/firmware/ap6212/nvram_ap6212.txt:system/vendor/modules/nvram_ap6212.txt \ hardware/broadcom/wlan/firmware/ap6212/bcm43438a0.hcd:system/vendor/modules/bcm43438a0.hcd #hardware/broadcom/wlan/firmware/ap6212/config.txt:system/vendor/modules/config.txt ######################## R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0.bin R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0_apsta.bin R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0_p2p.bin R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\nvram_ap6212.txt 15、(可选修改:) R:\wyb\ap6212a0_a33_sc3817r\android\packages\apps\Camera2\src\com\android\camera\CameraActivity.java private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { int Level = intent.getIntExtra("level", 0); int Scale = intent.getIntExtra("scale", 100); Log.w(TAG, "2016/11/29 19:54 &&&& wenyuanbo battery Level" + Level); /* *Logic: *1.the battery level is lower then 5%. *2.if in camera, make sure that not in the snapshot progress. *3.if in videocamera, make sure that not in the videorecording progress. *4.everytime starting the camera activity, the battery level is broadcasted, * if meeting the conditions above, give a dialog, press it and finish the activity. *5.if the conditions are not satisfied when started, play for a moment, in the camera acitvity * or video camera activity, the conditiosn are satisfied, also give a dialog for finishing the activity. * *by fuqiang. */ if(Level < 5) { Runnable runnable_close_camera = new Runnable() { @Override public void run() { //close the camera. // CameraActivity.this.finish(); } }; Log.w(TAG, "2016/11/29 18:20 **** wenyuanbo battery Level" + Level); showLocationDialog(); } /* *Logic: *1.the battery level is lhigher then 5% and lower than 15%. *2.if in camera, make sure that not in the snapshot progress. *3.if in videocamera, make sure that not in the videorecording progress. *4.whether in camera or in videocamera, make sure that the flash mode is supported. *5.everytime starting the camera activity, the battery level is broadcasted, * if meeting the conditions above, forbidden the flash(gray icon), give a dialog to notise user. *6.if the conditions are not satisfied when started, play for a moment, in the camera acitvity * or video camera activity, the conditiosn are satisfied, forbidden the flash and give a notice dialog. *7.the dialog is only given once for each camera activity starting. * *by fuqiang. */ else if(Level < 16) { //close the flash mode. /* if (mIsLowBatteryDialogShown == false) { mRotateDialog.showAlertDialog( getString(R.string.warning), getString(R.string.low_battery_15), null, null, getString(R.string.close), null); mIsLowBatteryDialogShown = true; } */ } } } }; 16、(可选:) R:\wyb\ap6212a0_a33_sc3817r\lichee\tools\pack\chips\sun8iw5p1\configs\default\env.cfg bootdelay=3 loglevel=8 17、 R:\wyb\ap6212a0_a33_sc3817r\lichee\tools\pack\chips\sun8iw5p1\configs\y3\sys_config.fex [power_sply] dcdc1_vol = 3000 dcdc2_vol = 1100 dcdc3_vol = 1200 dcdc4_vol = 0 dcdc5_vol = 1500 aldo1_vol = 3300 aldo2_vol = 2500 aldo3_vol = 3000 dldo1_vol = 3300 dldo2_vol = 3300 dldo3_vol = 2800 ;gpio0_vol = 2800 ldoio0_vol = 2800 ;---------------------------------------------------------------------------------- ;uart configuration ;uart_used = uart x enable ;uart_type = 2:2 wire,4:4 wire,8:8 wire, full function ;---------------------------------------------------------------------------------- [uart0] uart_used = 1 uart_port = 0 uart_type = 2 uart_tx = port:PF02<3><1><default><default> uart_rx = port:PF04<3><1><default><default> [uart1] uart_used = 1 uart_port = 1 uart_type = 4 uart_tx = port:PG06<2><1><default><default> uart_rx = port:PG07<2><1><default><default> uart_rts = port:PG08<2><1><default><default> uart_cts = port:PG09<2><1><default><default> [uart2] uart_used = 1 uart_type = 4 uart_tx = port:PB00<2><1><default><default> uart_rx = port:PB01<2><1><default><default> uart_rts = port:PB02<2><1><default><default> uart_cts = port:PB03<2><1><default><default> [uart3] uart_used = 0 uart_type = 4 uart_tx = port:PH06<3><1><default><default> uart_rx = port:PH07<3><1><default><default> uart_rts = port:PH08<3><1><default><default> uart_cts = port:PH09<3><1><default><default> [uart4] uart_used = 0 uart_port = 4 uart_type = 2 uart_tx = port:PA04<2><1><default><default> uart_rx = port:PA05<2><1><default><default> uart_rts = port:PA06<2><1><default><default> uart_cts = port:PA07<2><1><default><default> ;---------------------------------------------------------------------------------- ;capacitor tp configuration ;ctp_twi_id : twi controller ID ;ctp_twi_addr : I2C slave address, 7bit ;ctp_screen_max_x/_y : resolution of touch panel ;ctp_revert_x/_y_flag : whether need to revert x/y ;ctp_exchange_x_y_flag: whether need to exchange the value of x and y ;ctp_int_port : port for tp's interrupt signal ;ctp_wakeup : port for wakeup tp ;---------------------------------------------------------------------------------- [ctp_para] ctp_used = 1 ctp_name = "gt82x" ctp_twi_id = 0 ctp_twi_addr = 0x5d ctp_screen_max_x = 1280 ctp_screen_max_y = 800 ctp_revert_x_flag = 1 ctp_revert_y_flag = 1 ctp_exchange_x_y_flag = 1 ctp_int_port = port:PL04<4><default><default><default> ctp_wakeup = port:PL03<1><default><default><1> ctp_power_ldo = ctp_power_ldo_vol = ctp_power_io = ;-------------------------------------------------------------------------------- ; CTP automatic detection configuration ;ctp_detect_used --- Whether startup automatic inspection function. 1:used,0:unused ;Module name postposition 1 said detection, 0 means no detection. ;-------------------------------------------------------------------------------- [ctp_list_para] ctp_det_used = 1 ft5x_ts = 1 gt82x = 1 gslX680 = 1 gslX680new = 0 gt9xx_ts = 1 gt9xxf_ts = 0 tu_ts = 0 gt818_ts = 1 zet622x = 1 aw5306_ts = 1 icn83xx_ts = 0 [lcd0_para] lcd_used = 1 lcd_driver_name = "default_lcd" lcd_if = 3 lcd_x = 1280 lcd_y = 800 lcd_width = 150 lcd_height = 94 lcd_dclk_freq = 71 lcd_pwm_used = 1 lcd_pwm_ch = 0 lcd_pwm_freq = 50000 lcd_pwm_pol = 1 lcd_hbp = 20 lcd_ht = 1418 lcd_hspw = 10 lcd_vbp = 10 lcd_vt = 830 lcd_vspw = 5 lcd_lvds_if = 0 lcd_lvds_colordepth = 1 lcd_lvds_mode = 0 lcd_frm = 1 lcd_gamma_en = 0 lcd_bright_curve_en = 0 lcd_cmap_en = 0 deu_mode = 0 lcdgamma4iep = 22 smart_color = 90 lcd_bl_en = port:PD13<1><0><default><1> ;ap6xxx_wl_regon = port:PL06<1><default><default><0> ;lcd_bl_en = port:PL06<1><0><default><1> lcd_power = "axp22_dc1sw" lcdd0 = port:PD18<3><0><default><default> lcdd1 = port:PD19<3><0><default><default> lcdd2 = port:PD20<3><0><default><default> lcdd3 = port:PD21<3><0><default><default> lcdd4 = port:PD22<3><0><default><default> lcdd5 = port:PD23<3><0><default><default> lcdd6 = port:PD24<3><0><default><default> lcdd7 = port:PD25<3><0><default><default> lcdd8 = port:PD26<3><0><default><default> lcdd9 = port:PD27<3><0><default><default> ;---------------------------------------------------------------------------------- ;pwm config ;---------------------------------------------------------------------------------- [pwm0_para] pwm_used = 0 pwm_positive = port:PH00<2><0><default><default> [pwm1_para] pwm_used = 1 pwm_positive = port:PH01<2><0><default><default> ;-------------------------------------------------------------------------------- ;wifi configuration ;wifi_sdc_id: 0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3 ;wifi_usbc_id: 0- USB0, 1- USB1, 2- USB2 ;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0) ;wifi_mod_sel: 0- none, 1- ap6181, 2- ap6210(wifi+bt), ; 3 - rtl8188eu, 4- rtl8723au(wifi+bt), ; 5 - rtl8723bs, 6- esp8089 ;-------------------------------------------------------------------------------- [wifi_para] wifi_used = 1 wifi_sdc_id = 1 wifi_usbc_id = 1 wifi_usbc_type = 1 wifi_mod_sel = 2 wifi_power = "axp22_dldo1" wifi_power_ext1 = "axp22_dldo2" wifi_power_ext2 = "axp22_aldo1" wifi_power_switch = ;wifi_power_switch = port:power0<1><0><default><0> ; 1 - ap6181 sdio wifi gpio config ;ap6xxx_wl_regon = port:PL06<1><default><default><0> ;ap6xxx_wl_host_wake = port:PL07<4><default><default><0> ;ap6xxx_lpo_use_apclk = 1 ; 2 - ap6210 sdio wifi gpio config ap6xxx_wl_regon = port:PL06<1><default><default><0> ;ap6xxx_wl_regon = port:PD13<1><default><default><0> ap6xxx_wl_host_wake = port:PL07<4><default><default><0> ap6xxx_bt_regon = port:PL08<1><default><default><0> ap6xxx_bt_wake = port:PL10<1><default><default><0> ap6xxx_bt_host_wake = port:PL09<4><default><default><0> ap6xxx_lpo_use_apclk = 1 ; 3 - rtl8188eu usb wifi gpio conifg ; 4 - rtl8723au usb wifi + bt ; 5 - rtl8723bs sdio wifi + bt ;rtl8723bs_chip_en = port:PL11<1><default><default><0> ;rtl8723bs_wl_regon = port:PL06<1><default><default><0> ;rtl8723bs_wl_host_wake = port:PL07<4><default><default><0> ;rtl8723bs_bt_regon = port:PL08<1><default><default><0> ;rtl8723bs_bt_wake = port:PL10<1><default><default><0> ;rtl8723bs_bt_host_wake = port:PL09<4><default><default><0> ;rtl8723bs_lpo_use_apclk = 0 ; 6 - eagle sdio wifi ;esp_wl_chip_en = port:PL03<1><default><default><0> ;esp_wl_rst = port:PL02<1><default><default><0> ;-------------------------------------------------------------------------------- ;blue tooth ;bt_used ---- blue tooth used (0- no used, 1- used) ;bt_uard_id ---- uart index ;-------------------------------------------------------------------------------- [bt_para] bt_used = 1 bt_uart_id = 1 power_start = 3 pmu_temp_enable = 0 18、 刷机之后,BT可以用。 传输4.5MB的JPG图片大概需要2分钟。 WIFI: 在设置→WLAN(打开之后): shell@astar-y3:/ $ shell@astar-y3:/ $ [ 469.609956] init: computing context for service '/system/bin/wpa_supplicant' [ 469.618386] init: starting 'p2p_supplicant' [ 469.625739] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010' [ 469.673379] init: waitpid returned pid 2065, status = 0000ff00 [ 469.679923] init: process 'p2p_supplicant', pid 2065 exited [ 476.197334] sndpcm_unmute,line:1099 [ 451.464755] CPU1: Booted secondary processor [ 478.459403] CPU1: shutdown [ 478.462947] [hotplug]: cpu(0) try to kill cpu(1) [ 478.468478] [hotplug]: cpu1 is killed! . shell@astar-y3:/ $ 分析启动的log: [ 17.526849] gpio ap6xxx_wl_regon set val 1, act val 1 [ 17.632508] [ap6xxx]: sdio wifi power state: on [ 17.637576] [mmc]: sdc1 set ios: clk 0Hz bm PP pm UP vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 17.637751] =========== WLAN placed in POWER ON ======== [ 17.654651] [mmc]: sdc1 card_power_on start... [ 17.659576] [mmc]: sdc1 power_supply is null [ 17.664322] [mmc]: sdc1 card_power_on ok [ 17.680039] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 17.690275] [mmc]: mclk 0xf1c2008c 0x8002000e [ 17.772361] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52, RTO !! [ 17.781309] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52, RTO !! [ 17.789448] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 17.799714] [mmc]: mclk 0xf1c2008c 0x8002000e [ 17.862032] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 17.872262] [mmc]: mclk 0xf1c2008c 0x8002000e [ 17.933953] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 8, RTO !! [ 17.941997] *******************Try sdio******************* [ 17.948400] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 17.958630] [mmc]: mclk 0xf1c2008c 0x8002000e [ 18.027775] mmc1: queuing unknown CIS tuple 0x80 (2 bytes) [ 18.035416] mmc1: queuing unknown CIS tuple 0x80 (3 bytes) [ 18.043087] mmc1: queuing unknown CIS tuple 0x80 (3 bytes) [ 18.051920] mmc1: queuing unknown CIS tuple 0x80 (7 bytes) [ 18.145287] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B [ 18.155436] [mmc]: mclk 0xf1c2008c 0x8002000e [ 18.215346] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B [ 18.225736] [mmc]: mclk 0xf1c2008c 0x8100000b [ 18.285675] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B [ 18.296021] [mmc]: mclk 0xf1c2008c 0x8140030b [ 18.357915] mmc1: new high speed SDIO card at address 0001 [ 18.364532] bcmsdh_register: Linux Kernel SDIO/MMC Driver [ 18.364575] *******************sdio init ok******************* [ 18.377207] bcm_wlan_get_oob_irq enter. [ 18.381537] gpio [359] map to virq [7] ok [ 18.388851] F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x0 pkg:0x4 [ 18.396019] dhdsdio_probe_attach: unsupported chip: 0xa9a6 [ 18.402155] dhdsdio_probe: dhdsdio_probe_attach failed [ 18.407899] bcmsdh_probe: device attach failed [ 18.412981] [ 18.412984] Dongle Host Driver, version 1.88.45.3 (r420671) [ 18.412989] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 12:06:39 [ 18.428835] dhd_module_init: sdio_register_driver timeout or error [ 18.435928] gpio ap6xxx_wl_regon set val 0, act val 0 [ 18.541549] [ap6xxx]: sdio wifi power state: off [ 18.546679] =========== WLAN placed in POWER OFF ======== [ 18.546915] mmc1: card 0001 removed [ 18.546995] [mmc]: mmc not poweroff notifiy [ 18.547007] [mmc]: sdc1 set ios: clk 0Hz bm OD pm OFF vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 18.547160] [mmc]: sdc1 card_power_off start... [ 18.547166] [mmc]: sdc1 power_supply is null [ 18.547173] [mmc]: sdc1 card_power_off ok [ 18.631655] init: command 'insmod' r=-1 [ 18.636066] init: command 'insmod' r=-1 [ 18.658010] fs_mgr: swapon failed for /dev/block/zram0 [ 18.663804] init: command 'swapon_all' r=-1 [ 18.668504] init: processing action 0x58e70 (console_init) [ 18.675396] init: width = 1280 [ 18.678788] init: height = 800 [ 18.682224] init: s.st_size = 3145728 [ 18.686308] init: logo match failed!fbsize = 4096000 [ 18.718811] init: command 'console_init' r=0 [ 18.723628] init: processing action 0x55bf0 (fs) [ 18.730640] init: command 'mkdir' r=-2 [ 18.741901] init: command 'insmod' r=0 [ 18.752227] init: command 'insmod' r=0 [ 18.756491] init: command 'insmod' r=-1 [ 18.771211] init: command 'insmod' r=0 [ 18.779731] init: command 'insmod' r=0 [ 18.791739] init: command 'insmod' r=0 [ 18.803941] init: command 'insmod' r=0 [ 18.816178] init: command 'insmod' r=0 19、查找:(dhdsdio_probe_attach: unsupported chip: 0xa9a6) rootroot@rootroot-E400:~$ cd wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd/ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep "unsupported chip" . -R ./dhd_sdio.c: DHD_ERROR(("%s: unsupported chip: 0xx\n", ./sbutils.c: SI_ERROR(("sb_chip2numcores: unsupported chip 0x%x\n", 匹配到二进制文件 ./dhd_sdio.o 匹配到二进制文件 ./bcmdhd.o 匹配到二进制文件 ./bcmdhd.ko 匹配到二进制文件 ./sbutils.o rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
1B在全志r16平台tinav2.5系统下调通RTL8188FU 2018/5/11 14:49 版本:V1.0 开发板:客户提供 SDK:tina v2.5 1、01原始编译全志r16平台tinav2.5系统: rootroot@cm88:~$ cd /home/wwt rootroot@cm88:/home/wwt$ rootroot@cm88:/home/wwt$ md5sum tinav2.5_orig_r16repack_20171214_1114.tar.gz aa13de7313f393ca25375d9802a65da8 tinav2.5_orig_r16repack_20171214_1114.tar.gz rootroot@cm88:/home/wwt$ tar zxvf tinav2.5_orig_r16repack_20171214_1114.tar.gz rootroot@cm88:/home/wwt$ cd tinav2.5/ rootroot@cm88:/home/wwt/tinav2.5$ rootroot@cm88:/home/wwt/tinav2.5$ 7za x com_tinav2.5通用修改2没有外层目录_干掉AXP223的温度检测20180326_1023.7z -r -o./ rootroot@cm88:/home/wwt/tinav2.5$ source build/envsetup.sh (请严重注意:lunch之后的选项是环境依赖的,请选择astar_parrot-tina前的实际数值!) rootroot@cm88:/home/wwt/tinav2.5$ lunch 32. astar_parrot-tina Which would you like?32 rootroot@cm88:/home/wwt/tinav2.5$ make -j12 rootroot@cm88:/home/wwt/tinav2.5$ pack -d rootroot@cm88:/home/wwt/tinav2.5$ 2、 rootroot@cm88:/home/wwt/tinav2.5$ rootroot@cm88:/home/wwt/tinav2.5$ cd lichee/linux-3.4/drivers/net/wireless/ rootroot@cm88:/home/wwt/tinav2.5/lichee/linux-3.4/drivers/net/wireless$ rootroot@cm88:/home/wwt/tinav2.5/lichee/linux-3.4/drivers/net/wireless$ tar zxvf rtl8188FU_linux_v5.2.11.1_22924.20170703.tar.gz rootroot@cm88:/home/wwt/tinav2.5/lichee/linux-3.4/drivers/net/wireless$ rootroot@cm88:/home/wwt/tinav2.5/lichee/linux-3.4/drivers/net/wireless$ mv rtl8188FU_linux_v5.2.11.1_22924.20170703 rtl8188fu 维权之R16平台配置Makefile: W:\tinav2.5\lichee\linux-3.4\drivers\net\wireless\rtl8188fu\Makefile ########################## WIFI IC ############################ CONFIG_MULTIDRV = n (可选增加) CONFIG_RTL8192C = n CONFIG_RTL8192D = n CONFIG_RTL8723A = n CONFIG_RTL8188E = n CONFIG_RTL8812A = n CONFIG_RTL8821A = n CONFIG_RTL8192E = n CONFIG_RTL8723B = n CONFIG_RTL8814A = n CONFIG_RTL8723C = n CONFIG_RTL8188F = y CONFIG_RTL8822B = n CONFIG_RTL8723D = n CONFIG_RTL8821C = n ###################### Platform Related ####################### (务必修改,否则就是X86架构了) CONFIG_PLATFORM_I386_PC = n CONFIG_PLATFORM_ANDROID_X86 = n CONFIG_PLATFORM_ANDROID_INTEL_X86 = n CONFIG_PLATFORM_JB_X86 = n CONFIG_PLATFORM_ARM_S3C2K4 = n CONFIG_PLATFORM_ARM_PXA2XX = n CONFIG_PLATFORM_ARM_S3C6K4 = n CONFIG_PLATFORM_MIPS_RMI = n CONFIG_PLATFORM_RTD2880B = n CONFIG_PLATFORM_MIPS_AR9132 = n CONFIG_PLATFORM_RTK_DMP = n CONFIG_PLATFORM_MIPS_PLM = n CONFIG_PLATFORM_MSTAR389 = n CONFIG_PLATFORM_MT53XX = n CONFIG_PLATFORM_ARM_MX51_241H = n CONFIG_PLATFORM_FS_MX61 = n CONFIG_PLATFORM_ACTIONS_ATJ227X = n CONFIG_PLATFORM_TEGRA3_CARDHU = n CONFIG_PLATFORM_TEGRA4_DALMORE = n CONFIG_PLATFORM_ARM_TCC8900 = n CONFIG_PLATFORM_ARM_TCC8920 = n CONFIG_PLATFORM_ARM_TCC8920_JB42 = n CONFIG_PLATFORM_ARM_TCC8930_JB42 = n CONFIG_PLATFORM_ARM_RK2818 = n CONFIG_PLATFORM_ARM_RK3066 = n CONFIG_PLATFORM_ARM_RK3188 = n CONFIG_PLATFORM_ARM_URBETTER = n CONFIG_PLATFORM_ARM_TI_PANDA = n CONFIG_PLATFORM_MIPS_JZ4760 = n CONFIG_PLATFORM_DMP_PHILIPS = n (可选修改) CONFIG_PLATFORM_TI_DM365 = n CONFIG_PLATFORM_MSTAR_TITANIA12 = n CONFIG_PLATFORM_MSTAR = n CONFIG_PLATFORM_SZEBOOK = n CONFIG_PLATFORM_ARM_SUNxI = n CONFIG_PLATFORM_ARM_SUN6I = n CONFIG_PLATFORM_ARM_SUN7I = n CONFIG_PLATFORM_ARM_SUN8I_W3P1 = n (务必修改,配置为全志R16平台) CONFIG_PLATFORM_ARM_SUN8I_W5P1 = y W:\tinav2.5\lichee\linux-3.4\drivers\net\wireless\Kconfig source "drivers/net/wireless/ath/Kconfig" source "drivers/net/wireless/b43/Kconfig" source "drivers/net/wireless/b43legacy/Kconfig" source "drivers/net/wireless/bcmdhd/Kconfig" source "drivers/net/wireless/brcm80211/Kconfig" source "drivers/net/wireless/hostap/Kconfig" source "drivers/net/wireless/ipw2x00/Kconfig" source "drivers/net/wireless/iwlwifi/Kconfig" source "drivers/net/wireless/iwlegacy/Kconfig" source "drivers/net/wireless/iwmc3200wifi/Kconfig" source "drivers/net/wireless/libertas/Kconfig" source "drivers/net/wireless/orinoco/Kconfig" source "drivers/net/wireless/p54/Kconfig" source "drivers/net/wireless/rt2x00/Kconfig" source "drivers/net/wireless/rtlwifi/Kconfig" source "drivers/net/wireless/wl1251/Kconfig" source "drivers/net/wireless/wl12xx/Kconfig" source "drivers/net/wireless/zd1211rw/Kconfig" source "drivers/net/wireless/mwifiex/Kconfig" source "drivers/net/wireless/rtl8188eu/Kconfig" source "drivers/net/wireless/rtl8188fu/Kconfig" source "drivers/net/wireless/rtl8189es/Kconfig" source "drivers/net/wireless/rtl8723bs/Kconfig" source "drivers/net/wireless/esp8089/Kconfig" source "drivers/net/wireless/rtl8723bs_vq0/Kconfig" W:\tinav2.5\lichee\linux-3.4\drivers\net\wireless\Makefile obj-$(CONFIG_HOSTAP) += hostap/ obj-$(CONFIG_B43) += b43/ obj-$(CONFIG_B43LEGACY) += b43legacy/ obj-$(CONFIG_ZD1211RW) += zd1211rw/ obj-$(CONFIG_RTL8180) += rtl818x/ obj-$(CONFIG_RTL8187) += rtl818x/ obj-$(CONFIG_RTLWIFI) += rtlwifi/ obj-$(CONFIG_RTL8188EU) += rtl8188eu/ obj-$(CONFIG_RTL8188FU) += rtl8188fu/ obj-$(CONFIG_RTL8189ES) += rtl8189es/ obj-$(CONFIG_RTL8723BS) += rtl8723bs/ obj-$(CONFIG_ESP8089) += esp8089/ obj-$(CONFIG_ESP8089) += esp_prealloc/ obj-$(CONFIG_RTL8723BS_VQ0) += rtl8723bs_vq0/ 3、 W:\tinav2.5\package\firmware\linux-firmware\realtek.mk Package/r8188eu-firmware = $(call Package/firmware-default,RealTek RTL8188EU firmware) define Package/r8188eu-firmware/install $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi # #$(CP) \ # $(PKG_BUILD_DIR)/rtlwifi/rtl8188eufw.bin \ # $(1)/lib/firmware/rtlwifi endef $(eval $(call BuildPackage,r8188eu-firmware)) (RTL8188FU请直接参照RTL8188EU修改即可:) Package/r8188fu-firmware = $(call Package/firmware-default,RealTek RTL8188FU firmware) define Package/r8188fu-firmware/install $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi # #$(CP) \ # $(PKG_BUILD_DIR)/rtlwifi/rtl8188fufw.bin \ # $(1)/lib/firmware/rtlwifi endef $(eval $(call BuildPackage,r8188fu-firmware)) Package/r8723bs-firmware = $(call Package/firmware-default,RealTek RTL8723BS firmware) define Package/r8723bs-firmware/install $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi # #$(CP) \ # $(PKG_BUILD_DIR)/rtlwifi/rtl8188eufw.bin \ # $(1)/lib/firmware/rtlwifi endef $(eval $(call BuildPackage,r8723bs-firmware)) 4、 W:\tinav2.5\package\kernel\linux\modules\wireless.mk # # Copyright (C) 2006-2008 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # WIRELESS_MENU:=Wireless Drivers define KernelPackage/net-rtl8188eu SUBMENU:=$(WIRELESS_MENU) TITLE:=RTL8188EU support (staging) DEPENDS:=@USB_SUPPORT +@DRIVER_WEXT_SUPPORT +r8188eu-firmware +kmod-usb-core # KCONFIG:=\ # CONFIG_STAGING=y \ # CONFIG_R8188EU \ # CONFIG_88EU_AP_MODE=y \ # CONFIG_88EU_P2P=n FILES:=$(LINUX_DIR)/drivers/net/wireless/rtl8188eu/8188eu.ko AUTOLOAD:=$(call AutoProbe,8188eu) endef define KernelPackage/net-rtl8188eu/description Kernel modules for RealTek RTL8188EU support endef $(eval $(call KernelPackage,net-rtl8188eu)) (RTL8188FU请直接参照RTL8188EU修改即可:) define KernelPackage/net-rtl8188fu SUBMENU:=$(WIRELESS_MENU) TITLE:=RTL8188FU support (staging) DEPENDS:=@USB_SUPPORT +@DRIVER_WEXT_SUPPORT +r8188fu-firmware +kmod-usb-core # KCONFIG:=\ # CONFIG_STAGING=y \ # CONFIG_R8188FU \ # CONFIG_88FU_AP_MODE=y \ # CONFIG_88FU_P2P=n FILES:=$(LINUX_DIR)/drivers/net/wireless/rtl8188fu/8188fu.ko AUTOLOAD:=$(call AutoProbe,8188fu) endef define KernelPackage/net-rtl8188fu/description Kernel modules for RealTek RTL8188FU support endef $(eval $(call KernelPackage,net-rtl8188fu)) define KernelPackage/net-rtl8723bs SUBMENU:=$(WIRELESS_MENU) TITLE:=RTL8723BS support (staging) DEPENDS:=@USB_SUPPORT +@DRIVER_WEXT_SUPPORT +r8723bs-firmware # KCONFIG:=\ # CONFIG_STAGING=y \ # CONFIG_R8723BS \ # CONFIG_23BS_AP_MODE=y \ # CONFIG_23BS_P2P=n FILES:=$(LINUX_DIR)/drivers/net/wireless/rtl8723bs/8723bs.ko AUTOLOAD:=$(call AutoProbe,8723bs) endef define KernelPackage/net-rtl8723bs/description Kernel modules for RealTek RTL8723BS support endef $(eval $(call KernelPackage,net-rtl8723bs)) define KernelPackage/cfg80211 SUBMENU:=$(WIRELESS_MENU) TITLE:=cfg80211 support (staging) DEPENDS:= FILES:=$(LINUX_DIR)/net/wireless/cfg80211.ko AUTOLOAD:=$(call AutoProbe,cfg80211) endef define KernelPackage/cfg80211/description Kernel modules for CFG80211 support endef $(eval $(call KernelPackage,cfg80211)) 5、配置文件: W:\tinav2.5\target\allwinner\astar-parrot\configs\sys_config.fex ;---------------------------------------------------------------------------------- ;dcdc1_vol ---set dcdc1 voltage,mV,1600-3400,100mV/step ;dcdc2_vol ---set dcdc2 voltage,mV,600-1540,20mV/step ;dcdc3_vol ---set dcdc3 voltage,mV,600-1860,20mV/step ;dcdc4_vol ---set dcdc4 voltage,mV,600-1540,20mV/step ;dcdc5_vol ---set dcdc5 voltage,mV,1000-2550,50mV/step ;aldo2_vol ---set aldo2 voltage,mV,700-3300,100mV/step ;aldo3_vol ---set aldo3 voltage,mV,700-3300,100mV/step ;---------------------------------------------------------------------------------- [power_sply] dcdc1_vol = 3000 dcdc2_vol = 1100 dcdc3_vol = 1200 dcdc4_vol = 0 dcdc5_vol = 1500 aldo2_vol = 2500 aldo3_vol = 3000 dldo3_vol = 2800 ldoio1_vol = 3300 ldoio0_vol = 3300 eldo2_vol = 1800 eldo1_vol = 1800 ;---------------------------------------------------------------------------------- ;usb configuration ;usb_used: usb controller enable, 0-disable, 1-enable ;usb_port_type: usb mode: 0-device, 1-host, 2-otg ;usb_detect_type: usb hotplug detect mode, 0-none, 1-vbus/id detect, 2-id/dpdm detect ;usb_id_gpio: usb id detect IO ;usb_det_vbus_gpio: usb vbus detect IO, "axp_ctrl" for axp ;usb_drv_vbus_gpio: usb dirve vbus IO ;usb_restrict_gpio: usb current restrict IO ;usb_restric_flag: usb current restrict flag ;---------------------------------------------------------------------------------- [usbc0] usb_used = 1 usb_port_type = 0 ;-------------------------------------------------------------------------------- ;wifi/bt/fm/gps/nfc modules configuration ;module_num: ; 0- none ; 1- ap6181(wifi) ; 2- ap6210(wifi+bt) ; 3- rtl8188eu(wifi)/rtl8188fu(wifi) ; 4- rtl8723au(wifi+bt) ; 5- rtl8723bs(wifi+bt) ; 6- esp8089(wifi) ; 7- ap6476(wifi+bt+fm+gps) ; 8- ap6330(wifi+bt+fm) ; 9- gb9663(wifi+bt+fm) ; 10- ap6212(wifi+bt+fm) ;module_power1: ""- bat, "axp_dldo1"- axp dldo1 ;module_power1_vol: power1 voltage, mv; not used for module_power1 is "" ;module_power2: ""- bat, "axp_dldo2"- axp dldo2 ;module_power2_vol: power2 voltage, mv; not used for module_power2 is "" ;module_power3: ""- bat, "axp_dldo2"- axp dldo2 ;module_power3_vol: power3 voltage, mv; not used for module_power3 is "" ;power_switch: module power switch io when bat supply ;chip_en: enable chip io ;lpo_use_apclk: ""- not use, "losc_out"- a23/33, "ac10032k1"、"ac10032k2"、"ac10032k3"- a80/a83 ;-------------------------------------------------------------------------------- [rf_para] module_num = 3 module_power1 = "axp22_dldo1" module_power1_vol = 3300000 module_power2 = "axp22_dldo2" module_power2_vol = 3300000 module_power3 = "axp22_aldo1" module_power3_vol = 3300000 power_switch = chip_en = lpo_use_apclk = "losc_out" 6、这里需要断开一下SSH连接或者退出一下终端,因为修改了menuconfig的内容。貌似重新source都不行! rootroot@cm88:/home/wwt$ cd tinav2.5/ rootroot@cm88:/home/wwt/tinav2.5$ rootroot@cm88:/home/wwt/tinav2.5$ source build/envsetup.sh (请严重注意:lunch之后的选项是环境依赖的,请选择astar_parrot-tina前的实际数值!) rootroot@cm88:/home/wwt/tinav2.5$ lunch 32. astar_parrot-tina Which would you like?32 rootroot@cm88:/home/wwt/tinav2.5$ make kernel_menuconfig Device Drivers ---> [*] Network device support ---> [*] Wireless LAN ---> Broadcom FullMAC wireless cards support (/lib/firmware/fw_bcmdhd.bin) Firmware path (/lib/firmware/nvram.txt) NVRAM path Enable Chip Interface (SDIO bus interface support) ---> Interrupt type (Out-of-Band Interrupt) ---> Realtek 8188F USB WiFi (NEW) 修改为: Broadcom FullMAC wireless cards support Realtek 8188F USB WiFi 请严重注意,这里是有顺序的: rootroot@cm88:/home/wwt/tinav2.5$ make menuconfig Kernel modules ---> Wireless Drivers ---> kmod-cfg80211................................. cfg80211 support (staging) kmod-net-ap6212........................................... ap6212 support kmod-net-rtl8188eu........................... RTL8188EU support (staging) kmod-net-rtl8188fu........................... RTL8188FU support (staging) (NEW) kmod-net-rtl8723bs........................... RTL8723BS support (staging) 修改为: kmod-cfg80211................................. cfg80211 support (staging) kmod-net-ap6212........................................... ap6212 support kmod-net-rtl8188eu........................... RTL8188EU support (staging) kmod-net-rtl8188fu........................... RTL8188FU support (staging) kmod-net-rtl8723bs........................... RTL8723BS support (staging) Firmware ---> ap6212-firmware................................. Broadcom AP6212 firmware 修改为: ap6212-firmware................................. Broadcom AP6212 firmware ap6212_plus_ap6212a-firmware............. Broadcom compatibility firmware ap6212a-firmware............................... Broadcom AP6212A firmware ap6255-firmware................................. Broadcom AP6255 firmware ap6335-firmware................................. Broadcom AP6335 firmware ap6356s-firmware............................... Broadcom AP6356S firmware r8188eu-firmware.............................. RealTek RTL8188EU firmware -*- r8188fu-firmware.............................. RealTek RTL8188FU firmware r8723bs-firmware.............................. RealTek RTL8723BS firmware xr819-firmware..................................... Xradio xr819 firmware rootroot@cm88:/home/wwt/tinav2.5$ make -j12 CC [M] drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_cfgvendor.o CC [M] drivers/net/wireless/rtl8188fu/os_dep/linux/wifi_regd.o CC [M] drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_android.o CC [M] drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_proc.o CC [M] drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_mp.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_intf.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_com.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_com_phycfg.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_phy.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_dm.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_btcoex_wifionly.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_btcoex.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_mp.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_mcc.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_hci/hal_usb.o CC [M] drivers/net/wireless/rtl8188fu/hal/led/hal_usb_led.o CC [M] drivers/net/wireless/rtl8188fu/hal/HalPwrSeqCmd.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/Hal8188FPwrSeq.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_sreset.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_hal_init.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_phycfg.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rf6052.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_dm.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rxdesc.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_cmd.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/hal8188f_fw.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/usb_halinit.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_led.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_xmit.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_recv.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/usb_ops.o CC [M] drivers/net/wireless/rtl8188fu/hal/efuse/rtl8188f/HalEfuseMask8188F_USB.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_debug.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_antdiv.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_antdect.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_interface.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_hwconfig.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/halphyrf_ce.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_dig.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_pathdiv.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_rainfo.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_dynamicbbpowersaving.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_powertracking_ce.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_dynamictxpower.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_adaptivity.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_cfotracking.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_noisemonitor.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_acs.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_beamforming.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_dfs.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/txbf/halcomtxbf.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/txbf/haltxbfinterface.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/txbf/phydm_hal_txbf_api.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_adc_sampling.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_kfree.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_ccx.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_psd.o CC [M] drivers/net/wireless/rtl8188fu/hal/btc/halbtc8723bwifionly.o CC [M] drivers/net/wireless/rtl8188fu/hal/btc/halbtc8822bwifionly.o CC [M] drivers/net/wireless/rtl8188fu/hal/btc/halbtc8821cwifionly.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/halhwimg8188f_bb.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/halhwimg8188f_mac.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/halhwimg8188f_rf.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/phydm_regconfig8188f.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/halphyrf_8188f.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/phydm_rtl8188f.o CC [M] drivers/net/wireless/rtl8188fu/platform/platform_ops.o CC [M] drivers/net/wireless/rtl8188fu/platform/platform_ARM_SUNxI_usb.o CC [M] drivers/net/wireless/rtl8188fu/core/rtw_mp.o LD [M] drivers/net/wireless/rtl8188fu/8188fu.o drivers/net/wireless/rtl8188fu/core/rtw_security.o: In function `is_multicast_mac_addr': rtw_security.c:(.text+0x2048): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_security.o: In function `is_broadcast_mac_addr': rtw_security.c:(.text+0x2068): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_security.o: In function `is_zero_mac_addr': rtw_security.c:(.text+0x20ec): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_debug.o: In function `is_multicast_mac_addr': rtw_debug.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_debug.o: In function `is_broadcast_mac_addr': rtw_debug.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_debug.o: In function `is_zero_mac_addr': rtw_debug.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_io.o: In function `is_multicast_mac_addr': rtw_io.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_io.o: In function `is_broadcast_mac_addr': rtw_io.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_io.o: In function `is_zero_mac_addr': rtw_io.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_query.o: In function `is_multicast_mac_addr': rtw_ioctl_query.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_query.o: In function `is_broadcast_mac_addr': rtw_ioctl_query.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_query.o: In function `is_zero_mac_addr': rtw_ioctl_query.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_set.o: In function `is_multicast_mac_addr': rtw_ioctl_set.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_set.o: In function `is_broadcast_mac_addr': rtw_ioctl_set.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_set.o: In function `is_zero_mac_addr': rtw_ioctl_set.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ieee80211.o: In function `is_multicast_mac_addr': rtw_ieee80211.c:(.text+0x58): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ieee80211.o: In function `is_broadcast_mac_addr': rtw_ieee80211.c:(.text+0x78): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ieee80211.o: In function `is_zero_mac_addr': rtw_ieee80211.c:(.text+0xfc): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme.o: In function `is_multicast_mac_addr': rtw_mlme.c:(.text+0x3b4): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme.o: In function `is_broadcast_mac_addr': rtw_mlme.c:(.text+0x3d4): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme.o: In function `is_zero_mac_addr': rtw_mlme.c:(.text+0x458): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme_ext.o: In function `is_multicast_mac_addr': rtw_mlme_ext.c:(.text+0x10bc): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme_ext.o: In function `is_broadcast_mac_addr': rtw_mlme_ext.c:(.text+0x10dc): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme_ext.o: In function `is_zero_mac_addr': rtw_mlme_ext.c:(.text+0x1160): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mi.o: In function `is_multicast_mac_addr': rtw_mi.c:(.text+0x7f8): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mi.o: In function `is_broadcast_mac_addr': rtw_mi.c:(.text+0x818): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mi.o: In function `is_zero_mac_addr': rtw_mi.c:(.text+0x89c): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_wlan_util.o: In function `is_multicast_mac_addr': rtw_wlan_util.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_wlan_util.o: In function `is_broadcast_mac_addr': rtw_wlan_util.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_wlan_util.o: In function `is_zero_mac_addr': rtw_wlan_util.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_vht.o: In function `is_multicast_mac_addr': rtw_vht.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_vht.o: In function `is_broadcast_mac_addr': rtw_vht.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_vht.o: In function `is_zero_mac_addr': rtw_vht.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_pwrctrl.o: In function `is_multicast_mac_addr': rtw_pwrctrl.c:(.text+0xb4): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_pwrctrl.o: In function `is_broadcast_mac_addr': rtw_pwrctrl.c:(.text+0xd4): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_pwrctrl.o: In function `is_zero_mac_addr': rtw_pwrctrl.c:(.text+0x158): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_rf.o: In function `is_multicast_mac_addr': rtw_rf.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_rf.o: In function `is_broadcast_mac_addr': rtw_rf.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_rf.o: In function `is_zero_mac_addr': rtw_rf.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_recv.o: In function `is_multicast_mac_addr': rtw_recv.c:(.text+0x770): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_recv.o: In function `is_broadcast_mac_addr': rtw_recv.c:(.text+0x790): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_recv.o: In function `is_zero_mac_addr': rtw_recv.c:(.text+0x814): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sta_mgt.o: In function `is_multicast_mac_addr': rtw_sta_mgt.c:(.text+0x50): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sta_mgt.o: In function `is_broadcast_mac_addr': rtw_sta_mgt.c:(.text+0x70): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sta_mgt.o: In function `is_zero_mac_addr': rtw_sta_mgt.c:(.text+0xf4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ap.o: In function `is_multicast_mac_addr': rtw_ap.c:(.text+0x1bc): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ap.o: In function `is_broadcast_mac_addr': rtw_ap.c:(.text+0x1dc): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ap.o: In function `is_zero_mac_addr': rtw_ap.c:(.text+0x260): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_xmit.o: In function `is_multicast_mac_addr': rtw_xmit.c:(.text+0xa4): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_xmit.o: In function `is_broadcast_mac_addr': rtw_xmit.c:(.text+0xc4): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_xmit.o: In function `is_zero_mac_addr': rtw_xmit.c:(.text+0x148): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_p2p.o: In function `is_multicast_mac_addr': rtw_p2p.c:(.text+0x858): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_p2p.o: In function `is_broadcast_mac_addr': rtw_p2p.c:(.text+0x878): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_p2p.o: In function `is_zero_mac_addr': rtw_p2p.c:(.text+0x8fc): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_tdls.o: In function `is_multicast_mac_addr': rtw_tdls.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_tdls.o: In function `is_broadcast_mac_addr': rtw_tdls.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_tdls.o: In function `is_zero_mac_addr': rtw_tdls.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_br_ext.o: In function `is_multicast_mac_addr': rtw_br_ext.c:(.text+0x734): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_br_ext.o: In function `is_broadcast_mac_addr': rtw_br_ext.c:(.text+0x754): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_br_ext.o: In function `is_zero_mac_addr': rtw_br_ext.c:(.text+0x7d8): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_iol.o: In function `is_multicast_mac_addr': rtw_iol.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_iol.o: In function `is_broadcast_mac_addr': rtw_iol.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_iol.o: In function `is_zero_mac_addr': rtw_iol.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sreset.o: In function `is_multicast_mac_addr': rtw_sreset.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sreset.o: In function `is_broadcast_mac_addr': rtw_sreset.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sreset.o: In function `is_zero_mac_addr': rtw_sreset.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_btcoex_wifionly.o: In function `is_multicast_mac_addr': rtw_btcoex_wifionly.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_btcoex_wifionly.o: In function `is_broadcast_mac_addr': rtw_btcoex_wifionly.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_btcoex_wifionly.o: In function `is_zero_mac_addr': rtw_btcoex_wifionly.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_beamforming.o: In function `is_multicast_mac_addr': rtw_beamforming.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_beamforming.o: In function `is_broadcast_mac_addr': rtw_beamforming.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_beamforming.o: In function `is_zero_mac_addr': rtw_beamforming.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_odm.o: In function `is_multicast_mac_addr': rtw_odm.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_odm.o: In function `is_broadcast_mac_addr': rtw_odm.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_odm.o: In function `is_zero_mac_addr': rtw_odm.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/efuse/rtw_efuse.o: In function `is_multicast_mac_addr': rtw_efuse.c:(.text+0xd8): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/efuse/rtw_efuse.o: In function `is_broadcast_mac_addr': rtw_efuse.c:(.text+0xf8): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/efuse/rtw_efuse.o: In function `is_zero_mac_addr': rtw_efuse.c:(.text+0x17c): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/osdep_service.o: In function `is_multicast_mac_addr': osdep_service.c:(.text+0x178): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/osdep_service.o: In function `is_broadcast_mac_addr': osdep_service.c:(.text+0x198): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/osdep_service.o: In function `is_zero_mac_addr': osdep_service.c:(.text+0x21c): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/os_intfs.o: In function `is_multicast_mac_addr': os_intfs.c:(.text+0x6c4): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/os_intfs.o: In function `is_broadcast_mac_addr': os_intfs.c:(.text+0x6e4): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/os_intfs.o: In function `is_zero_mac_addr': os_intfs.c:(.text+0x768): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_intf.o: In function `is_multicast_mac_addr': usb_intf.c:(.text+0x454): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_intf.o: In function `is_broadcast_mac_addr': usb_intf.c:(.text+0x474): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_intf.o: In function `is_zero_mac_addr': usb_intf.c:(.text+0x4f8): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_ops_linux.o: In function `is_multicast_mac_addr': usb_ops_linux.c:(.text+0x5a8): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_ops_linux.o: In function `is_broadcast_mac_addr': usb_ops_linux.c:(.text+0x5c8): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_ops_linux.o: In function `is_zero_mac_addr': usb_ops_linux.c:(.text+0x64c): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_linux.o: In function `is_multicast_mac_addr': ioctl_linux.c:(.text+0xa838): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_linux.o: In function `is_broadcast_mac_addr': ioctl_linux.c:(.text+0xa858): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_linux.o: In function `is_zero_mac_addr': ioctl_linux.c:(.text+0xa8dc): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/xmit_linux.o: In function `is_multicast_mac_addr': xmit_linux.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/xmit_linux.o: In function `is_broadcast_mac_addr': xmit_linux.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/xmit_linux.o: In function `is_zero_mac_addr': xmit_linux.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/mlme_linux.o: In function `is_multicast_mac_addr': mlme_linux.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/mlme_linux.o: In function `is_broadcast_mac_addr': mlme_linux.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/mlme_linux.o: In function `is_zero_mac_addr': mlme_linux.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/recv_linux.o: In function `is_multicast_mac_addr': recv_linux.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/recv_linux.o: In function `is_broadcast_mac_addr': recv_linux.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/recv_linux.o: In function `is_zero_mac_addr': recv_linux.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_cfg80211.o: In function `is_multicast_mac_addr': ioctl_cfg80211.c:(.text+0x5144): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_cfg80211.o: In function `is_broadcast_mac_addr': ioctl_cfg80211.c:(.text+0x5164): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_cfg80211.o: In function `is_zero_mac_addr': ioctl_cfg80211.c:(.text+0x51e8): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_cfgvendor.o: In function `is_multicast_mac_addr': rtw_cfgvendor.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_cfgvendor.o: In function `is_broadcast_mac_addr': rtw_cfgvendor.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_cfgvendor.o: In function `is_zero_mac_addr': rtw_cfgvendor.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/wifi_regd.o: In function `is_multicast_mac_addr': wifi_regd.c:(.text+0x130): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/wifi_regd.o: In function `is_broadcast_mac_addr': wifi_regd.c:(.text+0x150): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/wifi_regd.o: In function `is_zero_mac_addr': wifi_regd.c:(.text+0x1d4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_android.o: In function `is_multicast_mac_addr': rtw_android.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_android.o: In function `is_broadcast_mac_addr': rtw_android.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_android.o: In function `is_zero_mac_addr': rtw_android.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_proc.o: In function `is_multicast_mac_addr': rtw_proc.c:(.text+0x4698): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_proc.o: In function `is_broadcast_mac_addr': rtw_proc.c:(.text+0x46b8): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_proc.o: In function `is_zero_mac_addr': rtw_proc.c:(.text+0x473c): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_mp.o: In function `is_multicast_mac_addr': ioctl_mp.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_mp.o: In function `is_broadcast_mac_addr': ioctl_mp.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_mp.o: In function `is_zero_mac_addr': ioctl_mp.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_intf.o: In function `is_multicast_mac_addr': hal_intf.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_intf.o: In function `is_broadcast_mac_addr': hal_intf.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_intf.o: In function `is_zero_mac_addr': hal_intf.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com.o: In function `is_multicast_mac_addr': hal_com.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com.o: In function `is_broadcast_mac_addr': hal_com.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com.o: In function `is_zero_mac_addr': hal_com.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com_phycfg.o: In function `is_multicast_mac_addr': hal_com_phycfg.c:(.text+0x174): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com_phycfg.o: In function `is_broadcast_mac_addr': hal_com_phycfg.c:(.text+0x194): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com_phycfg.o: In function `is_zero_mac_addr': hal_com_phycfg.c:(.text+0x218): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_phy.o: In function `is_multicast_mac_addr': hal_phy.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_phy.o: In function `is_broadcast_mac_addr': hal_phy.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_phy.o: In function `is_zero_mac_addr': hal_phy.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_dm.o: In function `is_multicast_mac_addr': hal_dm.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_dm.o: In function `is_broadcast_mac_addr': hal_dm.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_dm.o: In function `is_zero_mac_addr': hal_dm.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_btcoex_wifionly.o: In function `is_multicast_mac_addr': hal_btcoex_wifionly.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_btcoex_wifionly.o: In function `is_broadcast_mac_addr': hal_btcoex_wifionly.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_btcoex_wifionly.o: In function `is_zero_mac_addr': hal_btcoex_wifionly.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_mp.o: In function `is_multicast_mac_addr': hal_mp.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_mp.o: In function `is_broadcast_mac_addr': hal_mp.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_mp.o: In function `is_zero_mac_addr': hal_mp.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_hci/hal_usb.o: In function `is_multicast_mac_addr': hal_usb.c:(.text+0x208): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_hci/hal_usb.o: In function `is_broadcast_mac_addr': hal_usb.c:(.text+0x228): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_hci/hal_usb.o: In function `is_zero_mac_addr': hal_usb.c:(.text+0x2ac): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/led/hal_usb_led.o: In function `is_multicast_mac_addr': hal_usb_led.c:(.text+0x5c): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/led/hal_usb_led.o: In function `is_broadcast_mac_addr': hal_usb_led.c:(.text+0x7c): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/led/hal_usb_led.o: In function `is_zero_mac_addr': hal_usb_led.c:(.text+0x100): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/HalPwrSeqCmd.o: In function `is_multicast_mac_addr': HalPwrSeqCmd.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/HalPwrSeqCmd.o: In function `is_broadcast_mac_addr': HalPwrSeqCmd.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/HalPwrSeqCmd.o: In function `is_zero_mac_addr': HalPwrSeqCmd.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/Hal8188FPwrSeq.o: In function `is_multicast_mac_addr': Hal8188FPwrSeq.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/Hal8188FPwrSeq.o: In function `is_broadcast_mac_addr': Hal8188FPwrSeq.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/Hal8188FPwrSeq.o: In function `is_zero_mac_addr': Hal8188FPwrSeq.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_sreset.o: In function `is_multicast_mac_addr': rtl8188f_sreset.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_sreset.o: In function `is_broadcast_mac_addr': rtl8188f_sreset.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_sreset.o: In function `is_zero_mac_addr': rtl8188f_sreset.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_hal_init.o: In function `is_multicast_mac_addr': rtl8188f_hal_init.c:(.text+0x1bec): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_hal_init.o: In function `is_broadcast_mac_addr': rtl8188f_hal_init.c:(.text+0x1c0c): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_hal_init.o: In function `is_zero_mac_addr': rtl8188f_hal_init.c:(.text+0x1c90): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_phycfg.o: In function `is_multicast_mac_addr': rtl8188f_phycfg.c:(.text+0x234): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_phycfg.o: In function `is_broadcast_mac_addr': rtl8188f_phycfg.c:(.text+0x254): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_phycfg.o: In function `is_zero_mac_addr': rtl8188f_phycfg.c:(.text+0x2d8): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rf6052.o: In function `is_multicast_mac_addr': rtl8188f_rf6052.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rf6052.o: In function `is_broadcast_mac_addr': rtl8188f_rf6052.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rf6052.o: In function `is_zero_mac_addr': rtl8188f_rf6052.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_dm.o: In function `is_multicast_mac_addr': rtl8188f_dm.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_dm.o: In function `is_broadcast_mac_addr': rtl8188f_dm.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_dm.o: In function `is_zero_mac_addr': rtl8188f_dm.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rxdesc.o: In function `is_multicast_mac_addr': rtl8188f_rxdesc.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rxdesc.o: In function `is_broadcast_mac_addr': rtl8188f_rxdesc.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rxdesc.o: In function `is_zero_mac_addr': rtl8188f_rxdesc.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_cmd.o: In function `is_multicast_mac_addr': rtl8188f_cmd.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_cmd.o: In function `is_broadcast_mac_addr': rtl8188f_cmd.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_cmd.o: In function `is_zero_mac_addr': rtl8188f_cmd.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/hal8188f_fw.o: In function `is_multicast_mac_addr': hal8188f_fw.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/hal8188f_fw.o: In function `is_broadcast_mac_addr': hal8188f_fw.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/hal8188f_fw.o: In function `is_zero_mac_addr': hal8188f_fw.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/usb_halinit.o: In function `is_multicast_mac_addr': usb_halinit.c:(.text+0x73c): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/usb_halinit.o: In function `is_broadcast_mac_addr': usb_halinit.c:(.text+0x75c): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/usb_halinit.o: In function `is_zero_mac_addr': usb_halinit.c:(.text+0x7e0): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_led.o: In function `is_multicast_mac_addr': rtl8188fu_led.c:(.text+0x84): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_led.o: In function `is_broadcast_mac_addr': rtl8188fu_led.c:(.text+0xa4): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_led.o: In function `is_zero_mac_addr': rtl8188fu_led.c:(.text+0x128): multiple definition of `is_zero_mac_addr' driver

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值