|
|
板凳

楼主 |
发表于 2017-7-12 09:57:56
|
只看该作者
本帖最后由 newdsp 于 2017-7-12 10:00 编辑 & ?% a: }6 @/ \ D! _: r
' h5 a4 h, c, x+ L& q0 s. e
1.对ARM端的内存分配,我们按照文档《6-2-U-Boot启动参数详解.pdf》中的说明,调整了Uboot中ARM的内存分配;
! t6 A) g0 |! `* U% [2 k; j 将启动参数mem_args由原来的:mem=32M@0xc0000000 mem=192M@0xc4000000,调整为8 {, t. ~, B, N+ q+ H& W
mem=32M@0xc0000000 mem=64M@0xcc000000;
* w+ `6 w( v7 @ 这样做的目的,是给DSP预留足够的数据空间。( a) ~( A, b/ q* @
这样改完后,Uboot无法引导LINUX。
& _: H* m# H/ h( ~ 然后再次断电重启后,启动参数mem_args又恢复为原来的mem=32M@0xc0000000 mem=192M@0xc4000000,我们做的修改丢失了。但这时可以UBOOT引导LINUX;
+ d; P& N1 z1 m# s9 r! r" c
5 x) C; n; V7 L. i& ?2. 对DSP端的内存分配,由于我们没有用仿真器,而是用makefile进行程序编译,因此对我们而言内存分配是一个叫config.bld的文件,我们的内存分配方式如下:
. U+ a" C6 I) e4 v& P6 G0 _/ k * C000_0000 - CFFF_FFFF 1000_0000 ( 256 MB) External Memory
5 h1 q0 F) O n7 k! Q; g * ------------------------------------------------------------------------. z, v# Q. M. D- O3 [" R9 W
* C000_0000 - C1FF_FFFF 200_0000 ( 32 MB) Linux
% R2 d4 d' I* N0 c- n4 t * C200_0000 - C200_FFFF 2_0000 ( 128 KB) SR_0 (ipc)
' T" t6 y6 i: {8 t% k * C201_0000 - C202_FFFF FE_0000 (15.875MB) SR_1 (data buffers)
) z7 U9 }4 I! m+ d9 i * C300_0000 - CBFF_FFFF 900_0000 ( 160 MB) DSP_PROG (code, data)
* ^* r4 w4 I4 V4 d * CC00_0000 - CFFF_FFFF 400_0000 ( 64 MB) Linux% e1 w) A/ G9 [# ~, m* f
按照上述内存分配,DSP可以正常编译。
) A) K" F$ E N2 S; t5 G+ H5 T, S, m 但由于ARM段在修改内存后不能启动(此时 mem=32M@0xc0000000 mem=64M@0xcc000000)
s; Z4 F2 O4 r$ e( W/ N 而能启动时(此时mem=32M@0xc0000000 mem=192M@0xc4000000),ARM与DSP在0xc4000000~0xCBFF_FFFF之间有冲突,因此无法加载DSP。
! G' N$ C2 {. W' ?3 l' K. ` 因此DSP最终也无法运行。; t2 B) H! o$ Q, g) O
2 F) s+ P8 C$ Z$ J% C2 S! w
?- {5 W8 i9 e8 n/ w另:对于触摸屏失效的解答,没有指导意义。因为冲突就在哪里摆着。且电路都是原来开发板采用的电路。
, R8 b! s9 G* { |
|