相同的硬件总线设备接口、流驱动时,在Micro2440-20090228(flash:64M)的核心板,带硬件设备都正常工作,但在micro2440-20100204(flash:256M)的,工作时死机,总线接口无硬件设备也一样,具体操作是:
一、在flash:64M的核心板,20090228版本BSP工程文件时,正常读与写;
1、在\micro2440200902光盘文件\WindowsCE5.0\smdk2440目录下\NBOOT\2440addr.h中增加物理地址定义,
#define bus_base (*(volatile unsigned *)(0x08000000))
#define bus0 (*(volatile unsigned *)(bus_base+0x00))
#define bus1 (*(volatile unsigned *)(bus_base+0x04))
#define bus2 (*(volatile unsigned *)(bus_base+0x08))
#define bus3 (*(volatile unsigned *)(bus_base+0x0C))
...
2、在smdk2440\INC\s2440a.h中增加
#define NGCS1_BASE 0xA2000000 //82000000
typedef struct {
unsigned int bus0; //00
unsigned int bus1; //04
unsigned int bus2; //08
unsigned int bus3; //0C
...
}busreg;
3、再写一个类似LEDDriver.cpp的驱动,进行读与写操作,并编译、下载,
4、用C#写应用程序;
二、操作在flash:256M的核心板,20100817版本BSP工程文件时,读写总线接口有时死机(不带硬件设备都会死),
1、在2010-06-19的NBOOT\244X_addr.h中增加物理地址定义并编译,之后再将Nboot.bin下载到板上,
#define bus_base (*(volatile unsigned *)(0x08000000))
#define bus0 (*(volatile unsigned *)(bus_base+0x00))
#define bus1 (*(volatile unsigned *)(bus_base+0x04))
#define bus2 (*(volatile unsigned *)(bus_base+0x08))
#define bus3 (*(volatile unsigned *)(bus_base+0x0C))
.. .
2、在mini2440\\Src\Drivers\LEDdriver\s2440.h中增加
#define NGCS1_BASE 0xA2000000 //82000000
typedef struct {
unsigned int bus0; //00
unsigned int bus1; //04
unsigned int bus2; //08
unsigned int bus3; //0C
.. .
}busreg;
3、在LEDDriver.cpp驱动中增加读与写操作的程序,并编译、下载,
4、用C#写应用程序;
三、总结:操作相同的总线设备硬件,
1、用64M的核心板正常,
2、用256M的核心板好象总线有冲突,而引起不稳定,读/写数据时(外部KEY/LED)没有变化,似乎定义#define bus0 (*(volatile unsigned *)(bus_base+0x00)) 并没有定义到,还是... ?
烦请各位朋友们帮助,先谢谢了!