金牌会员
 
- 积分
- 2099
- 金钱
- 2099
- 注册时间
- 2017-2-11
- 在线时间
- 306 小时
|
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
|
|