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

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段上运行。运行正常。

相关文章:

  • 四、Python编程基础04
  • 《宝可梦明耀之星》正式登陆中国大陆!4月15日起陆续上市!
  • 母婴店商城小程序制作哪家强?告别传统经营,拥抱线上新机遇
  • TypeScript 开发实战:如何安全替换字符串中的关键字
  • 阿里云99机器总是宕机,实测还是磁盘性能差
  • 多路转接epoll原理详解
  • 应用信息1.13.0发布
  • verilog和system verilog常用数据类型以及常量汇总
  • SVN钩子脚本获取日志中文乱码解决办法
  • Android 混合开发实战:统一 View 与 Compose 的浅色/深色主题方案
  • 嵌入模型(Embedding Models)原理详解:从Word2Vec到BERT的技术演进
  • MyBatis操作数据库---从入门到理解
  • 硬件工程师面试常见问题(7)
  • LeetCode-Hot100
  • CentOS 7 磁盘分区详细教程
  • 【框架学习】Spring AI-功能学习与实战(一)
  • SpringBoot | 构建客户树及其关联关系的设计思路和实践Demo
  • 【CAPL实战:以太网】对IPv4报文的Payload部分进行分片并创建分片包
  • Vue 的单文件组件(.vue 文件)script 标签的使用说明
  • AI赋能安全调度系统:智能升级与功能跃迁
  • 蓝佛安:中方将采取更加积极有为的宏观政策,有信心实现2025年的5%左右增长目标
  • 怎样正确看待体脂率数据?或许并不需要太“执着”
  • 默茨在德国联邦议院第一轮投票中未能当选总理
  • 黄道炫:南京102天——黄镇球的防空日记
  • 郭旭涛转任河北省科协党组书记、常务副主席,曾任团省委书记
  • 李学明谈笔墨返乡:既耕春圃,念兹乡土