|
human 发表于 2017-4-21 09:09; a- q7 l+ M; G( u2 n1 t
可以读写的,应该是你的代码问题
4 j- }' a) ~# O. B* @& Y4 b3 a0 K可以参考-基于StarterWare的TMS320C6748裸机程序开发入门详解教程 ...
+ \, m/ u5 {: H3 R# a0 w你认为是我代码问题,那我把代码简化了一下。新建了一个程序,没有加载gel,没有任何头文件和库
" t8 ]; l/ Z& e函数编写如下:- #define HWREG(x) (*((volatile unsigned int *)(x)))! m" p$ A, [* r+ k
8 e' a3 M b! h! g: q8 G- int main(void) {
& k" a' s' n( j6 A% {: X - HWREG(0x01C14124)=0x88800800;8 I* E; m6 `2 Q* g/ A i6 K
- return 0;
" c% a/ i6 [) g$ W - }
. D" @5 X/ ]9 Y" [9 e
复制代码 $ x2 {: ?3 V/ i# e+ w8 V7 y
$ P s) m, c1 R' n! K5 v& a主函数就一条语句,单步运行,内存地址“0x01C14124”位置的数值并不改变
" ` y& a0 Z9 i% F$ n0 q2 b( n U, e9 ~; y
4 d9 J! f. m. {" r! l7 I4 O0 M
然后我把程序变成如下形式:9 e. d1 X* S& h9 L! u% a
- #define HWREG(x) (*((volatile unsigned int *)(x)))
) a6 L, N6 M8 p6 R( B2 g4 H
1 O( M5 Q( w3 f l( E- q i$ R1 ?/ u9 L- int main(void) {$ P( s: z7 @4 O0 I
- unsigned int temp;2 e8 C5 O% M: L4 ^: t
- HWREG(0x01C14124)=0x88800800;
4 Y0 ?3 _0 Z, X' r! ` - temp=HWREG(0x01C14124);' n1 y0 h5 c) l* Q
- return 0;
. K) Q% w$ |6 L, F/ E/ P - }. x* ^1 X8 n( E" [; P/ S
复制代码 & z0 C8 M8 L. w, k7 l
! H' O' q; E4 p0 t; J
运行第一句HWREG(0x01C14124)=0x88800800后,内存地址“0x01C14124”位置的数值并不改变
' Q4 `' W. e' M8 W. h; l. V: R* F通过手动改变内存地址“0x01C14124”位置的数据,该为0x80000000
! W4 Q4 m! M. l/ z9 a* i# Q然后运行第二句temp=HWREG(0x01C14124),可以看到temp已经变为0x80000000,说明该位置是可以读取的,这也说明仿真器和目标板连接没问题
D! w* O+ \; S0 H( B C* K5 h! y9 k1 K! v) T- w
|
|