找回密码
 立即注册
查看: 280|回复: 0

【PIO】使用platformIO如何设置Memory Models (1)

[复制链接]
  • TA的每日心情
    难过
    8 小时前
  • 签到天数: 126 天

    [LV.7]常住居民III

    20

    主题

    87

    回帖

    1148

    积分

    金牌会员

    积分
    1148
    发表于 2024-1-12 00:14:18 | 显示全部楼层 |阅读模式
    本帖最后由 大锤子 于 2024-1-12 00:14 编辑

    在上一个关于printf()库函数重定向到串口的分享中有提到,SDCC建议在使用printf()库函数时将存储模型设置成--model-large 模式;
    SDCC用户手册中关于 存储模式的描述如下:
    2024-01-11-06-54-05.png

    SDCC支持4种存储模式,分别是:small、medium、large、huge;
    其中:
    • small模式下变量和函数的参数,都存放在内部ram中,对应的关键词是 __data (注意是双下划线);
    • large模式下变量和函数的参数,都存放在扩展ram中,对应的关键词是 __xdata ;
    当芯片内存容量不大时,可以使用 __xdata 修饰占用存储比较大的变量,将他们存放在空间比较大的扩展ram中:
    xdata输出.png data输出.png
    上边的图分别使用__xdata 和不使用__xdata 修饰变量进行编译得到的结果。使用的编译成功了,将数组放到了外部RAM中,而没有使用的编译失败了原因是内部RAM空间不足;
    SDCC默认的存储模式是--model-small,因此没有使用__xdata修饰的默认放在内部ram中。那如果想让定义的变量和参数默认存放在外部ram中该怎么实现呢?
    这里我直接给出结论:
    设置.png
    1、在工程目录下新建 large_model.py
    2、在工程的配置文件platformio.ini 中加上红色方框中的内容;
    3、在1中新建的文件中写上上边的内容;
    如果只是想实现设置工程存储模式为large的,本文就可以结束了。
    如果不满足于知其然,还想知其所以然,可以持续关注这个板块,下次一起研究下PIO的具体实现方式;


    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    不争是争
    回复 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-8 20:02 , Processed in 0.054488 second(s), 32 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表