找回密码
 立即注册
查看: 576|回复: 5

【PIO】添加自定义Board

[复制链接]
  • TA的每日心情
    开心
    昨天 10:41
  • 签到天数: 289 天

    [LV.8]以坛为家I

    33

    主题

    158

    回帖

    1921

    积分

    金牌会员

    积分
    1921
    发表于 2024-1-3 00:37:10 | 显示全部楼层 |阅读模式
    背景
    对于只用STC 51内核单片机的同学来说这篇文章可以不用看了。
    对于SDCC来说,STC几乎所有型号的单片机都有相应的头文件。
    对于PIO来说,STC几乎支持了所有型号单片机的Board
    Board就是创建PIO工程的时候选择的芯片型号)。
    之所以说几乎,因为我也不清楚具体多少,至少我需要的已经支持了。

    具体可以去PIO的官网
    PIO支持的STC芯片型号)或者在创建工程的地方:
        001.png
        但是对于有其他芯片厂商51内核单片机使用需求的同学,可以看看这篇文章,主要是说如何添加的Board的。
        那么board是什么呢? 如何添加?

    概念
        在说明Board的概念之前,先来介绍一下platform的概念,这里的platform指的不是这款集成开发环境的名称。而是这个集成开发环境一个很重要的组成部分。下面是截取的官方的文档:
    也可以之间看官方文档:PIO platform 概念
        002.png
        PlatformIO生态系统具有去中心化架构,允许开发一系列开发平台(platform)。开发平台(简称:平台)往往是指一个特定的微处理器或者一种处理器体系结构(比如 mcs-51),PlatformIO构建的工程能够在平台上运行。(极少数平台的不同IC使用不同的处理器结构,比如:Teensy)。 官网目前已经支持了很多平台,具体地址:PIO支持的平台 。还有些平台能在ARM Linux中运行比如树莓派。
        可以简单的理解平台就是内核架构。至少这里的mcs-51就是一些列51单片机内核。那么Board就可以理解成基于这个内核的不同厂商或者相同厂商不同型号的单片机芯片;


    自定义Board
        PlatformIO对一些流行的芯片已经支持了。可以通过网页,或者在pio环境下运行pio boards 命令来查看。 也可以通过修改已经存在Board的设置来定义官方目前不支持的Board。Board所有的配置都通过json格式的文件,以建值对的方式定义;可以参考:自定义Board官方文档
    Json 结构文件
    IC定义文件的关键配置项有:
    • build:这里的值都是芯片相关的值,比如时钟频率,ram大小,rom大小等。他们将会被开发平台或者开发框架对应的编译器使用;
    • frameworks:这个Board支持的框架列表;关于框架是另一个概念,msc-51没有使用就不介绍了;
    • platform:这个IC所属的开发平台;
    • upload:基于平台的烧录设置;
    下面以mcs-51平台下的STC8G2K64S4这个IC为例:
    1. {
    2.   "build": {
    3.     "core": "naked",
    4.     "extra_flags": "-DSTC8G2KXXS4 -DSTC8G2K64S4 -DNAKED_ARCH_MCS51 -DNAKED_MCS51_STC8G2KXXS4",
    5.     "f_cpu": "11059200L",
    6.     "size_iram": 256,
    7.     "size_xram": 2048,
    8.     "size_code": 65536,
    9.     "size_heap": 128,
    10.     "mcu": "stc8g2k64s4",
    11.     "cpu": "mcs51",
    12.     "variant": "stc8g2kxxs4"
    13.   },
    14.   "frameworks": [],
    15.   "upload": { // 烧录设置,
    16.     "maximum_ram_size": 2304, // 最大ram
    17.     "maximum_size": 65536,    // 最大flash
    18.     "protocol": "stcgal",     // 烧录使用的协议(工具链)
    19.     "stcgal_protocol": "stc8",//
    20.     "protocols": [
    21.       "stcgal"                // 烧录使用的工具链
    22.     ]
    23.   },
    24.   "name": "Generic STC8G2K64S4",
    25.   "url": "www.STCAIMCU.com",
    26.   "vendor": "STC"
    27. }
    复制代码
    自定义(特别注意这个目录是存放msc-51这个内核所支持的Board的
        只需要按照上边的结构在存放配置的目录下(C:\Users\Administrator\.platformio\platforms\intel_mcs51\boards 注意前边的内容改成pio的安装目录)新建一个XXXXX_IC.json 文件即可。比如我有一颗RD8T37P48。 就在这个目录下新建 RD8T37P48.json, 内容如下:
    1. {
    2.   "build": {
    3.     "core": "naked",
    4.     "extra_flags": "-DRD8T3X -DNAKED_ARCH_MCS51 -DNAKED_MCS51_RD8T3X",
    5.     "f_cpu": "32000000L",
    6.     "size_iram": 256,
    7.     "size_xram": 8448,
    8.     "size_code": 131072,
    9.     "size_heap": 128,
    10.     "mcu": "RD8T37P48R",
    11.     "cpu": "mcs51",
    12.     "variant": "RD8T3X"
    13.   },
    14.   "frameworks": [],
    15.   "upload": {
    16.     "maximum_ram_size": 8448,
    17.     "maximum_size": 131072,
    18.     "protocol": "stcgal",
    19.     "stcgal_protocol": "stc8",
    20.     "protocols": [
    21.       "stcgal"
    22.     ]
    23.   },
    24.   "name": "TK RD8T37P48R",
    25.   "url": "www.STCAIMCU.com,
    26.   "vendor": "RD"
    27. }
    复制代码
        最后需要重启一下PIO这样它才能加在新配置的Board:
        2024-01-03-00-28-37.png



    最后
        关于PIO的生态和架构大家感兴趣可以自己去官网了解。
        暂时了解到如何添加PIO暂时不支持的Board就可以了。
        PIO底层其实是使用了一个叫SCons的构建工具来进行工程的构建和打包的。




















    2024-01-03-00-25-52.png
    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    不争是争
    回复 送花

    使用道具 举报

    该用户从未签到

    640

    主题

    1万

    回帖

    1万

    积分

    管理员

    积分
    15687
    发表于 2024-1-3 07:46:50 | 显示全部楼层
    建议 楼主 到 我们 SDCC 版块 担当 荣誉版主
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 08:54
  • 签到天数: 268 天

    [LV.8]以坛为家I

    10

    主题

    216

    回帖

    1062

    积分

    金牌会员

    积分
    1062
    发表于 2024-1-3 08:27:54 | 显示全部楼层
    能力越大责任越大
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 08:06
  • 签到天数: 333 天

    [LV.8]以坛为家I

    12

    主题

    396

    回帖

    1890

    积分

    金牌会员

    积分
    1890
    发表于 2024-1-3 08:32:03 | 显示全部楼层
    好好搞搞,把手推车都添加进来
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:54
  • 签到天数: 277 天

    [LV.8]以坛为家I

    30

    主题

    1754

    回帖

    5738

    积分

    论坛元老

    积分
    5738
    发表于 2024-1-3 09:29:02 | 显示全部楼层
    "url": "http://www.stcmicro.com/stc/stc51.html",  《====  这不是 STC 的网址,这只是个碰瓷我们的贸易商的网址


    这个网址建议改成STC官方网址:www.stcai.com,或者 www.stcaimcu.com
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:41
  • 签到天数: 289 天

    [LV.8]以坛为家I

    33

    主题

    158

    回帖

    1921

    积分

    金牌会员

    积分
    1921
     楼主| 发表于 2024-1-3 16:52:56 | 显示全部楼层
    神农鼎 发表于 2024-1-3 07:46
    建议 楼主 到 我们 SDCC 版块 担当 荣誉版主

    感谢大佬认可,只是我学习的都是皮毛,意在抛砖引玉。 让开源的好用的工具壮大起来,构成相互促进的良性循环。 另外平时确实很忙,版主的确实难以胜任。
    不争是争
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-1 06:53 , Processed in 0.077872 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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