在调试时首先要打开串口调试信息,我的开发板是mini2440,打开串口调试信息,只需要修改..\src\inc\option.h的文件,选择:#define KITL_SERIAL_UART0
下面,是我在实际的开发过程中遇到的一些问题,希望此文能给一些同样遇到下面这些错误的朋友一些帮助……
1、错误代码:CEFilter error. Missing "@CESYSGEN IF" statement(s) detected.
解决方法:删除..BSP\Src\Common DIRS file中的:
“# @CESYSGEN ENDIF CE_MODULES_SDNPCID_IMGUPD”
2、错误代码:U1073: don't know how to make XXXXXXX
解决方法:
修改相应的source文件,看看下面两项是否齐全:
TARGETLIBS=\
$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
SOURCELIBS=$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\ceddk.lib
如果不全,补全它。
3、错误代码:local function definitions are illegal
解决方法:程序中有漏写了大括号,找到该位置并补全它
4、错误代码:驱动编译通过,加载驱动时出现错误
(1)VirtualAlloc 和VirtualCopy调用失败
(2)Exception 'Data Abort' (4): Thread-Id=00d60002(pth=83cc7464), Proc-Id=00400002(pprc=82008308) 'NK.EXE', VM-active=00d70006(pprc=83cbae88) 'udevice.exe'
PC=c0821744(mykey.dll+0x00001744) RA=c0821734(mykey.dll+0x00001734) SP=d042e938, BVA=d09d0060
Exception 'Raised Exception' (-1): Thread-Id=00d60002(pth=83cc7464), Proc-Id=00400002(pprc=82008308) 'NK.EXE', VM-active=00d70006(pprc=83cbae88) 'udevice.exe'
PC=c003b6c8(k.coredll.dll+0x0001b6c8) RA=8023848c(kernel.dll+0x0000648c) SP=d042e1d4, BVA=ffffffff
(3)测试应用程序中CreateFile失败,用GetLastError返回的错误代码为:55
解决方法:
错误说明:虚拟分配地址时出错,导致后面的数据访问出现错误。VirtualCopy中第二个参数要用虚拟地址,而不是物理地址,所以把把第二个参数S3C2440A_BASE_REG_PA_IOPORT改为IOP_BASE则可以了。如果要用物理地址(例如驱动访问cpu寄存器),则第三个参数则要加上PAGE_PHYSICAL,并且第二个参数要除以8(>>8)。
#define S3C2440A_BASE_REG_PA_IOPORT 0x56000000
#define IOP_BASE 0xB1600000
修改前:
//GPIO virtual allocation
IO_REG=(S3C2440A_IOPORT_REG *)VirtualAlloc(0,sizeof(S3C2440A_IOPORT_REG),
MEM_RESERVE,PAGE_NOACCESS);
if(!IO_REG) RETAILMSG(debug,(TEXT("gpg virtual allocation failure.\r\n")));
else {
VirtualCopy(IO_REG,(S3C2440A_IOPORT_REG *)S3C2440A_BASE_REG_PA_IOPORT,
sizeof(S3C2440A_IOPORT_REG),PAGE