Wince6.0 AT91SAM9261的BSP問題
1 WINCE600PLATFORMCOMMONSRCSOCATMELCOMMONBOOTLOADER
GernericEBOOTutils.c文件報(bào)error C2220: warning treated as error - no 'object' file generated錯(cuò)誤
解決辦法:將該文件另存為unicode編譯格式
2 WINCE600PLATFORMAT91SAM9261EKSRCBOOTLOADERFirstBootdbgu.h文件里的#define TIME_OUT_CHAR '?報(bào)error C2001: newline in constant錯(cuò)誤
解決辦法:將#define TIME_OUT_CHAR '?改為#define TIME_OUT_CHAR '?'
3 開機(jī)花屏
原因:在LCD驅(qū)動(dòng)中只申請(qǐng)了地址空間,沒有對(duì)顯存進(jìn)行初始化,代碼在E:WINCE600PLATFORMAT91SAM9261EKsrcDRIVERSAT91SAM9261DisplayGraphic.cpp
GPE* GetGPE()函數(shù)的以下代碼中
if ( RegQryValEx(hKey, L"VRAMAddress", 0, &dwType, (LPBYTE)&dwVideoMemStartAddress, &dwBLen) != ERROR_S?SS )
{
// Allocate a bfer in common SDRAM
dwVideoMemSize = dwVideoMemWidth * dwVideoMemHeight * dwBpp/8;
VA_VideoMem = HalAllocateCommonBfer(&myDmaAdapter, dwVideoMemSize, &PA_VideoMem, false);
dwVideoMemStartAddress = PA_VideoMem.LowPart;
DEBUGMSG(GPE_ZONE_HW, (TEXT("Video memory %d kB in SDRAM"), dwVideoMemSize /1024));
}
解決辦法:
1)將if條件注掉,在大括號(hào)內(nèi)初始化系統(tǒng)分配的顯存
{
// Allocate a bfer in common SDRAM
dwVideoMemSize = dwVideoMemWidth * dwVideoMemHeight * dwBpp/8;
VA_VideoMem = HalAllocateCommonBfer(&myDmaAdapter, dwVideoMemSize, &PA_VideoMem, false);
dwVideoMemStartAddress = PA_VideoMem.LowPart;
DEBUGMSG(GPE_ZONE_HW, (TEXT("Video memory %d kB in SDRAM"), dwVideoMemSize /1024));
unsigned int cnt;
for(cnt=0;cnt { *(unsigned char*)((unsigned int)VA_VideoMem+cnt) = 0; } } 2)將注冊(cè)表中的物理地址映射成虛擬地址,再初始化