This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
1、 目的:我板子使用的是729mhz的DM6467,但是我的软件使用的EVM板的,因此实际工作频率为,ARM core297mhz,DSP core 529mhz。所以我想修改我的软件,使工作频率为ARM core364.5mhz,DSP core 729mhz。
2、 我的修改方法如下:
a、 在ubl的platfrom.asm中,添加如下代码:
LDR R6, PLL_1_PLLM ;/* PLL_2 multiplier control register */
MOV R2, #0x1a ;/* */
STR R2, [R6] ;/* 27MHz * 27 = 729MHz */
B、修改u-boot中的配置,如下:
#define CONFIG_SYS_CLK_FREQ 364500000 /* Arm Clock frequency */
#define CFG_TIMERBASE 0x01C21400 /* use timer 0 */
#define CFG_HZ 182250000 /* Timer Input clock freq */
3、 现象:
1)、arm实际工作频率为364mhz,以下为启动打印信息:
NAND device: Manufacturer ID: 0x20, Chip ID: 0xf1 (ST Micro NAND 128MiB 3,3V 8-bit)
128 MiB
In: serial
Out: serial
Err: serial
ARM Clock :- 364MHz
DDR Clock :- 297MHz
2)、nand flash出错,同时根文件系统挂载出错,打印信息如下:
Scanning device for bad blocks
Bad eraseblock 0 at 0x00000000
Bad eraseblock 1 at 0x00020000
Bad eraseblock 2 at 0x00040000
……
Bad eraseblock 1020 at 0x07f80000
Bad eraseblock 1021 at 0x07fa0000
Bad eraseblock 1022 at 0x07fc0000
Bad eraseblock 1023 at 0x07fe0000
No filesystem could mount root, tried: cramfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)
3)、如果降低频率,比如把PLL_1_PLLM修改为0x14或者0x13,系统都能够正常启动。
4、 分析:
我的NAND flash的型号为:NAND01GW3B2B ,NAND flash出错,并且打印所有的块都是坏块。然而,我的nand flash在频率为297mhz的时候是能够正常工作的,所以肯定不是nand flash本身的问题。
由于ARM core的工作频改为364.5mhz以后,那么EMIFA的工作频率也升高了,因为EMIFA的频率为SYSCLK3的固定4分频。所以我怀疑是速度不匹配导致的NAND flash出错。所以我获取到EMIFA接口中的A1CR、A2CR、A3CR、A4CR寄存器的值如下:
A1CR = 1073741820 ,A2CR = 1073741820,A3CR = 1073741820,A4CR = 1073741820
即都是0x3FFFFFFC,与ubl中的配置一样:
CSL_EMIF_0_REGS->AB1CR = 0x3FFFFFFC;//8 bit->00
那么,问题出来了,由于在ubl中、u-boot中、内核中获取到的A1CR、A2CR、A3CR、A4CR寄存器的值都为0x3FFFFFFC,但在ubl以及u-boot中,NAND flash都能够正常工作,只有在内核中不能正常工作,所以我所怀疑的速度的问题就不复存在了。但是在内核中又为什么不能正常工作呢?我不得而知。
5、 问题:
1、 我应该怎么修改才能让我的板子工作在729mhz的频率下呢?
2、 按照我的配置,我只是把频率升高,其它任何东西都没变,为什么NAND flash就不能正常工作呢?而我降低频率却可以正常工作。