当前位置: 首页 > backend >正文

QSPI flash xip模式运行

背景:

在做一个项目,调研p-sram当ram用在cadence qspi接口下是否正常,首先用qspi-flash xip模式验证控制器是否支持flash的xip模式。

一、更改步骤:

1.1首先配置链接脚本

默认链接脚本


OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{. = 0xf4000000;. = ALIGN(4);.text : {_stext = .;*(.vectors)*(.text*)*(.rodata .rodata*)  /* read-only data (constants) */. = ALIGN(4);*(.glue*)_etext = . ;}__exidx_start = .;.ARM.exidx  : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }__exidx_end = .;. = ALIGN(8);_edummy = .;/* data sections */.data : {_sdata = .;__ld_real_data_start = .;*(.data*)_edata = .;}. = ALIGN(8);/* bss sections */_sbss = .;.bss (NOLOAD) : {*(.bss .bss.*). = ALIGN(4);}_ebss = .;/*stack sections 4K*/.stack (NOLOAD):{. = ALIGN(64);. = . + 0x400;__stack = .;}_end = .;.pagetable (NOLOAD):{. = ALIGN(16*1024);__pagetable_start = .;. = . + 0x00004000;}.dynsym : { *(.dynsym) }.dynbss : { *(.dynbss) }.dynstr : { *(.dynstr*) }.dynamic : { *(.dynamic*) }.hash : { *(.hash*) }.plt : { *(.plt*) }.interp : { *(.interp*) }.gnu : { *(.gnu*) }
}
_romsize = _edata - _stext;
_ramsize = _end - _stext;

xip链接脚本


OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{. = 0xe0000000;. = ALIGN(4);.text 0xe000000c : {_stext = .;*(.vectors)*(.text*)*(.rodata .rodata*)  /* read-only data (constants) */. = ALIGN(4);*(.glue*)_etext = . ;}__exidx_start = .;.ARM.exidx  : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }__exidx_end = .;. = ALIGN(8);_edummy = .;/* data sections */.data 0xf4000000 : AT ( _edummy ) {_sdata = .;__ld_real_data_start = .;*(.data*)_edata = .;}. = ALIGN(8);/* bss sections */_sbss = .;.bss (NOLOAD) : {*(.bss .bss.*). = ALIGN(4);}_ebss = .;/*stack sections 4K*/.stack (NOLOAD):{. = ALIGN(64);. = . + 0x1000;__stack = .;}_end = .;.pagetable (NOLOAD):{. = ALIGN(16*1024);__pagetable_start = .;. = . + 0x00004000;}.dynsym : { *(.dynsym) }.dynbss : { *(.dynbss) }.dynstr : { *(.dynstr*) }.dynamic : { *(.dynamic*) }.hash : { *(.hash*) }.plt : { *(.plt*) }.interp : { *(.interp*) }.gnu : { *(.gnu*) }
}
_romsize = _edata - _stext;
_ramsize = _end - _stext;

1.2更改控制器代码:

#define QSPI_ENTER_XIP_MODE       ((1 << 7) + (1 << 11) + (0x3 << 12))void qspi_enter_xip_mode(uint32_t base)
{uint32_t value;volatile pstruct_qspi_reg_t addr = (pstruct_qspi_reg_t)base;value = addr->QSPI_CONFIGURATION;value |= QSPI_ENTER_XIP_MODE;addr->QSPI_CONFIGURATION = value;
}

二、使用:

直接跳过image的包头后,PC直接在text段上运行。运行正常。

http://www.xdnf.cn/news/1725.html

相关文章:

  • 树型结构(知识点梳理及例题精讲)
  • 京东商品详情API接口调用技术指南‌
  • OCP证书介绍
  • 小白自学python第二天
  • kubernetes》》k8s》》Heml
  • 深入浅出 Python 协程:从异步基础到开发测试工具的实践指南
  • Linux-01
  • 如何使用 Apache 配置用户主页 ?
  • 如何检测Python项目哪些依赖库没有使用
  • 嵌入模型(Embedding Models)原理详解:从Word2Vec到BERT的技术演进
  • Odoo 中文版安装详解
  • vue3+element-push 实现input框粘贴图片或文本,图片上传。
  • 从 Java 到 Kotlin:在现有项目中迁移的最佳实践!
  • 区间问题大纲(贪心)
  • Linux 基础命令入门指南
  • 240424 leetcode exercises II
  • 2025年Redis分片存储性能优化指南
  • Docker 磁盘占用盘查和清理
  • 与智者同行:京东零售技术人的成长书单
  • 产品经理对于电商接口的梳理||电商接口文档梳理与接入
  • 多回路电表如何革新电力监控?安科瑞技术深度解析
  • Windows上Tomcat 11手动启动startup.bat关闭shutdown.bat
  • 【高频考点精讲】前端接口版本管理:如何优雅处理API版本升级?
  • 算法导论第4章思考题
  • 龙虎榜——20250424
  • onnx注册cpu版flashattention
  • 6.第六章:数据分类的技术体系
  • vscode插件系列-2、认识vscode
  • Java架构师面试:Mysql调优与慢查询定位
  • C++23文本编码革新:迈向更现代的字符处理