|
板凳
楼主 |
发表于 2017-7-12 09:57:56
|
只看该作者
本帖最后由 newdsp 于 2017-7-12 10:00 编辑 A" n+ V) u+ {7 |0 I5 i. W
* o* ], S$ k; N$ D( g
1.对ARM端的内存分配,我们按照文档《6-2-U-Boot启动参数详解.pdf》中的说明,调整了Uboot中ARM的内存分配;1 T; Z5 ?9 w$ @; j! E
将启动参数mem_args由原来的:mem=32M@0xc0000000 mem=192M@0xc4000000,调整为9 ?/ `. c- ~1 c' L
mem=32M@0xc0000000 mem=64M@0xcc000000;. h6 R3 g' n$ J" Q6 S$ n6 c
这样做的目的,是给DSP预留足够的数据空间。
8 ~# q/ t0 x& O. ?4 t: {5 ` 这样改完后,Uboot无法引导LINUX。) u5 Y2 ^- K8 z- [
然后再次断电重启后,启动参数mem_args又恢复为原来的mem=32M@0xc0000000 mem=192M@0xc4000000,我们做的修改丢失了。但这时可以UBOOT引导LINUX;
: P$ E S2 e: l( n; s9 T. x* w( r5 h$ m# M
2. 对DSP端的内存分配,由于我们没有用仿真器,而是用makefile进行程序编译,因此对我们而言内存分配是一个叫config.bld的文件,我们的内存分配方式如下:" R, |! \) U% y+ G& T. J* C. H
* C000_0000 - CFFF_FFFF 1000_0000 ( 256 MB) External Memory0 R" r7 _' I% c8 {: J
* ------------------------------------------------------------------------3 j- x+ y7 ?6 n: d8 x! H/ b9 n
* C000_0000 - C1FF_FFFF 200_0000 ( 32 MB) Linux9 o. e% ~6 ]& `) C+ t8 B
* C200_0000 - C200_FFFF 2_0000 ( 128 KB) SR_0 (ipc)
5 J" C! Q' W5 _3 b; a6 o6 i * C201_0000 - C202_FFFF FE_0000 (15.875MB) SR_1 (data buffers)
- A+ K1 n3 m. j1 o9 O3 h: H' M; j * C300_0000 - CBFF_FFFF 900_0000 ( 160 MB) DSP_PROG (code, data)
- |: l! j) F/ ]1 i/ S4 [8 F * CC00_0000 - CFFF_FFFF 400_0000 ( 64 MB) Linux
3 b# a2 @6 v: U0 M 按照上述内存分配,DSP可以正常编译。
n8 x/ O# N0 d+ w: y 但由于ARM段在修改内存后不能启动(此时 mem=32M@0xc0000000 mem=64M@0xcc000000)" L2 ~# w- |- R+ O2 e7 L
而能启动时(此时mem=32M@0xc0000000 mem=192M@0xc4000000),ARM与DSP在0xc4000000~0xCBFF_FFFF之间有冲突,因此无法加载DSP。
" s! I W/ v6 y3 T) j 因此DSP最终也无法运行。
& c# c% ^8 F0 B( k+ ^" a& O. \5 u
- _3 X$ x. @5 e r
7 J8 Z$ q0 L, L) q另:对于触摸屏失效的解答,没有指导意义。因为冲突就在哪里摆着。且电路都是原来开发板采用的电路。
7 K- P8 Q# Z N( {" V |
|