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.

AM437x PRU 下载



按照文档挂载编译吃 remoteproc 模块 通过insmod 挂载上去

运行编译好的 下载的应用程序 

// Standard header files
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>

#define PRU_NUM          0
#define ADDEND1          0x98765400u
#define ADDEND2          0x12345678u
#define ADDEND3          0x10210210u

#define DDR_BASEADDR     0x80000000
#define OFFSET_DDR       0x00001000
#define OFFSET_SHAREDRAM 2048           //equivalent with 0x00002000

#define PRUSS0_SHARED_DATARAM    4

// Driver header file
#include "prussdrv.h"

#define PRU_NUM          0
static int LOCAL_exampleInit ();

static int mem_fd;
static void *ddrMem, *sharedMem;

static unsigned int *sharedMem_int;

int main (void)
{
    volatile unsigned long i,j;
unsigned int ret;
    printf("\nINFO: Starting %s example.\r\n","test");
    /* Initialize the PRU */
    prussdrv_init ();

  /* Open PRU Interrupt */
    ret = prussdrv_open(PRU_EVTOUT_0);
    if (ret)
    {
        printf("prussdrv_open open failed\n");
        return (ret);
    }

 /* Initialize example */
//    printf("\tINFO: Initializing example.\r\n");
//    LOCAL_exampleInit();

    /* Execute example on PRU */
    printf("\tINFO: Executing example on PRU0.\r\n");
    prussdrv_exec_program (PRU_NUM, "./test.bin");
printf("\tINFO: Executing example done.\r\n");
    for(i = 0; i < 5000;i++)
        for(j = 0; j < 1000000; j++);

    /* Disable PRU*/
 //   printf("Disable PRU\r\n");

 //   prussdrv_pru_disable(PRU_NUM);
 //   prussdrv_exit ();
    return(0);
}
/*****************************************************************************
* Local Function Definitions                                                 
*****************************************************************************/

static int LOCAL_exampleInit ()
{
    void *DDR_regaddr;

    /* open the device */
    mem_fd = open("/dev/mem", O_RDWR);
    if (mem_fd < 0) {
        printf("Failed to open /dev/mem (%s)\n", strerror(errno));
        return -1;
    }

    /* map the memory */
    ddrMem = mmap(0, 0x0FFFFFFF, PROT_WRITE | PROT_READ, MAP_SHARED, mem_fd, DDR_BASEADDR);
    if (ddrMem == NULL) {
        printf("Failed to map the device (%s)\n", strerror(errno));
        close(mem_fd);
        return -1;
    }

    //FLush the flag locations of PRU0 and PRU1
    DDR_regaddr = ddrMem;
    *(unsigned long*) DDR_regaddr = 0x00;

    DDR_regaddr = ddrMem + 0x000000004;
    *(unsigned long*) DDR_regaddr = 0x00;

    return(0);
}

然后运行后显示 求帮忙的说 是模块没挂载成功么

437x下载找不到 cat /sys/class/uio/uio0/maps/map0/addr 这个目录的说 还是下载的程序有问题=。= .bin文件就在这个文件的边哈