|
板凳
楼主 |
发表于 2017-7-12 09:57:56
|
只看该作者
本帖最后由 newdsp 于 2017-7-12 10:00 编辑 3 _ `: x6 H( n5 I5 U; N
. }# D. J$ N- p, p. a& \3 X
1.对ARM端的内存分配,我们按照文档《6-2-U-Boot启动参数详解.pdf》中的说明,调整了Uboot中ARM的内存分配;
9 F* b" T4 x, L6 d 将启动参数mem_args由原来的:mem=32M@0xc0000000 mem=192M@0xc4000000,调整为! K6 n' J1 N& i, N( b; Q+ y9 u
mem=32M@0xc0000000 mem=64M@0xcc000000;& V$ M7 d' `# |; j; b+ F9 m9 ~% w
这样做的目的,是给DSP预留足够的数据空间。$ t* B& L: \$ m y5 d& i
这样改完后,Uboot无法引导LINUX。1 e ~3 P8 n" c# s! \6 h
然后再次断电重启后,启动参数mem_args又恢复为原来的mem=32M@0xc0000000 mem=192M@0xc4000000,我们做的修改丢失了。但这时可以UBOOT引导LINUX;
+ Z; \2 _$ ^8 Q; Q2 J6 S" J9 W" E! `& b. H
2. 对DSP端的内存分配,由于我们没有用仿真器,而是用makefile进行程序编译,因此对我们而言内存分配是一个叫config.bld的文件,我们的内存分配方式如下: g1 ]( H9 h- r4 S+ m4 {$ b
* C000_0000 - CFFF_FFFF 1000_0000 ( 256 MB) External Memory
' \- D2 W6 f6 l- Y * ------------------------------------------------------------------------
( n) w0 C; x b- Z * C000_0000 - C1FF_FFFF 200_0000 ( 32 MB) Linux7 [) @7 \! P5 x4 b
* C200_0000 - C200_FFFF 2_0000 ( 128 KB) SR_0 (ipc)6 V1 t: o4 s! I i$ v8 [1 V
* C201_0000 - C202_FFFF FE_0000 (15.875MB) SR_1 (data buffers)9 _* m/ z C$ m; ^6 t% l
* C300_0000 - CBFF_FFFF 900_0000 ( 160 MB) DSP_PROG (code, data)
& o/ ]& o( B/ k( v d9 d * CC00_0000 - CFFF_FFFF 400_0000 ( 64 MB) Linux6 k( J6 W/ J' D
按照上述内存分配,DSP可以正常编译。2 z/ P8 P+ J! x3 Z# K1 _7 g7 R* S! O
但由于ARM段在修改内存后不能启动(此时 mem=32M@0xc0000000 mem=64M@0xcc000000)/ j+ Q& L; b/ ?8 q$ S4 T
而能启动时(此时mem=32M@0xc0000000 mem=192M@0xc4000000),ARM与DSP在0xc4000000~0xCBFF_FFFF之间有冲突,因此无法加载DSP。; n& i. E- k. e8 ^3 V
因此DSP最终也无法运行。
- |" z, ~6 o# ^, n6 [1 Q3 Z* q, ~9 q' y
- b# V4 j0 `- z: ]% ?另:对于触摸屏失效的解答,没有指导意义。因为冲突就在哪里摆着。且电路都是原来开发板采用的电路。& v. i9 w1 F8 h
|
|