从网上买了个2440的开发板,想着自己练练手,结果发现自己的台式机居然没有串,并口,晕了。只好又买了个盗版的jlink。可是不管我怎设置jlink,就是无法连接上。而且想把jlink加到ads中也不成功,总是提示出错。我估计是jlink设置问题。因为j-flash里找不到2440的配置文件,我自己怎么调也不行。上网找了很久,在pudn上(程序员联合开发网)找到个,于是上传源码、注册……(真不明白这个网站搞这么复杂干吗)好容易下载下来。马上加载,发现flash型号不一样,我的是am29lv160db,AMD的。再改过来,连接硬件,有提示id错误,干脆不检测id,(不知道这个检测有什么用)这回连上了,提示连接成功。看看它cpu设置 它添加了19项操作:一开始RESET,10ms。然后18项都是write 32bit,后面跟的数字也没什么规律,我猜是在随机的地址中写随机数。但地址都是0x40000000之后的。32位的2440,理论上有4G的寻址空间,但外部可寻址的空间只有1G,即0x00000000~~0x3fffffff。其余的留给内部的寄存器或其他设备,那这18个write 32bit是不是初始化内部寄存器了?查了查datasheet,发现0x48000000~~0x60000000是留给SFR(特殊功能寄存器),而这里的地址都是在此范围内的。翻了翻开发板自带的文件,终于在2440addr找到这些地址的定义,发现配置文件有的初始化值与datasheet上的不一样:
0x53000000 WTCON,看门狗的控制地址,难怪一开始先把它清零了。
0x4a000008 INTMSK(中断屏蔽寄存器)
初始化应为0xffffffff 屏蔽所有中断
0x4a00001c INTSUBMSK(中断源屏蔽寄存器)
初始化应为0x0000ffff 配置文件0x000007ff 把int_ac97打开了
0x4c000000 LOCKTIME(锁相环计数器)
初始化应为0xffffffff 配置文件0x00ffffff 跟分频有关吧,没搞明白怎么计算的
0x4c000004 MPLLCON(这个没看懂用途)
初始化应为0x00096030 配置文件0x0005c042
0x48000000~~0x48000030是memory control register
0x48000000 BWSCON (设置存储器位宽、延时)
初始化应为0x00000000 配置文件0x22111120
bank6,bank7用32bit bank5,4,3,2 用16bit
bank1用32bit 为什么这么设?
0x48000004~~0x48000018 (BANKCON1~~BANKCON5)
0x4800001c BANKCON6
初始化应为0x18008 配置文件0x18005
sdram RAS~CAS 延时从4clocks变为3clocks
Column address number从8bit变为9bit
0x48000020 BANKCON7 同上
0x48000024 REFRESH (SDRAM刷新控制寄存器)
初始化应为0x00ac0000 配置文件0x008e0459
SDRAM RAS pre-charge Time从4clocks变成2clocks 459是sdram 的刷新计数
0x48000028 BANKSIZE
初始化应为0x0x000000 配置文件0x00000032
SDRAM power down mode enable
SCLK is active only during the access 这两项应该和节能有关
BANK6/7 memory map 映射为128M
0x4800002c MRSRB6 (SDRAM的设置)
无初始值 配置文件0x00000030
脉冲类型为时序的,长度为1。
CAS latency为3clocks
0x48000030 MRSRB7 同上