Hello,
I am trying to use the wilink-wlan/build-utilities (as described here: http://processors.wiki.ti.com/index.php/WL18xx_System_Build_Scripts) to cross-compile the wl18xx driver and network utilities (iw, hostapd, wpa_supplicant, etc.) for a custom kernel 2.6.28 designed to run on an NXP encoder (ASC8852A). Unfortunately, upgrading the kernel is not possible because many libraries are closed-source binaries and targeted to this specific kernel. The kernel supports .ko modules. My host build machine runs Ubuntu 16.04 LTS 32 bit in a VirtualBox.
Here is my setup_env:
# \\\//
# -(o o)-
#========================oOO==(_)==OOo=======================
# This file contains the exports needed for automating the
# build process of WLAN components.
# Place this file in the same directory with wl18xx_build.sh
# build scripts. No need to run 'source setup-env', the build
# scripts will perfom it internaly.
#===========================================================
# User specific environment settings - use full PATH
# if DEFAULT toolchain path is set toolchain will be downloaded to ./toolchain.
export TOOLCHAIN_PATH=/opt/Mozart_toolchain/arm-eabi-uclibc/usr/bin
# if DEFAULT path to root filesystem is set ./fs folder will be used.
export ROOTFS=/home/gfournier/wifi-atomas/rootfs
#if DEFAULT kernel path is set - kernel will be downloaded (set branch to match kernel version)
export KERNEL_PATH=/home/gfournier/wifi-atomas/working/ASC884xA_5xA_SDK6.2_wk1420/ASC88xx_SDK/LSP/mozart_kernel-1.36
# if KERNEL_VARIANT below is set the build script will look for kernel specific
# patches under the patches directory:
# - patches under the pathces/driver_patches/$KERNEL_VARIANT directory would be
# applied during "modules" build.
# - patches under the patches/kernel_patches/$/$KERNEL_VARIANT directory would
# be applied to the kernel pointed by KERNEL_PATH in case the "patch_kernel"
# command is used.
# Note: the kernel is not built automatically after the patches are applied
export KERNEL_VARIANT=DEFAULT
export CROSS_COMPILE=arm-unknown-linux-uclibcgnueabi-
export ARCH=arm
[ "$TOOLCHAIN_PATH" != "DEFAULT" ] && export PATH=$TOOLCHAIN_PATH:$PATH
I am running into lots of trouble when running ./build_wl18xx.sh update R8.6_SP1. I was able to clear up some of the problems but now I'm just wondering if I am taking the right path to reach my goal. Here is where I'm at regarding the build progress (openssl seems to build OK, now compat-wireless...):
****** *******
Copy original source files ...
Applying patches from patches to /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless ...
Modify Kconfig tree ...
Rewrite Makefiles and Kconfig files ...
Done!
Generating local configuration database from kernel ... done.
cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -c -o conf.o conf.c
cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -c -o zconf.tab.o zconf.tab.c
In file included from zconf.tab.c:2503:0:
menu.c: In function ‘get_symbol_str’:
menu.c:561:18: warning: ‘jump’ may be used uninitialized in this function [-Wmaybe-uninitialized]
jump->offset = r->len - 1;
^
menu.c:515:19: note: ‘jump’ was declared here
struct jump_key *jump;
^
cc conf.o zconf.tab.o -o conf
#
# configuration written to .config
#
make[5]: 'conf' is up to date.
#
# configuration written to .config
#
Building backport-include/backport/autoconf.h ... done.
CC [M] /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/main.o
CC [M] /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.o
In file included from /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:12:
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/compat.h:18: error: expected ';', ',' or ')' before '*' token
In file included from include/linux/dmaengine.h:24,
from include/linux/skbuff.h:29,
from /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/skbuff.h:3,
from include/linux/if_ether.h:120,
from /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/if_ether.h:3,
from /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:13:
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/device.h: In function 'backport_device_release_driver':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/device.h:115: error: implicit declaration of function 'device_lock'
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/device.h:117: error: implicit declaration of function 'device_unlock'
In file included from include/linux/dmaengine.h:29,
from include/linux/skbuff.h:29,
from /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/skbuff.h:3,
from include/linux/if_ether.h:120,
from /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/if_ether.h:3,
from /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:13:
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/dma-mapping.h: In function 'backport_dma_set_mask_and_coherent':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/dma-mapping.h:30: error: implicit declaration of function 'dma_set_coherent_mask'
In file included from include/linux/if_ether.h:120,
from /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/if_ether.h:3,
from /home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:13:
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/skbuff.h: In function 'backport___dev_alloc_pages':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/skbuff.h:230: error: 'NUMA_NO_NODE' undeclared (first use in this function)
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/skbuff.h:230: error: (Each undeclared identifier is reported only once
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/backport-include/linux/skbuff.h:230: error: for each function it appears in.)
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c: In function 'mac_pton':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:33: error: implicit declaration of function 'hex_to_bin'
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c: In function 'kstrtoull_from_user':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:53: error: implicit declaration of function 'kstrtoull'
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c: In function 'kstrtoll_from_user':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:54: error: implicit declaration of function 'kstrtoll'
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c: In function 'kstrtoul_from_user':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:55: error: implicit declaration of function 'kstrtoul'
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c: In function 'kstrtol_from_user':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:56: error: implicit declaration of function 'kstrtol'
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c: In function 'kstrtoint_from_user':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:58: error: implicit declaration of function 'kstrtoint'
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c: In function 'kstrtou16_from_user':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:59: error: implicit declaration of function 'kstrtou16'
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c: In function 'kstrtos16_from_user':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:60: error: implicit declaration of function 'kstrtos16'
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c: In function 'kstrtos8_from_user':
/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.c:62: error: implicit declaration of function 'kstrtos8'
scripts/Makefile.build:226: recipe for target '/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.o' failed
make[6]: *** [/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat/compat-3.0.o] Error 1
scripts/Makefile.build:361: recipe for target '/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat' failed
make[5]: *** [/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless/compat] Error 2
Makefile:1375: recipe for target '_module_/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless' failed
make[4]: *** [_module_/home/gfournier/wifi-atomas/build-utilites/src/compat_wireless] Error 2
Makefile.build:6: recipe for target 'modules' failed
make[3]: *** [modules] Error 2
Makefile.real:88: recipe for target 'modules' failed
make[2]: *** [modules] Error 2
Makefile:42: recipe for target 'modules' failed
make[1]: *** [modules] Error 2
Makefile:32: recipe for target 'default' failed
make: *** [default] Error 2
****** ERROR 0 *******
My understanding is that compat-wireless is failing because the script checks out upstream_41 which does not support kernels older than 3.0. Therefore, some kernel symbols are not available in my kernel (such as device_lock that has been introduced in kernel 2.6.34, between 2.6.28 and 3.0).
I have tried using version 3.14 of backports because I found this on the backports documentation: "Current versions of backports support all mainline kernels starting with version 3.0, for kernel versions older than 3.0 please use backports-3.14, which supports all kernel versions back to 2.6.26." However, I did not have more success.
My questions are:
- what is the best course of action to get wl18xx drivers on a custom 2.6.28 kernel ?
- is there any documentation on how to do so ?
- is there anything obvious I am missing here ?
Any help would be greatly appreciated.
Guillaume Fournier