OpenCores
URL https://opencores.org/ocsvn/funbase_ip_library/funbase_ip_library/trunk

Subversion Repositories funbase_ip_library

[/] [funbase_ip_library/] [trunk/] [TUT/] [soc/] [hibi_pe_dma_example_1/] [1.0/] [src/] [cpu2/] [main.c] - Blame information for rev 145

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 145 lanttu
/*
2
 * file   main.c
3
 * date   2012-02-21
4
 * author Lasse Lehtonen
5
 *
6
 */
7
 
8
#include <stdio.h>
9
#include <stdlib.h>
10
#include <string.h>
11
#include <sys/alt_irq.h>
12
 
13
#include "hpd_functions.h"
14
 
15
 
16
void my_hpd_isr();
17
void my_hpd_isr_init();
18
 
19
 
20
int main()
21
{
22
  char str[] =
23
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit,\n"
24
    "sed do eiusmod tempor incididunt ut labore et dolore magna\n"
25
    "aliqua. Ut enim ad minim veniam, quis nostrud exercitation\n"
26
    "ullamco laboris nisi ut aliquip ex ea commodo consequat.\n"
27
    "Duis aute irure dolor in reprehenderit in voluptate velit\n"
28
    "esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\n"
29
    "occaecat cupidatat non proident, sunt in culpa qui officia\n"
30
    "deserunt mollit anim id est laborum.\n";
31
 
32
 
33
  hpd_initialize();
34
  hpd_rx_packet_reinit(2);
35
  my_hpd_isr_init();
36
 
37
 
38
  printf("CPU2: starts\n");
39
  printf("Size of str: %lu\n", sizeof(str));
40
 
41
  hpd_tx_send_copy((int)str, (sizeof(str)+3) >> 2, 0x00000001);
42
 
43
  //printf("CPU2: retires!\n");
44
  while(1); return 0;
45
 
46
}
47
 
48
 
49
void my_hpd_isr()
50
{
51
  // This pe gets data only on packet channel 2.
52
  // Omitting others.
53
  char data[17]; data[16] = 0;
54
  if(hpd_rx_packet_poll(2)) {
55
    hpd_rx_packet_read(2, data);
56
    printf("CPU2: \"%s\"\n", data);
57
    hpd_irq_packet_ack(2);
58
    hpd_rx_packet_reinit(2);
59
  } else {
60
    printf("CPU2: got unexpected interrupt!\n");
61
  }
62
}
63
 
64
 
65
void my_hpd_isr_init()
66
{
67
  int status;
68
 
69
  status = alt_ic_isr_register(HIBI_PE_DMA_2_IRQ_INTERRUPT_CONTROLLER_ID,
70
                               HIBI_PE_DMA_2_IRQ, my_hpd_isr,
71
                               0, 0);
72
 
73
  if(status) {
74
    printf("CPU2: registering my_hpd_isr failed!\n");
75
  }
76
 
77
  status = alt_ic_irq_enable(HIBI_PE_DMA_2_IRQ_INTERRUPT_CONTROLLER_ID,
78
                             HIBI_PE_DMA_2_IRQ);
79
 
80
  if(status) {
81
    printf("CPU2: enabling hpd interrupt failed!\n");
82
  }
83
 
84
  hpd_irq_enable();
85
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.