大锤子 发表于 2024-1-3 00:37:10

【PIO】添加自定义Board

背景
对于只用STC 51内核单片机的同学来说这篇文章可以不用看了。
对于SDCC来说,STC几乎所有型号的单片机都有相应的头文件。
对于PIO来说,STC几乎支持了所有型号单片机的Board
(Board就是创建PIO工程的时候选择的芯片型号)。
之所以说几乎,因为我也不清楚具体多少,至少我需要的已经支持了。
具体可以去PIO的官网
(PIO支持的STC芯片型号)或者在创建工程的地方:
   
    但是对于有其他芯片厂商51内核单片机使用需求的同学,可以看看这篇文章,主要是说如何添加的Board的。
    那么board是什么呢? 如何添加?
概念
    在说明Board的概念之前,先来介绍一下platform的概念,这里的platform指的不是这款集成开发环境的名称。而是这个集成开发环境一个很重要的组成部分。下面是截取的官方的文档:
也可以之间看官方文档:PIO platform 概念
   
    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为例:{
"build": {
    "core": "naked",
    "extra_flags": "-DSTC8G2KXXS4 -DSTC8G2K64S4 -DNAKED_ARCH_MCS51 -DNAKED_MCS51_STC8G2KXXS4",
    "f_cpu": "11059200L",
    "size_iram": 256,
    "size_xram": 2048,
    "size_code": 65536,
    "size_heap": 128,
    "mcu": "stc8g2k64s4",
    "cpu": "mcs51",
    "variant": "stc8g2kxxs4"
},
"frameworks": [],
"upload": { // 烧录设置,
    "maximum_ram_size": 2304, // 最大ram
    "maximum_size": 65536,    // 最大flash
    "protocol": "stcgal",   // 烧录使用的协议(工具链)
    "stcgal_protocol": "stc8",//
    "protocols": [
      "stcgal"                // 烧录使用的工具链
    ]
},
"name": "Generic STC8G2K64S4",
"url": "www.STCAIMCU.com",
"vendor": "STC"
}自定义(特别注意这个目录是存放msc-51这个内核所支持的Board的)
    只需要按照上边的结构在存放配置的目录下(C:\Users\Administrator\.platformio\platforms\intel_mcs51\boards 注意前边的内容改成pio的安装目录)新建一个XXXXX_IC.json 文件即可。比如我有一颗RD8T37P48。 就在这个目录下新建 RD8T37P48.json, 内容如下:
{
"build": {
    "core": "naked",
    "extra_flags": "-DRD8T3X -DNAKED_ARCH_MCS51 -DNAKED_MCS51_RD8T3X",
    "f_cpu": "32000000L",
    "size_iram": 256,
    "size_xram": 8448,
    "size_code": 131072,
    "size_heap": 128,
    "mcu": "RD8T37P48R",
    "cpu": "mcs51",
    "variant": "RD8T3X"
},
"frameworks": [],
"upload": {
    "maximum_ram_size": 8448,
    "maximum_size": 131072,
    "protocol": "stcgal",
    "stcgal_protocol": "stc8",
    "protocols": [
      "stcgal"
    ]
},
"name": "TK RD8T37P48R",
"url": "www.STCAIMCU.com,
"vendor": "RD"
}    最后需要重启一下PIO这样它才能加在新配置的Board:
   



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




















神农鼎 发表于 2024-1-3 07:46:50

建议 楼主 到 我们 SDCC 版块 担当 荣誉版主

pangshijz 发表于 2024-1-3 08:27:54

能力越大责任越大{:4_245:}

wangxiangtan 发表于 2024-1-3 08:32:03

好好搞搞,把手推车都添加进来

乘风飞扬 发表于 2024-1-3 09:29:02

"url": "http://www.stcmicro.com/stc/stc51.html",《====这不是 STC 的网址,这只是个碰瓷我们的贸易商的网址


这个网址建议改成STC官方网址:www.stcai.com,或者 www.stcaimcu.com

大锤子 发表于 2024-1-3 16:52:56

神农鼎 发表于 2024-1-3 07:46
建议 楼主 到 我们 SDCC 版块 担当 荣誉版主

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

木木01 发表于 2025-1-20 15:54:15

我应该学废了,谢谢

rayrakey 发表于 2025-3-13 09:29:05

厉害
页: [1]
查看完整版本: 【PIO】添加自定义Board