Hallo, Ich versuche in einen embedded Linux auf einen ARROW SoCkit auf eine feste Adresse (0x00010080) zu schreiben. Um eine virtuelle Adresse mit der gewünschten Adresse zu erstellen nutze ich mmap. Leider habe ich im bereich speicher zugriff unter Linux nicht viel erfahrungen... Schreibe im mit folgenden Code auf die Adresse?
1 | #include "hwlib.h" |
2 | #include "socal/socal.h" |
3 | #include "socal/hps.h" |
4 | #include "socal/alt_gpio.h" |
5 | #include "system.h" |
6 | |
7 | |
8 | int main(){ |
9 | void *virtual_base; |
10 | void *adresse = 0x00010080; |
11 | unsigned int fd; |
12 | unsigned int in = 0xFFFF9FFF; |
13 | unsigned int out; |
14 | if( ( fd = open( "/dev/mem", ( O_RDWR | O_SYNC ) ) ) == -1 ) { |
15 | printf( "ERROR: could not open \"/dev/mem\"...\n" ); |
16 | return( 1 ); |
17 | }
|
18 | |
19 | virtual_base = mmap( adresse, 32, ( PROT_READ | PROT_WRITE ), MAP_SHARED, fd , 0 ); |
20 | |
21 | if( virtual_base == MAP_FAILED ) { |
22 | printf( "ERROR: mmap() failed...\n" ); |
23 | close( fd ); |
24 | return( 1 ); |
25 | }
|
26 | |
27 | alt_write_word( virtual_base, in ); |
28 | |
29 | out = alt_read_word(virtual_base); |
30 | printf("%i wurde zurueckgegeben!!",out); |
31 | return 0; |
32 | }
|
