|
|
板凳

楼主 |
发表于 2017-7-12 09:57:56
|
只看该作者
本帖最后由 newdsp 于 2017-7-12 10:00 编辑 . o$ I8 N/ q: l6 K9 K
3 ?2 O X$ _% _/ i6 p9 k1.对ARM端的内存分配,我们按照文档《6-2-U-Boot启动参数详解.pdf》中的说明,调整了Uboot中ARM的内存分配;
, D/ F+ m% Z. p% f4 H 将启动参数mem_args由原来的:mem=32M@0xc0000000 mem=192M@0xc4000000,调整为
. {! f& p* _+ o! p1 l' T# ^ mem=32M@0xc0000000 mem=64M@0xcc000000;, _, A+ m% N/ { l! B5 k! [
这样做的目的,是给DSP预留足够的数据空间。
, E9 `3 j! f; b( R( I2 J1 D 这样改完后,Uboot无法引导LINUX。
3 ^! u$ W8 } z. r( a+ x 然后再次断电重启后,启动参数mem_args又恢复为原来的mem=32M@0xc0000000 mem=192M@0xc4000000,我们做的修改丢失了。但这时可以UBOOT引导LINUX;
2 y; V# o. b- J4 Q# @, F- L
2 W& U O3 ?8 l6 D2. 对DSP端的内存分配,由于我们没有用仿真器,而是用makefile进行程序编译,因此对我们而言内存分配是一个叫config.bld的文件,我们的内存分配方式如下:
* O0 \; }0 s1 w0 X * C000_0000 - CFFF_FFFF 1000_0000 ( 256 MB) External Memory1 @0 `" R5 L. v2 S1 w4 S8 V
* ------------------------------------------------------------------------( w: g. u, u! b% O. W6 g4 }: w1 D
* C000_0000 - C1FF_FFFF 200_0000 ( 32 MB) Linux" G0 v! u. ]- c( u
* C200_0000 - C200_FFFF 2_0000 ( 128 KB) SR_0 (ipc)+ r9 y5 \7 M/ v( K. Y
* C201_0000 - C202_FFFF FE_0000 (15.875MB) SR_1 (data buffers)1 {( P, E; O3 o) o
* C300_0000 - CBFF_FFFF 900_0000 ( 160 MB) DSP_PROG (code, data)" |9 H( u* Z! U8 J
* CC00_0000 - CFFF_FFFF 400_0000 ( 64 MB) Linux
! h O5 P- C. ~* k 按照上述内存分配,DSP可以正常编译。
1 U* h4 a: n% J/ Q. j/ H 但由于ARM段在修改内存后不能启动(此时 mem=32M@0xc0000000 mem=64M@0xcc000000)/ @! C1 i0 S0 W* u5 M3 s2 Y
而能启动时(此时mem=32M@0xc0000000 mem=192M@0xc4000000),ARM与DSP在0xc4000000~0xCBFF_FFFF之间有冲突,因此无法加载DSP。
5 t7 t. d+ D0 a$ W 因此DSP最终也无法运行。
5 a3 _$ D- J# C% T) I% ^5 M, M: j2 p; t8 E" T
3 ]+ N% ?/ Z4 |1 h另:对于触摸屏失效的解答,没有指导意义。因为冲突就在哪里摆着。且电路都是原来开发板采用的电路。
7 U- @( y& q7 ]( c |
|