Yes!  That was it, thanks so much.  I should have spotted that since that 
mode shows up as an option when I type the command config-pin -q P9.28. 
 After I typed config-pin P9.28 pout, the LED turned on when I loaded the 
PRU assembly code as described above.

Thanks again!
Geoff

On Monday, February 27, 2017 at 1:56:35 PM UTC-7, [email protected] wrote:
>
> Hi,
>
> If you use PRU's "r30", then you need to mux your pin to "pruout" mode. 
> The "gpio" mode is for the "classic" slow GPIOs that are accessed through 
> the L3 bus.
>
> I haven't tested, but you may want to try the following command:
>  $ config-pin P9.28 pruout
>
> Regards,
> Dimitar
>
> On Monday, February 27, 2017 at 1:03:27 AM UTC+2, Geoffrey Messier wrote:
>>
>> Hi everyone,
>>
>> I'm a beaglebone/PRU newbie and I'm stuck on getting a basic hello world 
>> program up and running on the PRU.  My goal is to use load a simple PRU 
>> assembly program to light an LED on the PRU development cape.  The light 
>> corresponds to pin P9.28.  I'm using the uio_pruss kernel module.
>>
>> Rather than using an overlay, I'm opting to use config-pin since my 
>> application will eventually require a fair bit of dynamic pin 
>> reconfiguration.  I note in this post 
>> <https://www.element14.com/community/community/designcenter/single-board-computers/next-gen_beaglebone//blog/2013/05/22/bbb--working-with-the-pru-icssprussv2>
>>  that 
>> the PRU is disabled in the default overlay.  Using the method suggested in 
>> the post, I modify the default overlay I'm using 
>> (am335x-boneblack-emmc-overlay.dtb) to change the status of the 
>> pruss@4a300000 fragment from "disabled" to "okay".  To make sure that my 
>> board is now using my modified overlay, I've also disabled the heartbeat 
>> LED.  When I reboot, the heartbeat flash is gone and when I use dtc -I fs 
>> /sys/firmware/devicetree/base to look at the current device tree, the 
>> fragment is as follows:
>>
>>                pruss@4a300000 {
>>                         compatible = "ti,pruss-v2";
>>                         ti,pintc-offset = <0x20000>;
>>                         ti,hwmods = "pruss";
>>                         ti,deassert-hard-reset = "pruss", "pruss";
>>                         status = "okay";
>>                         interrupt-parent = <0x1>;
>>                         interrupts = <0x14 0x15 0x16 0x17 0x18 0x19 0x1a 
>> 0x1b>;
>>                         phandle = <0xa5>;
>>                         reg = <0x4a300000 0x80000>;
>>                         linux,phandle = <0xa5>;
>>                 };
>>
>>
>> The cape seems to be working fine since "config-pin P9.28 hi" and 
>> "config-pin P9.28 low" turns the LED on an off.
>>
>> My PRU assembly code, lighton.p, is:
>> .origin 0 
>> .entrypoint start 
>>
>> start:
>> rept:
>>         set r30.t3
>>         jmp rept
>>         halt
>>
>> and my app loader code, loader.c, is:
>> #include <stdio.h>
>> #include <stdlib.h>
>> #include <unistd.h>
>> #include <prussdrv.h>
>> #include <pruss_intc_mapping.h>
>>
>> #define PRU_NUM 0 
>>
>> static int pru_cleanup(void) {
>>    int rtn = 0;
>>
>>    if((rtn = prussdrv_pru_disable(PRU_NUM)) != 0) {
>>       fprintf(stderr, "prussdrv_pru_disable() failed\n");
>>       rtn = -1;
>>    }
>>
>>    if((rtn = prussdrv_exit()) != 0) {
>>       fprintf(stderr, "prussdrv_exit() failed\n");
>>       rtn = -1;
>>    }
>>
>>    return rtn;
>> }
>>
>> int main(int argc, char **argv) {
>>    int rtn;
>>
>>    if((rtn = prussdrv_init()) != 0) {
>>       fprintf(stderr, "prussdrv_init() failed\n");
>>       pru_cleanup();
>>       return rtn;
>>    }
>>
>>    if((rtn = prussdrv_open ( PRU_EVTOUT_0 )) != 0) {
>>      fprintf(stderr,"prussdrv_open() failed\n");
>>      pru_cleanup();
>>      return rtn;
>>    }
>>
>>    if((rtn = prussdrv_exec_program(PRU_NUM, "./lighton.bin")) < 0) {
>>      fprintf(stderr, "prussdrv_exec_program() failed\n");
>>      pru_cleanup();
>>      return rtn;
>>    }
>>
>>   getchar();  /* Pause to let the program execute. */
>>
>>   return pru_cleanup();
>> }
>>
>> The following is a screen capture of what I'm doing to try and get all of 
>> this to run:
>> root@beaglebone:~/pru-helloworld# uname -r
>> 4.9.11-bone4
>> root@beaglebone:~/pru-helloworld# lsmod
>> Module                  Size  Used by
>> spidev                  7466  0 
>> c_can_platform          6486  0 
>> c_can                   9942  1 c_can_platform
>> can_dev                12174  1 c_can
>> pwm_tiehrpwm            4920  0 
>> spi_omap2_mcspi        10167  0 
>> pwm_tiecap              3801  0 
>> tieqep                  7575  0 
>> omap_aes               13012  0 
>> omap_sham              21488  0 
>> crypto_engine           5939  1 omap_aes
>> uio_pruss               4928  0 
>> omap_rng                4572  0 
>> rng_core                7340  1 omap_rng
>> evdev                  10035  1 
>> tps65217_charger        4723  0 
>> omap_wdt                4159  0 
>> leds_gpio               3308  0 
>> uio_pdrv_genirq         3437  0 
>> uio                     8614  2 uio_pruss,uio_pdrv_genirq
>> cpufreq_dt              4805  0 
>> 8021q                  18006  0 
>> garp                    5788  1 8021q
>> mrp                     7092  1 8021q
>> stp                     2117  1 garp
>> llc                     5021  2 garp,stp
>> cpufreq_powersave       1567  0 
>> cpufreq_conservative     3649  0 
>> root@beaglebone:~/pru-helloworld# ls /dev/ui*
>> /dev/uinput  /dev/uio0  /dev/uio1  /dev/uio2  /dev/uio3  /dev/uio4 
>>  /dev/uio5  /dev/uio6  /dev/uio7
>> root@beaglebone:~/pru-helloworld# pasm -b lighton.p
>>
>> PRU Assembler Version 0.87
>> Copyright (C) 2005-2013 by Texas Instruments Inc.
>>
>> Pass 2 : 0 Error(s), 0 Warning(s)
>>
>> Writing Code Image of 3 word(s)
>> root@beaglebone:~/pru-helloworld# gcc -o loader -ggdb loader.c -lprussdrvd
>> root@beaglebone:~/pru-helloworld# config-pin -q P9.28
>> P9_28 Mode: gpio Direction: out Value: 0
>> root@beaglebone:~/pru-helloworld# ./loader
>> AM33XX
>> File ./lighton.bin open passed
>>
>> root@beaglebone:~/pru-helloworld# 
>>
>> but the LED remains dark.
>>
>> Any suggestions would be greatly appreciated!  Thanks in advance for your 
>> help and apologies in advance if this is something super obvious that I've 
>> missed.
>>
>> Geoff
>>
>>
>>
>>
>>
>>
>>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/464ee12b-3118-43ab-b9fe-d77ad1d7a5cd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to