ackyee 发表于 2022-3-3 09:20:14

有两个问题请教下 ZYNQ 裸奔时如何将静态数组定义到FLASH上

本帖最后由 ackyee 于 2022-3-3 12:50 编辑

单片机开发的时候经常有字库等数组 定义到 CODE 区域,不占用RAM的
zynq PS 裸奔情况下 有类似的功能吗?
类似 51的unsigned char code   和stm32 static const
另外 PS 裸奔情况下 好像找不到 _NOP_ 函数   ,这个ZYNQ的库里有的吗?
在做无DDR 的 代码的时候    RAM空间有限 得把常量都丢到 FLASH 里才行


经过一个早上的实验,   ZYNQ所有的PS部分代码都是从FLASH 预加载的,也就是不管是定义了CONST 还是没有定义,都是会消耗RAM空间的

如果要进阶操作 代码从FLASH 执行难度太大 暂时放弃了

wye11083 发表于 2022-3-3 13:20:16

首先你要确认QSPI能不能直接映射到内存空间,能的话你定义才有用,否则你每次用到这些数据都要手动去读QSPI了。如果能映射,那么你直接写成const,编译时自动进rodata。当然此时你还是得想办法弄个启动器,从boot启动之后打开QSPI内存映射,然后跳进user app地址。即,fsbl->qspi remap->remap ptr,然后加载.data,清.bss。。此时你有必要开cache,要不然会非常非常慢。

dellric 发表于 2022-3-3 13:49:00

用单片机思维开发ZYNQ是要吃亏的,在这样的系统上跑个LINUX是很舒服的,而且网络、文件和任务管理的问题都解决了,统一的C/C++编程和大量的开源软件让你爽掉大牙,移植一个JAVA找几个JAVA程序员来写程序,自己当监工爽掉门牙。当然,你为了几块钱的DDR3,就当我啥都没有说吧。

ackyee 发表于 2022-3-3 14:14:10

本帖最后由 ackyee 于 2022-3-3 14:27 编辑

dellric 发表于 2022-3-3 13:49
用单片机思维开发ZYNQ是要吃亏的,在这样的系统上跑个LINUX是很舒服的,而且网络、文件和任务管理的问题都 ...
(引用自3楼)

{:lol:}我只是点个屏顺带做个电源管理,没必要上linux 吧{:lol:} 裸奔开发速率最高了

核心功能都用 PL 端跑了

也不全为了省省是目标,折腾的目的也是为了更快的熟悉这个平台

ackyee 发表于 2022-3-3 14:37:19

本帖最后由 ackyee 于 2022-3-3 14:39 编辑

wye11083 发表于 2022-3-3 13:20
首先你要确认QSPI能不能直接映射到内存空间,能的话你定义才有用,否则你每次用到这些数据都要手动去读QSPI ...
(引用自2楼)

恩恩 暂时先放弃这个方案了,用传统带DDR的先设计下去,回头有时间再好好折腾折腾 wiki上有个很详尽的方法 是直接 FLASH 上加载代码的,回头试试

折腾3天了,发现越折腾 里面的学问越多,不过也算对底层稍微了解了点, 还是有精力的时候再继续弄这个的

shiva_shiva 发表于 2022-3-3 14:55:15

ocm好像是192k不够用?

ackyee 发表于 2022-3-3 15:03:59

shiva_shiva 发表于 2022-3-3 14:55
ocm好像是192k不够用?
(引用自6楼)

OCM要负责 FSBL 的启动

然后我的代码里要加入家公司的LOGO 作切换用,所以OCM 不够用了

denike 发表于 2022-3-3 15:08:49

ackyee 发表于 2022-3-3 14:37
恩恩 暂时先放弃这个方案了,用传统带DDR的先设计下去,回头有时间再好好折腾折腾 wiki上有个很详尽的方 ...
(引用自5楼)

直接在PL端搞个AXI-BRAM,在PS端地址内存映射读写就OK啦。

ackyee 发表于 2022-3-3 15:10:08

本帖最后由 ackyee 于 2022-3-3 15:12 编辑

denike 发表于 2022-3-3 15:08
直接在PL端搞个AXI-BRAM,在PS端地址内存映射读写就OK啦。
(引用自8楼)

{:dizzy:} 我想说 PL端的BLOCKRAM 资源用到98%了 DSP资源用了100%{:cry:}   还是乖乖用DDR

yerrmin 发表于 2022-3-3 19:46:23

不到万不得已,不要用无DDR模式,太费劲
页: [1]
查看完整版本: 有两个问题请教下 ZYNQ 裸奔时如何将静态数组定义到FLASH上