金牌会员 
   
	- 积分
 - 2107
 
        - 金钱
 - 2107 
 
       - 注册时间
 - 2017-2-11
 
      - 在线时间
 - 307 小时
 
 
 
 | 
 
20金钱 
 本帖最后由 jiangyy 于 2022-5-6 21:11 编辑  
 
一、将下载算法的文件STM32F767_W25Q256.stldr放入到C:\Drivers\STMicroelectronics\STM32CubeIDE_1.9.0\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.0.200.202202231230\tools\bin\ExternalLoader 
 
打开调试设置参数,如下: 
 
 
 
二、增加外部flash(W25Q)和外部SDRAM 
编写链接文件 STM32F767IGTX_FLASH.ld,代码如下: 
编译结果如下: 
 
 
 
 
可以看到flash和SDRAM内存空间大小已经显示出来,编译不报错,但是SDRAM使用为0,这看起来不正常,可以正常下载进去,但是板子跑不起来,仿真进入hal.initialize()的Bitmap::setCache((uint16_t*)(Bank5_SDRAM_ADDR+ frameSize*3),BITMAP_CACHE_SIZE,1)这一步就进入ardFault_Handler(硬件错误中断))。 
 
 
- void touchgfx_init()
 
 - {
 
 - Bitmap::registerBitmapDatabase(BitmapDatabase::getInstance(), BitmapDatabase::getInstanceSize());
 
 - TypedText::registerTexts(&texts);
 
 - 文本::设置语言(0);
 
  
- FontManager::setFontProvider(&fontProvider);
 
  
- FrontendHeap& heap = FrontendHeap::getInstance();
 
 - /*
 
 - * 我们需要获取上面的引用来初始化前端堆。
 
 - */
 
 - (空)堆;
 
  
- /*
 
 - * Initialize TouchGFX
 
 - */
 
 - hal.initialize();</font>
 
 - }
 
  复制代码 我怀疑是touchgfx初始化申请内存没成功导致,代码如下(正点原子的tougfx例程代码):- void TouchGFXHAL::initialize()
 
 - {
 
 -     // Calling parent implementation of initialize().
 
 -     //
 
 -     // To overwrite the generated implementation, omit call to parent function
 
 -     // and implemented needed functionality here.
 
 -     // Please note, HAL::initialize() must be called to initialize the framework.
 
  
-     TouchGFXGeneratedHAL::initialize();
 
 -     uint32_t frameSize = DISPLAY_HEIGHT * DISPLAY_WIDTH * 2;
 
 -         setFrameBufferStartAddresses((void *)Bank5_SDRAM_ADDR,(void *)(Bank5_SDRAM_ADDR + frameSize),(void *)(Bank5_SDRAM_ADDR + frameSize * 2));
 
 -         setFrameRateCompensation(true);
 
  
-         //setFingerSize(1);
 
 -         //setTouchSampleRate(1);
 
  
-         //kc.init();
 
 -         //setButtonController(&kc);
 
  
-         //图片缓存功能
 
 -         #define BITMAP_CACHE_SIZE        0x1400000                
 
 -         W25QXX_Init();
 
 -         Bitmap::setCache((uint16_t*)(Bank5_SDRAM_ADDR+ frameSize*3),BITMAP_CACHE_SIZE,1);
 
 -         Bitmap::cacheAll();
 
  
-         HAL_GPIO_WritePin(LCD_BL_GPIO_Port,LCD_BL_Pin,GPIO_PIN_SET);
 
 - }
 
  复制代码 
 
 
因为Bank5_SDRAM_ADDR这个宏定义指向的是((u32)(0XC0000000)),但是IDE应该是不识别这个地址段,请问论坛的哪位大神告知一下,如何更改?是不是这个问题导致的?:handshake 
 
 
 
 
 |   
 
 
 
 
 
 |