Advertisement
Guest User

Untitled

a guest
Jun 15th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <sys/mman.h>
  3. #include <fcntl.h>
  4. #include <errno.h>
  5. #include <unistd.h>
  6. #include <string.h>
  7.  
  8.  
  9. #if defined(BEAGLEBONE_BLACK) || 1
  10.  
  11. #include "pru/prussdrv.h"
  12. #include "pru/pruss_intc_mapping.h"
  13.  
  14. #define PRU_NUM 0
  15. #define OFFSET_SHAREDRAM 2048
  16. #define PRUSS0_SHARED_DATARAM 4
  17.  
  18. static void *sharedMem;
  19. static uint32_t *sharedMem_int;
  20. static uint32_t pruEnabled = 0;
  21.  
  22. uint32_t BESPRUSetup(void)
  23. {
  24. unsigned int ret;
  25. tpruss_intc_initdata pruss_intc_initdata = PRUSS_INTC_INITDATA;
  26.  
  27. if (pruEnabled) return 0;
  28. fprintf(stderr, "BESPRUSetup: About to init the PRUSS\n");
  29. /* Initialize the PRU */
  30. prussdrv_init ();
  31.  
  32. /* Open PRU Interrupt */
  33. ret = prussdrv_open(PRU_EVTOUT_0);
  34. if (ret)
  35. {
  36. fprintf(stderr, "prussdrv_open open failed\n");
  37. return(pruEnabled);
  38. }
  39.  
  40. /* Get the interrupt initialized */
  41. prussdrv_pruintc_init(&pruss_intc_initdata);
  42.  
  43. /* Execute gamepad firmware on PRU */
  44. fprintf(stderr, "\tINFO: Executing example.\r\n");
  45. prussdrv_exec_program (PRU_NUM, "./gamepad.bin");
  46.  
  47. /* Allocate Shared PRU memory. */
  48. //prussdrv_map_prumem(PRUSS0_SHARED_DATARAM, &sharedMem);
  49. //sharedMem_int = (uint32_t *) sharedMem;
  50.  
  51. /* Done! */
  52. pruEnabled = 1;
  53. fprintf(stderr, "PRU enabled!\n");
  54. return pruEnabled;
  55. }
  56.  
  57. uint32_t BESPRUCheckState(void)
  58. {
  59. if (!pruEnabled) return 0x0; //FFFFFFFF;
  60.  
  61. /* Allocate Shared PRU memory. */
  62. prussdrv_map_prumem(PRUSS0_SHARED_DATARAM, &sharedMem);
  63. sharedMem_int = (uint32_t *) sharedMem;
  64.  
  65. return(sharedMem_int[OFFSET_SHAREDRAM]);
  66. }
  67.  
  68. void BESPRUShutdown(void)
  69. {
  70. if (pruEnabled)
  71. {
  72. /* Disable PRU and close memory mapping*/
  73. prussdrv_pru_disable(PRU_NUM);
  74. prussdrv_exit ();
  75. pruEnabled = 0;
  76. }
  77. }
  78.  
  79. #else /* defined(BEAGLEBONE_BLACK) */
  80.  
  81. uint32_t BESPRUSetup(void) { return(0); }
  82. uint32_t BESPRUCheckState(void) { return(0xFFFFFFFF); }
  83. void BESPRUShutdown(void) {}
  84.  
  85. #endif /* defined(BEAGLEBONE_BLACK) */
  86.  
  87.  
  88. error message
  89.  
  90. debian@beaglebone:~/bes/src$ sudo arm-linux-gnueabihf-g++ pru.cpp -o prudd
  91. /usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/Scrt1.o: In function `_start':
  92. (.text+0x44): undefined reference to `main'
  93. /tmp/ccgsFOfq.o: In function `BESPRUSetup()':
  94. pru.cpp:(.text+0x114): undefined reference to `prussdrv_init'
  95. pru.cpp:(.text+0x11a): undefined reference to `prussdrv_open'
  96. pru.cpp:(.text+0x14a): undefined reference to `prussdrv_pruintc_init'
  97. pru.cpp:(.text+0x168): undefined reference to `prussdrv_exec_program'
  98. /tmp/ccgsFOfq.o: In function `BESPRUCheckState()':
  99. pru.cpp:(.text+0x1de): undefined reference to `prussdrv_map_prumem'
  100. /tmp/ccgsFOfq.o: In function `BESPRUShutdown()':
  101. pru.cpp:(.text+0x224): undefined reference to `prussdrv_pru_disable'
  102. pru.cpp:(.text+0x228): undefined reference to `prussdrv_exit'
  103. collect2: error: ld returned 1 exit status
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement