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.

Bug in source code of PRU linux loader?

Expert 1925 points

Other Parts Discussed in Thread: DA8XX

Hi,

I was trying to use PRU linux loader, one problem i encountered is the compiled application program have "Segmentation fault" error, which seems come from "prussdrv_pruintc_init(&pruss_intc_initdata);"

I think the sentence of "unsigned int *pruintc_io = (unsigned int *) prussdrv.intc_base;" have error, since prussdrv.intc_base was set to zero in "prussdrv_init ();"

Please help, thanks.

-Zhu

  • Zhu,

     

    Can you try calling "prussdrv_open" before setting up INTC mapping using "prussdrv_pruintc_init".   As memory mapping of INTC to user space happens during open call.

     

    Pratheesh

  • Thanks for your reply, Pratheesh,

    Yes, you are right.

    Though  "prussdrv_open" is called before "prussdrv_pruintc_init", i did not change this.

    -Zhu

  • The odd thing is, when i tried to add some printf sentence to see where the error happens, it seems even happen on the added printf sentence sometimes.

  • I built and tried other applications in trunk/example_apps, seems all i tried have same problem.

  • Did you enable UIO support and PRUSS driver in Linux ? http://processors.wiki.ti.com/index.php/PRU_Linux_Application_Loader has detailed instructions.

  • Yes, I did.

    In fact, i was following the instructions on that web page.

  • Ok, what results you see for below commands from console.

    cat /sys/class/uio/uio0/maps/map0/addr

    cat /sys/class/uio/uio0/maps/map0/size

    Also make sure that prussdrv_open returns 0 before proceeding with rest of the API calls.

    Pratheesh

     

  • cat /sys/class/uio/uio0/maps/map0/addr : 0x1c30000

    cat /sys/class/uio/uio0/maps/map0/size : 0x10000

    I think prussdrv_open returns 0 since the message of "prussdrv_open open failed" was not showed.

    Regards,

    Zhu

  • Hi Zhu,

    It appears that the uio_pru driver is loading correctly.  Can you provide your bootargs and the output messages displayed when running the application code?

    Which examples have you tried?  I would suggest starting PRU_memAccessL3andDDR and trying to get this example to work.

    Additionally, depending on when you pulled the PRU example sources, some minor updates may have been made to the example code (primarily in PRU_gpioToggle and PRU_miscOperations).  These updates should be independent of the issue you described.   However, it is up to you whether to pull the new sources.

    Regards,
    Melissa

  • Hi, Melissa,

    My bootargs:

    bootargs=mem=128M console=ttyS2,115200n8 noinitrd rw ip=192.168.1.11:192.168.1.2
    :192.168.1.1:255.255.255.0::eth0: root=/dev/nfs nfsroot=192.168.1.67:/home/zh/1808/rootfs3/

    output message: 

    #pwd
    /PRU
    #./PRU_memAccessL3andDDR

    INFO: Starting PRU_ARM_memAccessL3andDDR example.
    Segmentation fault
    #

    Yes, i tried the PRU_memAccessL3andDDR, as above show.

    Thanks for the code update message, i'll download them and take a look later.

    Regards,

    Zhu

  • Zhu,

    It will greatly help to pinpoint exact source line triggering seg.fault. You can use gdbserver for debugging the application as printf are not reliable as you observed above.

    One potential issue with prussdrv I found is that its not checking the return status after calling mmap to map PRUSS/L3/EXT memory to user space.

      prussdrv.pru0dataram_base =
            mmap(0, pruss_map_size, PROT_READ | PROT_WRITE, MAP_SHARED,
                 prussdrv.mmap_fd, pruss_phys_base);

     //Add below lines to app_loader/interface/prussdrv.c

     if  (prussdrv.pru0dataram_base == MAP_FAILED)

         return -1;

    Recompile the library and your application.

    Pratheesh

  • Hi, Pratheesh,

    I tried your idea of adding

     if  (prussdrv.pru0dataram_base == MAP_FAILED)

         return -1;

    Though, seems the probelm is not here since it have no difference in output.

    I also tried gdbserver, below is the output:

    Board side:

    #gdbserver 192.168.1.67:1111 PRU_memAccessL3andDDR
    Process PRU_memAccessL3andDDR created; pid = 453
    Listening on port 1111
    Remote debugging from host 192.168.1.67
    gdbserver: error initializing thread_db library: version mismatch between libthr
    ead_db and libpthread
    gdbserver: error initializing thread_db library: version mismatch between libthr
    ead_db and libpthread
    gdbserver: error initializing thread_db library: version mismatch between libthr
    ead_db and libpthread

    INFO: Starting PRU_ARM_memAccessL3andDDR example.

    Host side:

    (gdb) target remote 192.168.1.11:1111
    Remote debugging using 192.168.1.11:1111
    warning: Unable to find dynamic linker breakpoint function.
    GDB will be unable to debug shared library initializers
    and track explicitly loaded dynamic code.
    0x400007b0 in ?? ()
    (gdb) c
    Continuing.
    warning: .dynamic section for "/lib/libpthread.so.0" is not at the expected address (wrong library or version mismatch?)
    warning: .dynamic section for "/lib/libgcc_s.so.1" is not at the expected address (wrong library or version mismatch?)
    warning: .dynamic section for "/lib/libc.so.6" is not at the expected address (wrong library or version mismatch?)
    Error while mapping shared library sections:
    /lib/ld-linux.so.3: No such file or directory.
    (no debugging symbols found)
    (no debugging symbols found)
    (no debugging symbols found)

    Program received signal SIGSEGV, Segmentation fault.
    0x000091fc in prussdrv_pruintc_init ()
    (gdb)

    Seems it's the problem of dynamic library? The rootfs is built by myself and i just copied those libraries from the arm-none-linux-gnueabi cross compiler, version of  arm-2009q3, anywhere wrong?

    Regards,

    Zhu

  • The path that i copied the libraries from is : arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/lib

    I aslo tried the libraries under arm-2009q3/arm-none-linux-gnueabi/libc/lib, seems the same.

  • Can you try compiling application against libprussdrvd.a with debug symbols (do "make debug" from trunk\app_loader\interface) using -g option. It looks like debug symbols are missing and hence you are not seeing the line which causes error.

    Pratheesh

  • Yes, i did as you say, the output is as below:

    Program received signal SIGSEGV, Segmentation fault.
    0x000095c4 in prussdrv_pruintc_init (prussintc_init_data=0xbecc7b84)
        at prussdrv.c:243
    243 {

    Zhu

  • Can you paste  source code lines in and around line 243. Your sources does not seem to match the latest SVN trunk.

    Also please inspect variables using disp command to see anything obvious.

    disp pruintc_io,  disp *pruintc_io etc at gdb prompt.

    Pratheesh

     

     

  • int prussdrv_pruintc_init(tpruss_intc_initdata * prussintc_init_data)
    {
        unsigned int *pruintc_io = (unsigned int *) prussdrv.intc_base;

    243 is the { at the begining of prussdrv_pruintc_init, and so nothing can be displayed but the input parameter.

    Below is the full message:

    (gdb) target remote 192.168.1.11:1111
    Remote debugging using 192.168.1.11:1111
    warning: Unable to find dynamic linker breakpoint function.
    GDB will be unable to debug shared library initializers
    and track explicitly loaded dynamic code.
    0x400007b0 in ?? ()
    (gdb) c
    Continuing.
    warning: .dynamic section for "/lib/libpthread.so.0" is not at the expected address (wrong library or version mismatch?)
    warning: .dynamic section for "/lib/libgcc_s.so.1" is not at the expected address (wrong library or version mismatch?)
    warning: .dynamic section for "/lib/libc.so.6" is not at the expected address (wrong library or version mismatch?)
    Error while mapping shared library sections:
    /lib/ld-linux.so.3: No such file or directory.

    Program received signal SIGSEGV, Segmentation fault.
    0x000095c4 in prussdrv_pruintc_init (prussintc_init_data=0xbe9a3b84)
        at prussdrv.c:243
    243 {
    (gdb) disp *prussintc_init_data
    1: *prussintc_init_data = {
      sysevts_enabled = " !\"#$%\377", '\0' <repeats 56 times>,
      sysevt_to_channel_map = {{sysevt = 32, channel = 1}, {sysevt = 33,
          channel = 0}, {sysevt = 34, channel = 2}, {sysevt = 35, channel = 3}, {
          sysevt = 36, channel = 0}, {sysevt = 37, channel = 1}, {sysevt = -1,
          channel = -1}, {sysevt = 0, channel = 0} <repeats 57 times>},
      channel_to_host_map = {{channel = 0, host = 0}, {channel = 1, host = 1}, {
          channel = 2, host = 2}, {channel = 3, host = 3}, {channel = -1,
          host = -1}, {channel = 0, host = 0}, {channel = 0, host = 0}, {
          channel = 0, host = 0}, {channel = 0, host = 0}, {channel = 0,
          host = 0}}, host_enable_bitmask = 15}
    (gdb)

    I noticed this error message:

    Error while mapping shared library sections:
    /lib/ld-linux.so.3: No such file or directory.

    Doesn't it matter?

    Zhu

  • Zhu,

    ld-linux is the linux dynamic loader and you might want to copy this from your toolchain installation to target file system, as pthread library is dynamically linked to prussdrv library.

    It mostly looks like a file system related issue.Why don't try with the stock arago file system and eliminate the unknown before customizing root file system.

    Regards,

    Pratheesh

  • Hi, Pratheesh,

    I took a check, rootfs3/lib/ld-linux.so.3 is a soft link file point to ld-2.10.1.so, both of them exists on my rootfs.

    I am using hawkboard, not the evm, where can I get the stock arago file system ?

    Regards,

    Zhu

     

  • Ok, thats an important piece of information. Can you check your kernel hawkboard has da8xx_register_pruss call. I am not sure this patch has been pushed for hawkboard...

    In the arch/arm/mach-davinci/board-da850-hawk.c file

     In function

    static __init void da850_hawk_init(void)

    {

    Add the following line     

                da8xx_register_pruss();

    Regarding arago file system, you can download it here, http://arago-project.org/files/releases/davinci-psp_03.01.01.38/images/arago/arago-base-image-arago.tar.gz

     

    Regards,

    Pratheesh

     

  • Hi,  Pratheesh,

    I used to add the evm PRU patch to hawkboard kernel codes, so, da8xx_register_pruss(); exist already.

    I also downloaded the arago file system, and copy the lib files to lib folder of both my file system and my cross-compiler, though, seems the output is not changed.

    I really appreciate your and Melissa's help, please continue.

    Zhu

     

  • Hi Zhu,

    Can you upload the patch you created for the hawkboard kernel code? 

    Also, where did you pull the hawkboard kernel code from, and what kernel version are you using?

    Regards,

    Melissa

  • Hi, Melissa,

    In fact, i have not created such a patch, though, i'm trying to create it for you, may need some time.

    How to upload when it's ready?

    I downloaded the hawkboard kernel code(linux-omapl1_ver1.tar.bz2 ) from http://code.google.com/p/hawkboard/downloads/list, version is 2.6.32-rc6.

    Regards,

    Zhu

  • Hi Zhu,

    You will first need to rename the patch to have a *.txt extension.  In the toolbar when writing a message in the forum (above), the paperclip icon allows you to then insert a file.

    Regards,

    Melissa

  • Hi, Melissa,

    Below is my PRU patch file, though, there are some pin definations that are defined only for my application, and should be removed or changed after apply the patch, i can't do it in the patch or other common sentences would be influenced.

    2061.linux-omapl1-pru.patch.txt

    Regards,

    Zhu

  • Thanks, Zhu.  I will look into this and get back to you.  Weather prevented me from getting into the office to test today.

    Regards,

    Melissa

  • Great, thanks, Melissa.

    Regards,

    Zhu

     

  • Hi,

    I think the problem is libc.so.6, seems some programs needs uclibc one, while others need glibc one, but it can't link to 2 libs in mean time.

    How to solve this?

    Zhu

  • Oh, sorry, my mistake, ignore the above message.

    Zhu

  • Hi Zhu,

    Can you do a quick test of your patch? 

    I applied it, built the kernel, and used this uImage when booting the hawkboard.  Since uio_pru is built into the kernel, it should automatically be present. However, the uio driver is not available (ie. EVM # cat /sys/class/uio/uio0/maps/map0/addr does not exist). 

    Regards.

    Melissa

  • Hi, Melissa,

    Yes, uio driver is ok on my kernel, look below:

    #cat /sys/class/uio/uio0/maps/map0/addr
    0x1c30000
    #

    Please check the .config to make sure the uio config options have been selected(CONFIG_UIO and CONFIG_UIO_PRUSS)

    Regards.

    Zhu

  • Hi, Melissa,

    Seems i missed something in patchfile:

    in linux-omapl1/arch/arm/mach-davinci/board-omapl138-hawk.c, before the sentence "ret = da8xx_register_watchdog();", add"da8xx_register_pruss();"

    Regards.

    Zhu

  • Hi Zhu,

    I made the update in the patch.  The uio_pru module is now installed properly.  I successfully ran the PRU_memAccessL3andDDR example (without the segmentation error).  This executable was built using the latest versions on GForge (rev. 24).  I would suggest re-downloading and compiling the source files. 

    In this post, I have tried to attach the executable and binary file for you to try (renamed with a .txt extension).  If they attach successfully, you can try using my same executable.

    5611.PRU_memAccessL3andDDR_bin.txt

    0181.PRU_memAccessL3andDDR.txt

     

    Regards,

    Melissa

     

  • Hi, Melissa,

    I tried the executable file, it still have segmentation error on my hawkboard, as before, below is an output list:

    board side:

    #gdbserver 192.168.1.67:1111 0181.PRU_5F00_memAccessL3andDDR
    Process 0181.PRU_5F00_memAccessL3andDDR created; pid = 458
    Listening on port 1111
    Remote debugging from host 192.168.1.67
    gdbserver: error initializing thread_db library: version mismatch between libthr
    ead_db and libpthread
    gdbserver: error initializing thread_db library: version mismatch between libthr
    ead_db and libpthread
    gdbserver: error initializing thread_db library: version mismatch between libthr
    ead_db and libpthread

    INFO: Starting PRU_ARM_memAccessL3andDDR example.

    Child terminated with signal = 0xb (SIGSEGV)
    GDBserver exiting

    host side:

    (gdb) target remote 192.168.1.11:1111
    Remote debugging using 192.168.1.11:1111
    warning: Unable to find dynamic linker breakpoint function.
    GDB will be unable to debug shared library initializers
    and track explicitly loaded dynamic code.
    0x400007b0 in ?? ()
    (gdb) c
    Continuing.
    warning: .dynamic section for "/lib/libpthread.so.0" is not at the expected address (wrong library or version mismatch?)
    warning: .dynamic section for "/lib/libgcc_s.so.1" is not at the expected address (wrong library or version mismatch?)
    warning: .dynamic section for "/lib/libc.so.6" is not at the expected address (wrong library or version mismatch?)
    Error while mapping shared library sections:
    /lib/ld-linux.so.3: No such file or directory.
    (no debugging symbols found)
    (no debugging symbols found)
    (no debugging symbols found)

    Program received signal SIGSEGV, Segmentation fault.
    0x00009198 in prussdrv_pruintc_init ()
    (gdb) c
    Continuing.

    Program terminated with signal SIGSEGV, Segmentation fault.
    The program no longer exists.
    (gdb)

    As I can see, it's problem of wrong version of dynamic libraries, what cross toolchain you are using?

    BTW: I took a search in GForge site, with the keyword of pru, but found nothing, so what's the address of it?

    Thanks & Regards.

    Zhu

  • Hi,

    Anyone tracking this thread?

    Why no reply? we are looking forward to.

    Zhu

  • Hi Zhu,

    The toolchain used to compile the binaries is the 2009q1-203 version of Code Sourcery.  It can be downloaded from http://www.codesourcery.com/sgpp/lite/arm/portal/release858.

    The GForge project for the PRU examples is located at https://gforge.ti.com/gf/project/pru_sw/.  Refer to the Linux loader wiki page for download instructions (http://processors.wiki.ti.com/index.php/PRU_Linux_Loader). 

    Additionally, the filesystem used was obtained at http://arago-project.org/files/releases/davinci-psp_03.01.01.38/images/arago/arago-base-image-arago.tar.gz. The uImage was built using the patch you previously provided.

    Regards,

    Melissa

     

     

  • Hi, Melissa,

    Thanks for infomations you provided.

    In fact, i'd tried the 2009q1-203 version compiler and arago-base-image-arago.tar.gz.

    seems the 2009q1-203 version compiler produce same result and i can't even boot up on the rootfs of  arago-base-image.

    Below is the output when booting on NFS of arago-base-image:

    VFS: Mounted root (nfs filesystem) on device 0:12.
    Freeing init memory: 148K
    INIT: version 2.86 booting
    Please wait: booting...
    Starting udev
    Populating dev cache
    Remounting root file system...
    WARNING: Couldn't open directory /lib/modules/2.6.32-rc6: No such file or direct
    ory
    FATAL: Could not open /lib/modules/2.6.32-rc6/modules.dep.temp for writing: No s
    uch file or directory
    modprobe: FATAL: Could not load /lib/modules/2.6.32-rc6/modules.dep: No such fil
    e or directory

    modprobe: FATAL: Could not load /lib/modules/2.6.32-rc6/modules.dep: No such fil
    e or directory

    root: mount: mounting rootfs on / failed: No such file or directory
    root: mount: mounting usbfs on /proc/bus/usb failed: No such file or directory
    Setting up IP spoofing protection: rp_filter.
    Configuring network interfaces... done.
    Tue Dec 21 16:45:00 UTC 2010
    INIT: Entering runlevel: 5
    Starting telnet daemon.
    modprobe: FATAL: Could not load /lib/modules/2.6.32-rc6/modules.dep: No such fil
    e or directory

    Starting syslogd/klogd: done

     _____                    _____           _         _
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|
                  |___|

    Here is my bootargs:  'mem=128M console=ttyS2,115200n8 noinitrd rw ip=192.168.1.11:192.168.1.2:192.168.1.1:255.255.255.0::eth0: root=/dev/nfs nfsroot=192.168.1.67:/home/zh/1808/fs1/'

    /home/zh/1808/fs1 is where i uncompressed arago-base-image-arago.tar.gz.

    what's the bootargs you use?

    Regards.

    -Zhu

  • Hi Zhu,

    I am accessing my uImage via TFTP.  My filesystem is on the second partition of my SD card (/dev/mmcblk0p2).  The bootargs I use are bootargs=console=ttyS2,115200n8 console=tty1 noinitrd root=/dev/mmcblk0p2 rootwait rw. 

    After setting my environment variables in u-boot, I execute the following commands:

         # tftp c0700000 uImage_hawk

         # bootm c0700000

    where uImage_hawk is the re-named uImage from applying your patch directly to the kernel you previously referenced (linux-omapl1_ver1.tar.bz2 from http://code.google.com/p/hawkboard/downloads/list).  Note the uImage is located in my tftp directory

  • Hi, Melissa,

    Ok, seems all errors happens after "Remounting root file system...", and i just changed it from SD card to NFS, it should work too, why it needs remount and why it can't be  remounted?

    -Zhu

  • Hi Zhu,

    What is the revision number on your hawkboard? 

    Regards,

    Melissa

  • Hi, Melissa,

    I am using a hawkboard lite, which is the erratic second version.

    Though, it run well on my busybox based rootfs, good enough for test PRU, i think.

    there is not any disk connected to my board by now, only power, serial and net cable.

    Regrds,

    Zhu

  • Hi Zhu,

    I am using Hawkboard Rev A and have seen the code to work with this revision.

    Please have a look at the following announcement: http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/p/89852/316340.aspx#316340.  Since the segmentation fault observed indicates a memory error, this may possibly be related to the Hawkboard issues in the announcement.

    Regards,

    Melissa

     

  • Thanks, Melissa,

    I'd seen the TI announcement, though, i don't think it's the board issue here, as i tested, the DDR2 on board can work correctly but is not stable when have interference, on my rootfs, it have no other tasks and have no interference.

    I am glad to hear that you can run it on Hawkboard Rev A, would you please tell me how you did it?

    Seem the focus should be the rootfs, please tell me all the progress in detail.

    The lite version don't have VIDEO DIGITAL DECODER and SATA, other parts are same, i hope this would not prevent it from booting from the Arago rootfs.

    Regards,

    Zhu

  • Hi Zhu,

    You might need to install hawk board kernel modules to your rootfs, as default arago rootfs may not have modules corresponding to your kernel version.

    (1) Build kernel and modules

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage modules

    (2) Install modules to rootfs

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- MOD_INSTALL_PATH=#YOUR ROOTFS# modules_install

    This should  allow you to boot to the console login prompt.

    Regards,

    Pratheesh

  • Thank you, Pratheesh,

    I did as you said, though, seems there is some other problem, the output is as below:

    INIT: version 2.86 booting
    Please wait: booting...
    Starting udev
    Populating dev cache
    Remounting root file system...
    modprobe: FATAL: Could not open 'kernel/fs/minix/minix.ko': No such file or dire
    ctory

    root: mount: mounting rootfs on / failed: No such file or directory
    root: mount: mounting usbfs on /proc/bus/usb failed: No such file or directory
    Setting up IP spoofing protection: rp_filter.
    Configuring network interfaces... done.
    Tue Dec 21 16:45:00 UTC 2010
    INIT: Entering runlevel: 5
    Starting telnet daemon.
    modprobe: FATAL: Could not open 'kernel/net/ipv6/ipv6.ko': No such file or direc
    tory

    Starting syslogd/klogd: done

    In fact, all the file exists, it seems to be file limit of authority  issue, but it did not change after i did "sudo chmod -R 777" on the rootfs folder.

    Regards,

    Zhu

  • Maybe still the remounting problem?

  • Hi, Melissa,

    I am glad to hear that you can run PRU programs on Hawkboard Rev A, would you please tell me how you did it?

    Regards,

    Zhu

  • Hi, Pratheesh and Melissa,

    Thanks for your previous help.

    i tried to boot from sd card, it failed and then when i cahnged back to boot from NFS, i found it went to login once, like below:

    VFS: Mounted root (nfs filesystem) on device 0:12.
    Freeing init memory: 148K
    INIT: version 2.86 booting
    Please wait: booting...
    Starting udev
    Populating dev cache
    Remounting root file system...
    modprobe: FATAL: Could not open 'kernel/fs/minix/minix.ko': No such file or dire
    ctory

    root: mount: mounting rootfs on / failed: No such file or directory
    root: mount: mounting usbfs on /proc/bus/usb failed: No such file or directory
    Setting up IP spoofing protection: rp_filter.
    Configuring network interfaces... done.
    Tue Dec 21 16:45:00 UTC 2010
    INIT: Entering runlevel: 5
    Starting telnet daemon.
    modprobe: FATAL: Could not open 'kernel/net/ipv6/ipv6.ko': No such file or direc
    tory

    Starting syslogd/klogd: done

     _____                    _____           _         _
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|
                  |___|                    |___|

    Arago Project http://arago-project.org arago ttyS2

    Arago 2009.11 arago ttyS2

    arago login:

    Then it halted, I don't understand why it's different now but i do realize that you are right that it's the DDR2 issue which block it from booting up.

    Seems it can only boot up on my simple rootfs which almost only have BusyBox and library files.

    So, is it possible to add something to my simple rootfs so that it can do the PRU test? if possible, how to do?

    Regards

    Zhu

  • Hello All,

    I had a Segmentation Fault while running the example code of PRU_memAccessL3andDDR, but when I tested these PRU_memAccessL3andDDR.txt and PRU_memAccessL3andDDR_bin.txt it was OK. So, I've downgraded the file prussdrv.c (pru_sw/trunk/app_loader/interface) from vev.26 to rev. 19.

    regardds,

    Paulo Cordeiro

  • Hi Paulo,

    Rev26 commit is added to support PRUSS UIO driver in the mainline kernel which will be supported in an upcoming release.

    https://gforge.ti.com/gf/project/pru_sw/scmsvn/?action=ScmCommitDetail&scm_commit_id=4965


    I have updated the wiki (http://processors.wiki.ti.com/index.php/PRU_Linux_Application_Loader#Before_Getting_Started)  to reflect the same.

    Thanks and Regards,
    Pratheesh