! y$ Y1 n: B$ q8 d7 m- SOMAPL138的ARM端对共享区内存进行直接访问,代码如下所示:#include <stdio.h>) E8 l/ f1 m3 ~; x; G9 b
#include <unistd.h>7 H5 S0 z+ {1 Q4 a
#include <sys/mman.h> " W9 b" Y7 @7 k) B: \% H#include <sys/types.h>6 L5 `+ A( t1 H* f# y" z1 k1 W
#include <fcntl.h>" {6 J, e. a# j0 i+ I
8 Z( E: d9 c0 V& d0 X# b( d
#define SHAER_RAM_BASE_ADDR (0x80000000) . ^8 M: W6 D4 h9 H! } * T" s G2 z9 ]0 T. dtypedef struct / z$ u/ U- K. Y{8 p: e2 i$ {: D- r, [2 f
unsigned int a; $ ~" M, S2 ^* ?. Y$ u3 U- g unsigned int b;" P5 j( ~# J+ x& M1 T% M( Q. S
unsigned int packet_cout;1 G% r& |2 `+ H% B9 f
}RX_MSG_PROTOCOL, *pRX_MSG_PROTOCOL;- v7 y8 t1 w" w2 m' N
' S/ g. _( }. H, h( I' G3 nvoid read_MSG_buffer(pRX_MSG_PROTOCOL pshreRAM);/ j/ D6 t( _9 a9 U2 N R$ `1 n
unsigned int count_copy = 0;9 v; n2 A2 R5 o# l# k
: b. F1 R# N B' i0 r$ [
; g" f' J8 v# Iint main() 2 ^+ O. Q) ^( {) ?+ O; i6 e8 [, I4 g{ g6 S3 u1 K. P1 k1 N! Y
pRX_MSG_PROTOCOL pshreRAM = NULL;; D! Q8 D, d! x# c. {/ q' b
pshreRAM = (pRX_MSG_PROTOCOL)SHAER_RAM_BASE_ADDR;, s+ t: V! \$ t! g/ @: V( }
7 n* z1 {% R1 K( X& L while(1)/ Z" Q y# L! @
{ " d% Z" Q' Z/ ?% X% X z7 m9 G7 u read_MSG_buffer(pshreRAM);8 Y) g& b" g- l
} ; c/ W N/ X R
}: x3 [' Q3 k. J8 S0 J3 O
7 O6 A0 k! o+ y9 {void read_MSG_buffer(pRX_MSG_PROTOCOL pshreRAM) 7 p# C+ b# }# j( ]{ & ^( a. V/ f5 f' k- x% A$ n RX_MSG_PROTOCOL buf;8 v7 Y6 r: p2 x4 U! g6 [: r
" s. _3 i3 f% p* C ]; z
buf.a = pshreRAM->a; " q) O. S& L9 l6 Y$ \ buf.b = pshreRAM->b;+ w. f# _( T" c. Y" `% E
buf.packet_cout = pshreRAM->packet_cout;% Y& @! h; F e+ v% _
( Y+ F4 F) s" i. v, t C: Q if(buf.packet_cout != count_copy), g2 B5 z; W! @: f
{+ k6 r g# `- q2 F+ x0 e6 m
printf("a is %d\n", buf.a);8 ~6 J+ B4 ~# _+ F8 ]
printf("b is %d\n", buf.b);( |+ ~; m2 v+ N" {) g. n. O
printf("count is %d\n", buf.packet_cout); % R8 J8 ]6 k) s! T count_copy = buf.packet_cout;9 [$ R' k- F9 H' [3 V1 e: H
}2 I7 e$ V- I% }1 H- G! c
else) y1 G1 V( x$ ~# D8 S A& ]; ?
{ - v8 Y C {, G! [# p printf("No effective message!"); ( {8 r: {4 P& @! A+ _ ?# ]) A5 ] }# O1 R# c+ V- V* e; f' Z Q9 P1 Y
} 1 b! P& V0 B: ^8 L! ~, P0 F: ~* c2 F$ G: v% _