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

【PIO】如何将自己的库函数发布到pio

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-05-02 11:38:17

44

主题

230

回帖

2845

积分

金牌会员

积分
2845
发表于 2024-1-17 21:27:17 | 显示全部楼层 |阅读模式

上一篇文章中通过一个短视频分享了如何使用已经注册到pio仓库中的库函数。这篇文章借助pio官方文档简单介绍下如何注册自己的库函数到pio。方便自己和大家使用;



在介绍流程之前首先说明几个概念:


  • package:平台开发所使用的不同的工具,比如sdcc就是mcs-51这个平台使用到的package。再比如stcgal是mcs-51这个平台使用的烧录工具;而今天要介绍的Library也是package的一种。
  • Library:就是我们通常说的库函数。使用库函数能够提高我们的开发效率,它可以很好的屏蔽寄存器的底层实现逻辑,我们看到的往往是一个通过名称就能识别的功能;
  • 依赖:再pio的文档中关于Library的内容中多次提到依赖,又互联网服务端开发经验的同学应该知道有个叫maven的依赖管理工具。再嵌入式中所说的依赖也是类似的,比如我们再keil中添加头文件路径就是在配置keil在编译的过程中寻找头文件的的路径;所以这里所说的依赖就是工程中所使用到的各种源文件或者头文件;

注册Library的步骤:


1、新建存放库函数源码的文件夹结构:




库函数结构.png



注意其中





.vscode :不需要,那是vscode自动生成的。


README.* :也不是必须的。


library.json :对Library的声明;


src:存放.c文件,是可以通过library.json来修改;


include:存放使用到的头文件,也是可以通过library.json来修改;


examples:存放示例文件。我第一次提交的时候收到pio团队发来的拒绝邮件,原因是library.json中配置了examples 但是这个文件夹下却没有内容;


仅需要这些内容就可以来注册自己的库函数到pio。

2、编写library.json 文件

library.json文件需要是标准json格式的,每一个key的含义可以参考官方文档,这里以我的为例简单介绍几个:

  1. {
  2.   "name": "STC8G_H_LIB",
  3.   "version": "1.0.0",
  4.   "description": "A libriry for STC8X serial MCU",
  5.   "keywords": "mcs51, stc8",
  6.   "repository": {
  7.     "type": "git",
  8.     "url": "https://gitee.com/dchuizi/stc8-g-h-lib.git"
  9.   },
  10.   "authors": [
  11.     {
  12.       "name": "Leo Shi",
  13.       "email": "pj_shi@foxmail.com"
  14.     }
  15.   ],
  16.   "dependencies": {},
  17.   "frameworks": "*",
  18.   "platforms": "intel_mcs51",
  19.   "build": {
  20.     "srcDir": "src",
  21.     "includeDir": "include"
  22.   },
  23.   "headers":[
  24.     "gpio.h"
  25.   ],
  26.   "examples": [
  27.    
  28.   ]
  29. }
复制代码

name:library的名称,显示的名称;

version: library的版本;

description:库的描述;

keywords:方便用户搜索的关键词;

repositry:库存放的位置,我这里时git。 并且给出了git 仓库;

platforms:可以支持的平台,我的是stc的库,所以支持intel_mcs51;

srcDir:声明存放.c文件的目录,这里默认是src;

includeDir:声明存放头文件的目录,默认是include;

3、发布

这里需要使用命令行在library.json 同目录下打开终端,使用pio pkg publish 命令来发布。命令会自动识别library中的版本号以及你的pio账号和库名称,需要注意的是名称和版本不能重复使用。比如我这里的版本是1.0.0 如果版本号不修改就发布不了;

正好我补充了blink的example,来发布一下:

截图202401172122371954.jpg


关于library的使用还有很多内容,比如pio是如何发现这些library的。这些library的兼容性是如何控制的。都在官方文档,有兴趣可以深入研究一下。







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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-1-20 17:37:09 | 显示全部楼层
能不能让platformIO直接支持更多的国产芯片
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-05-02 11:38:17

44

主题

230

回帖

2845

积分

金牌会员

积分
2845
发表于 2025-1-20 22:35:32 | 显示全部楼层
木*** 发表于 2025-1-20 17:37
能不能让platformIO直接支持更多的国产芯片

pio 类似cmake 就是个构建工具。 需要有完整的工具链。 其实常用的也就是arm 和 51.
跟是否国产芯片没关系,跟芯片平台(内核, platformIO中叫做 platform )有关;

arm 和 51 pio都支持;

国产的GD32 arm内核, pio也有支持的package。
不争是争
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:382
  • 最近打卡:2025-05-02 08:26:22
已绑定手机

10

主题

147

回帖

464

积分

中级会员

积分
464
发表于 2025-1-21 08:01:15 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-1-25 23:05:24 | 显示全部楼层
大*** 发表于 2025-1-20 22:35
pio 类似cmake 就是个构建工具。 需要有完整的工具链。 其实常用的也就是arm 和 51.
跟是否国产芯片没关 ...

嗯,其实我想表达的是,在platformIO里面能直接选择iframe开发,比如选择arduino或直接支持arduino,这需要厂家进行一些封装,这样的话可以让初学者更容易上手,开箱即用,而不是得先去折腾platform或arduino这样的开发工具和编译环境等,
我不是大佬,我正在学习使用国产芯片,也希望国产越来越好,越来越广泛,我就是按我个人体验发表意见,如果能直接用上arduino这样的开源生态,那对于我们业余爱好者来讲将方便很多很多。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-1-25 23:06:23 | 显示全部楼层
木*** 发表于 2025-1-25 23:05
嗯,其实我想表达的是,在platformIO里面能直接选择iframe开发,比如选择arduino或直接支持arduino,这需 ...

我讨厌配置寄存器
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 13:31 , Processed in 0.136898 second(s), 87 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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