有两个问题请教下 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 执行难度太大 暂时放弃了 首先你要确认QSPI能不能直接映射到内存空间,能的话你定义才有用,否则你每次用到这些数据都要手动去读QSPI了。如果能映射,那么你直接写成const,编译时自动进rodata。当然此时你还是得想办法弄个启动器,从boot启动之后打开QSPI内存映射,然后跳进user app地址。即,fsbl->qspi remap->remap ptr,然后加载.data,清.bss。。此时你有必要开cache,要不然会非常非常慢。 用单片机思维开发ZYNQ是要吃亏的,在这样的系统上跑个LINUX是很舒服的,而且网络、文件和任务管理的问题都解决了,统一的C/C++编程和大量的开源软件让你爽掉大牙,移植一个JAVA找几个JAVA程序员来写程序,自己当监工爽掉门牙。当然,你为了几块钱的DDR3,就当我啥都没有说吧。 本帖最后由 ackyee 于 2022-3-3 14:27 编辑
dellric 发表于 2022-3-3 13:49
用单片机思维开发ZYNQ是要吃亏的,在这样的系统上跑个LINUX是很舒服的,而且网络、文件和任务管理的问题都 ...
(引用自3楼)
{:lol:}我只是点个屏顺带做个电源管理,没必要上linux 吧{:lol:} 裸奔开发速率最高了
核心功能都用 PL 端跑了
也不全为了省省是目标,折腾的目的也是为了更快的熟悉这个平台 本帖最后由 ackyee 于 2022-3-3 14:39 编辑
wye11083 发表于 2022-3-3 13:20
首先你要确认QSPI能不能直接映射到内存空间,能的话你定义才有用,否则你每次用到这些数据都要手动去读QSPI ...
(引用自2楼)
恩恩 暂时先放弃这个方案了,用传统带DDR的先设计下去,回头有时间再好好折腾折腾 wiki上有个很详尽的方法 是直接 FLASH 上加载代码的,回头试试
折腾3天了,发现越折腾 里面的学问越多,不过也算对底层稍微了解了点, 还是有精力的时候再继续弄这个的 ocm好像是192k不够用? shiva_shiva 发表于 2022-3-3 14:55
ocm好像是192k不够用?
(引用自6楼)
OCM要负责 FSBL 的启动
然后我的代码里要加入家公司的LOGO 作切换用,所以OCM 不够用了 ackyee 发表于 2022-3-3 14:37
恩恩 暂时先放弃这个方案了,用传统带DDR的先设计下去,回头有时间再好好折腾折腾 wiki上有个很详尽的方 ...
(引用自5楼)
直接在PL端搞个AXI-BRAM,在PS端地址内存映射读写就OK啦。 本帖最后由 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 不到万不得已,不要用无DDR模式,太费劲
页:
[1]