Cost down的方式

Rigel平台代码优化
针对Rigel平台资源受限的问题,本文介绍了如何通过代码重构及合理分配Flash与SDRAM空间来优化程序,确保单线程环境下部分代码能在Flash上运行,以减小SDRAM占用。

   由于Rigel的成本问题,其flash有512K,而SDRam只有2M. 要将code压缩在这样的空间包括两个工作:

  1.  二进制<512 K
  2. SDRam必须小于2M,越小越好

    采用工具,将SDRam刷为特殊的值,将当前的bin运行在FPGA之上,运行一段时间后,将SDRam dump出来检查其占用的SDRam空间是否足够小。

 

    占用的空间如下:

                                   512k       bin                    flash        

                                   2M         .BSS/.Rodata    SDRam

                                                  .text                  SDRam

                                                  .data                 SDRam

                                                  stack                SDRam

                                                  system pool      SDRam

                                                  hd        pool       SDRam

 

    在代码中的嵌套,rodata等进行refactor的同时,主要想利用Flash的空余空间。做一个搬家的工作。

 

也就是说想让部分代码在flash上运行,这样就可以减少.text和data段的大小。但是由于flash为串行接口,难以实现同步,也就是说如果线程调度(从flash读取指令)和Application向flash写之间,无法进行同步(向flash写一些用户信息,频道号等用户数据)。在系统中可以通过互斥锁的方式实现flash的串行访问,但是cpu调度指令无法受控。所以要在flash上运行程序必须有严格的要求:单线程,无进程调度。所以,可以认为在OS启动之前的很多工作,都可以在Flash上工作。

 

但是这些函数可能有的在OS启动前被调用,有的在OS后备调用。所以必须将这种情况的函数都放到SDRAM中,而仅在OS启动前调用的函数放在FLASH中。

所以首要任务,找出这些函数,并将其打上__attribute__((section (".flashtext")))标签,而在ld脚本中,将.flashext代码都放在flash中。

同时Flash的函数可以调用SDRam的函数,而SDRam内的函数不能调用Flash的函数(相当于取值操作)。所以只要被SDRam里的函数调用了的函数,其类型一定是SDRam。而Flash中的函数可以调用Flash函数,也可以调用SDRam函数。

 

这样可以认为可以在dump的ASM中查找被调用SDRam函数调用次数是0的函数,这些函数有可能可以放在Flash中。

检查这些函数,看看能否放在Flash中。

但是这样有个问题,由于MIPS指令长度的限制,从FLash跳到ROm中要使用长跳转方式,也就是说不能直接jlr address了事,所以,代码中需要确定哪些函数是从Flash跳过来的,并将其函数声明中,设定__attribute__((longcall))标签,以此来完成编译器的长跳转。

{ Using PSTWRITER 17.2.0 d001Jun-30-2025 at 10:28:08 } #1 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #2 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #3 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #4 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #5 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #6 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #7 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #8 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #9 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #10 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #11 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #12 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #13 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #14 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #15 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #16 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #17 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #18 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #19 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #20 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #21 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #22 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #23 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #24 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #25 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #26 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #27 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #28 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #29 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #30 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #31 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #32 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #33 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #34 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #35 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #36 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #37 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #38 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #39 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #40 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #41 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #42 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #43 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #44 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #45 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #46 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #47 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #48 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #49 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #50 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #51 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #52 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #53 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #54 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #55 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #56 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #57 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #58 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #59 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #60 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #61 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #62 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #63 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #64 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #65 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #66 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #67 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #68 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #69 ERROR(ORCAP-36055): Illegal character in E:\00.2024\00.UFS MODULE\18. UFS COST DOWN 0613\SCHEMATIC 0630 (COST DOWN)-NS-H501\UFS_M2_2242_MODULE_20250627 D ( COST DOWN)-NS-H502.DSN. #70 ERROR(ORCAP-36018): Aborting Netlisting... Please correct the above errors and retry.
最新发布
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值