当前位置: 首页 > 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赋能安全调度系统:智能升级与功能跃迁
  • 美称中美芬太尼问题谈判但中方不够真诚,外交部回应
  • 韩国首尔江南区一大型商场起火,消防部门正在灭火中
  • 潘功胜:央行将实施好适度宽松的货币政策,推动中国经济高质量发展
  • 银行板块整体走强,工行、农行、中行股价再创新高
  • 商务部召开外资企业圆桌会
  • 中国海外宏洋集团:一季度经营溢利同比降48.6%,密切关注行业收并购机会等