传智播客旗下技术交流社区北京校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[我的日记] AT91SAM9261的BSP问题

© 庭院深深深几许 金牌黑马   /  2019-5-13 09:45  /  138 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1 WINCE600\PLATFORM\COMMON\SRC\SOC\ATMEL\COMMON\BOOTLOADER
  GernericEBOOT\utils.c文件报error C2220: warning treated as error - no 'object' file generated错误
  解决办法:将该文件另存为unicode编译格式
  2 WINCE600\PLATFORM\AT91SAM9261EK\SRC\BOOTLOADER\FirstBoot\dbgu.h文件里的#define TIME_OUT_CHAR '?报error C2001: newline in constant错误
  解决办法:将#define TIME_OUT_CHAR '?改为#define TIME_OUT_CHAR '?'
  3 开机花屏
  原因:在LCD驱动中只申请了地址空间,没有对显存进行初始化,代码在E:\WINCE600\PLATFORM\AT91SAM9261EK\src\DRIVERS\AT91SAM9261Display\Graphic.cpp
  GPE* GetGPE()函数的以下代码中
  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条件注掉,在大括号内初始化系统分配的显存
  {
  // 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)将注册表中的物理地址映射成虚拟地址,再初始化

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马