ST意法半导体
直播中

石飞鹏

7年用户 995经验值
私信 关注
[问答]

如何从外部QSPI运行部分程序?

我会使用便宜的 STM32F750N8-DISCO 评估板来运行 ETH/I2C/SPI/IR/编码器/触摸屏应用程序,但 64K 的闪存对我的程序来说太小了。
现在我的程序运行带有 1Mbit 闪存的 STM32F746G-DISCO,它使用大约 450K。
我还使用 QSPI N25Q128A 来存储静态图像。
是否可以从 QSPI 启动程序或在 QSPI 中移动部分程序以节省闪存空间?
对于图像,我使用以下方法。
  • #include
  • #pragma pack(push, 1)
  • typedef struct Center2_tagBITMAPFILEHEADER {
  •   uint16_t   bfType;
  •   uint32_t   bfSize;
  •   uint16_t   bfReserved1;
  •   uint16_t   bfReserved2;
  •   uint32_t   bfOffBits;
  • } Center2_BITMAPFILEHEADER; // size is 14 bytes
  • typedef struct Center2_tagBITMAPINFOHEADER {
  •   uint32_t  biSize;
  •   uint32_t  biWidth;
  •   uint32_t  biHeight;
  •   uint16_t  biPlanes;
  •   uint16_t  biBitCount;
  •   uint32_t  biCompression;
  •   uint32_t  biSizeImage;
  •   uint32_t  biXPelsPerMeter;
  •   uint32_t  biYPelsPerMeter;
  •   uint32_t  biClrUsed;
  •   uint32_t  biClrImportant;
  • } Center2_BITMAPINFOHEADER; // size is 40 bytes
  • typedef struct Center2_tag_Struct {
  •   // offset 0, size 14
  •   Center2_BITMAPFILEHEADER fileHeader;
  •   // offset 14, size 40
  •   Center2_BITMAPINFOHEADER infoHeader;
  •   // offset 54, size 129600 words
  •   uint16_t data[129600];
  • } Center2_Struct;
  • #ifndef IMG_NO_DATA
  • #if defined ( __ICCARM__ )
  • #pragma location = ".textqspi"
  • #else
  • __attribute__((section(".textqspi")))
  • #endif
  • const Center2_Struct Center2 = {
  • ...
  • }
  • #else
  • extern const Center2_Struct Center2;
  • #endif
  • #pragma pack (pop)








我不为任何相关方工作,这是一项超过 5 分钟的任务。
设置您的链接描述文件或分散文件以提取 QSPI 地址空间中的所有只读代码和数据,即 0x90000000 +32MB,或其他。
查找用于控制传输和内存启动的 ISP 和 BSP 示例,并移交到 QSPI 中的独立映像。不要重新初始化时钟或内存,以免切断站立的腿。
STM32Cube_FW_H7_V1.8.0ProjectsSTM32H750B-DKExamplesQSPIQSPI_MemoryMappedDual
STM32Cube_FW_H7_V1.8.0ProjectsSTM32H743I-EVALExamplesQSPIQSPI_ExecuteInPlace
STM32Cube_FW_H7_V1.8.0DriversBSPSTM32H750B-DKstm32h750b_discovery_qspi.c
STM32Cube_FW_H7_V1.8.0ProjectsSTM32H750B-DKApplicationsUSB_HostMSC_Standalonereadme.txt
“在这个应用程序中,代码从 QSPI 外部存储器执行,而数据在内部 SRAM 存储器中。”

更多回帖

发帖
×
20
完善资料,
赚取积分