This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/WILINK-SW: WiLink R8.7 SP2: Is it already available in a version of the ti-processor-sdk-linux-am335x-evm, or is it only available as a patch?

Part Number: WILINK-SW
Other Parts Discussed in Thread: WL1837MOD

Tool/software: Linux

Hi,

This inquiry was originally posted in the Sitara Processors Forum.  It was recommended that I repost here.

Two related questions (Q1 and Q2 below)

Q1: Do any versions of ti-processor-sdk-linux-am335x-evm include WiLink 8.7 SP2? If so, which SDK version(s)?

(I've been told that WiLink is a separate add-on, but the all the SDK installers I've used included WiLink drivers, firmware and related utilities.  So, it seems that some version of WiLink is always present with the standalone SDK.  When I use SD cards created from those SDK installations (no special WiLink8 add-ons), my EVM w/ WL1837MOD works just fine.)

Although I'd love to leave well-enough alone, I do have a need for WiLink R8.7 SP2 for a certain project.

Q2: if WiLink R8.7 SP2 requires a special patch to an existing SDK installation, to which SDK version would you recommend I apply said patch?

Thanks in advance,

- Marc

  • No. 8.7R2 is not yet part of the TISDK. You need to build 8.7R2 for your target kernel and filesystem using build utils.
  • Do I need to build and install R8.7_SP1 before building and installing R8.7_SP2, or does R8.7_SP2 contain all the changes from the R8,7_SP1 and previous wl8 releases?
  • Nope. You can directly build 8.7R2.. What is your kernel version?
  • I am looking to use any ti-processor-sdk-linux-am335x-evm-<SDK Version>. (ideally from the past 12 months) So, I would be using the kernel versions included with those SDKs.

    For example:
    * for ti-processor-sdk-linux-am335x-evm-03.02.00.05, I'm using linux-4.4.32+gitAUTOINC+adde2ca9f8-gadde2ca9f8
    * for ti-processor-sdk-linux-am335x-evm-04.01.00.06, I'm using linux-4.9.41+gitAUTOINC+e3a80a1c5c-ge3a80a1c5c

    Is there a preferred processor-sdk / linux kernel that I should apply R8.7_SP2. I ran into some build problems using SDK 04.01.00.06 (I think that's the latest SDK). I'm going to retry with earlier SDKs, but I'd appreciate your insight as to which SDK / Linux kernel would be the best choice (particularly an SDK for which you have verified a successful R8.7_SP build).

    Thanks!

    - Marc
  • Marc ,
    I believe Sitara SDK 4.1.0.6 includes R8.7 SP1 driver . In case you want to work on R8.7 SP2 or SP3 you may work on SDK 3.2.0.5 and upgrade WiLink8 drivers using build utilities : processors.wiki.ti.com/.../WL18xx_System_Build_Scripts

    Saurabh
  • Thanks for the helpful responses,

    One more question: If I specify a KERNEL_PATH that points to my SDK's kernel, is it true that the WL18xx system build scripts won't download kernel source and compile a new (zImage) kernel? I should be able to continue using my existing (zImage) kernel from my SDK, and just install the updated rootfs files are archived in fs_skeleton.tbz2.

    Is that the case?

    - thanks

    Marc
  • Marc,
    " If I specify a KERNEL_PATH that points to my SDK's kernel, is it true that the WL18xx system build scripts won't download kernel source and compile a new (zImage) kernel?"
    Correct. Make sure you compile your kernel before you run build-utilities script

    build-utilities binaries will be in fs/ . Just copy these to your rootfs/

    Saurabh
  • I've run the build script as follows:

    ./build_wl18xx.sh init
    ./build_wl18xx.sh update R8.7_SP2

    It seems to run fine, and I do get a populated fs directory and an outputs/fs_skeleton.tbz2 file.

    The generated lib/modules/4.1.13-g8dc6617/ directory only contains drivers for the ti wireless drivers (plus cfg802.11 and mac802.11).
    That's fine.

    The problem is that the modules.* files only reference these drivers.

    When I extract fs_skeleton.tbz2 to the device, the modules.* from the tarball OVERWRITE the existing modules.* files. As a result, I lose all the references to my other non wireless drivers.

    Am I doing something wrong in the build process? It seems that these modules.* files should preserve the non-wireless references while updating the references to the R8.7SP2 drivers.

    Thanks,

    Marc
  • Note: I should mention that I made small modifications to build_wl18xx.sh.

    The original script was not evaluating DEFAULT_KERNEL and DEFAULT_TOOLCHAIN correctly (ie. I specified TOOLCHAIN_PATH and KERNEL_PATH in setup_env.

    The following are the changes I made:

    178a179,180
    > else
    > DEFAULT_TOOLCHAIN=0
    190a193
    > DEFAULT_KERNEL=0
    271,272c274,277
    < wget ${toolchain[0]} -O `path downloads`/arm-toolchain.tar.bz2
    < tar -xjf `path downloads`/arm-toolchain.tar.bz2 -C `path toolchain`
    ---
    > # wget ${toolchain[0]} -O `path downloads`/arm-toolchain.tar.bz2
    > # tar -xjf `path downloads`/arm-toolchain.tar.bz2 -C `path toolchain`
    > wget ${toolchain[0]} -O `path downloads`/arm-toolchain.tar.xz
    > tar -xJf `path downloads`/arm-toolchain.tar.xz -C `path toolchain`
    864c869
    < [ DEFAULT_TOOLCHAIN ] && setup_toolchain
    ---
    > [ "$DEFAULT_TOOLCHAIN" -eq 1 ] && setup_toolchain
    872c877
    < [ -z $INTREE ] && [ $DEFAULT_KERNEL ] && build_uimage
    ---
    > [ -z $INTREE ] && [ $DEFAULT_KERNEL -eq 1 ] && build_uimage

    (For now, ignore the wget modification. The URL and tarball format for the default toolchain seems to have recently changed. I updated the URL in configuration.sh. But that's irrelevant for this discussion)

    I'm guessing anyone who uses the build_wl18xx script as-is, without paying close attention, ends up downloading and building the default kernel, and building with the default toolchain, regardless of what they specified in setup_env.

    In that case (although I haven't tried it yet), I suspect that this may result in a complete /lib/modules/ directory. (And not the limited /lib/modules directory I mentioned in the previous post)

    If this is the case, I'd like to achieve the same results, but using my locally built kernel and toolchain from ti-processor-sdk-linux-am335x-evm-02.00.01.07.

    Thanks !

    - Marc
  • Hi Marc,
    build-utilities should not download/build kernel unless KERNEL_PATH is set to DEFAULT. Can you please share your setup-env ?

    Saurabh
  • Hi Saurabh,

    When I specify my KERNEL_PATH, the build_wl18xx.sh finds my SDK's Makefile and verifies the correct kernel version.

    Let me re-focus my question.

    After I run ./build_wl18xx.sh init and ./build_wl18xx.sh update R8.7_SP2, what should the directory fs/lib/modules/4.1.13-g8dc6617/ contain?

    For me, the above directory contains a) an update/ subdirectory with WiLink8 drivers and b) modules.* files that only reference these WiLink8 drivers.

    The contents of fs get packaged into outputs/fs_skeleton.tbz2.

    The problem is that when I extract fs_skeleton on to my device, all the modules.* files get overwritten with the fs_skeleton version that only references WiLink8 drivers. I lose all my references to all the other non-WiLink drivers that are already installed on my device.

    As a result, when I boot up my device, it complains that many drivers cannot be loaded. And when I run lsmod, the only drivers shown as loaded are the WiLink8 drivers (including mac80211 and cfg80211).

    This can't be how R8.7_SP2 is supposed to be installed. But I can't figure out how to do it correctly with the build_wl18xx.sh script and fairly clear install instructions from the TI website.

    Again, please let me know what the contents of fs/lib/modules/4.1.13-g8dc6617/ contain?

    And, if I do have the proper contents, how do I install the updated WiLink without losing the information about my device's non-WiLink drivers (i.e. the information contained in the device's original modules.* files)

    I'm puzzled that nobody else has experienced this issue.
  • Hi Saurabh,

    I think that I have solved the problem.

    After my device booted up, I had to manually run depmod -ae to establish the proper dependencies.

    After I ran depmod and rebooted, all the necessary device drivers appeared to load. The system seems to work fine now.

    Regards,

    Marc
  • Minor correction. I ran depmod -a, not depmod -ae .

    Anyway, running depmod -a on the device, and then rebooting, fixed my problem.

    - Marc
  • Marc, Yes depmod will fix the module dependencies . Thanks for updating the post.

    Saurabh