|
板凳

楼主 |
发表于 2017-7-12 09:57:56
|
只看该作者
本帖最后由 newdsp 于 2017-7-12 10:00 编辑 " M( c/ s ]# O% E* A0 S
human 发表于 2017-7-12 09:18
+ X$ q9 O% o$ k5 }! D5 K1 v1.EMIFA的BA1/BA0和触摸屏管脚连接是没有冲突的,可能是软件配置问题或信号干扰。
- A9 {; m, _- |. F2.可以, 修改方法:修改 ... , C, w7 q' l( q" S2 H
1.对ARM端的内存分配,我们按照文档《6-2-U-Boot启动参数详解.pdf》中的说明,调整了Uboot中ARM的内存分配;
- k+ b+ U- O. A ~- E' X 将启动参数mem_args由原来的:mem=32M@0xc0000000 mem=192M@0xc4000000,调整为8 N& V" V% k) L7 J+ Z8 M
mem=32M@0xc0000000 mem=64M@0xcc000000;4 ^9 M% v1 Y7 E$ E4 P
这样做的目的,是给DSP预留足够的数据空间。7 e* {: X" {5 n+ a" R6 ~$ }/ t( P
这样改完后,Uboot无法引导LINUX。6 N6 N* N! z7 c: A7 I/ h2 \; K
然后再次断电重启后,启动参数mem_args又恢复为原来的mem=32M@0xc0000000 mem=192M@0xc4000000,我们做的修改丢失了。但这时可以UBOOT引导LINUX;
3 `' C9 g8 \, ]7 y. i
6 m, _9 v3 a# X' a# N2. 对DSP端的内存分配,由于我们没有用仿真器,而是用makefile进行程序编译,因此对我们而言内存分配是一个叫config.bld的文件,我们的内存分配方式如下:5 s% o: [. v# I; H1 x X8 j
* C000_0000 - CFFF_FFFF 1000_0000 ( 256 MB) External Memory
* z" u" Y& {+ ? * ------------------------------------------------------------------------9 n+ D% U5 y$ k/ g5 V
* C000_0000 - C1FF_FFFF 200_0000 ( 32 MB) Linux* f ?( l; M N# v! s: {7 x J
* C200_0000 - C200_FFFF 2_0000 ( 128 KB) SR_0 (ipc)
$ q4 C# l6 s2 y4 c/ u$ W) a) Y$ t; | * C201_0000 - C202_FFFF FE_0000 (15.875MB) SR_1 (data buffers)4 d- ]1 } @* s, p! O- }
* C300_0000 - CBFF_FFFF 900_0000 ( 160 MB) DSP_PROG (code, data)
$ R9 _4 U/ y; x/ O# `/ z+ g5 ~ * CC00_0000 - CFFF_FFFF 400_0000 ( 64 MB) Linux0 o5 |. r/ m8 C& f. V
按照上述内存分配,DSP可以正常编译。
* h: B. g8 a% q j 但由于ARM段在修改内存后不能启动(此时 mem=32M@0xc0000000 mem=64M@0xcc000000)5 d5 C- s' l( D6 U4 ]) P
而能启动时(此时mem=32M@0xc0000000 mem=192M@0xc4000000),ARM与DSP在0xc4000000~0xCBFF_FFFF之间有冲突,因此无法加载DSP。
. } I! i! y6 j1 P" [' ?6 a 因此DSP最终也无法运行。
9 X. ?; D: M% {( U4 b: r/ N0 r$ v% [. D
/ Z1 n+ m3 ^! T: k$ r* k6 i另:对于触摸屏失效的解答,没有指导意义。因为冲突就在哪里摆着。且电路都是原来开发板采用的电路。
& Z) n9 Z8 }* M$ W3 p" a g8 ]4 i |
|