找回密码
 立即注册
查看: 2423|回复: 30

SDCC, 51单片机开发工具探索-摆脱keil

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

    [LV.8]以坛为家I

    33

    主题

    158

    回帖

    1921

    积分

    金牌会员

    积分
    1921
    发表于 2023-12-31 13:50:08 | 显示全部楼层 |阅读模式
    2023-12-31-10-48-09.jpg
    背景
        不管是51内核单片机还是arm内核的单片机,相信很多同学在开发的时候首先接触的就是keil。没有用过其他IDE的同学可能没有感觉,但是对于使用过IDEA或者VSCODE开发的同学就会对keil的使用感觉很不舒服:
    • 老旧的窗口形式;
    • 奇怪的工程目录;
    • 繁琐的配置;
    • 没有高亮;
    • 关键它不是免费的,虽然最近出了社区板,非盈利可以免费使用。但还是保留了代码量的限制。
        以上这些问题也有相应的解决方案了,比如VSCode插件EIDE就可以使用VSCode编辑代码,然后配置插件关联到已经安装的keil上,类似的方案还有Keil uVision Assistant 。
        但是当家里只有一台mac电脑时,这条路就因为keil不支持mac而不得不放弃。归根结底是编译器的问题,所以就要解决根本问题。带着问题去寻找答案。皇天不负有心人,终于还是找到了。其中编辑器就使用风靡全球的vscode。重点就是编译器,使用SDCC(Small Device C Compiler),它的主要优点就是开源,跨平台,缺点就是使用的人少,参考资料不多;
        只有这两个还是不能完成开发任务的。我们还需要一个构建打包的工具,比如CMAKE大家用的比较多,但是也需要进行一系列繁琐的配置。我这里选择的是platformIO简称PIO,而且它还有VSCODE的插件。现在很多开源项目都是使用PIO开发的。
        至此,摆脱keil开发51单片机的开发环境需要的内容基本就全了。这里我给他们简称VPS,V-VSCODE; P-PIO; S-SDCC;
    环境搭建
    VSCODE 安装
        这个就是安装一个软件,很简单,懒得说了。有的可能会按照中文支持,感觉非必要。
    PIO 安装
        在写这篇文章的时候我已经用了一段时间的VPS了。环境也已经安装搭建好了,简单介绍一下步骤:
    • step1:打开安装好的VSCODE;
    • step2:点击左边的第四个按钮,搜索platformio,点击安装;

    pio安装.png

    • step3:安装成功后在左侧会出现小蚂蚁图标;
    • step4:安装platform,这里的platform可以理解成不同单片机平台;点击小蚂蚁 -> 点击Home -> 点击Platforms -> 搜索 Intel 找到Intel MCS-51 安装,这里可能会花费一些时间来安装相关的工具链,其中就包括sdcc

    2023-12-31-12-39-10.png

    SDCC 安装
    已经在PIO 中安装了,可以到以下目录查看PIO下已经安装的工具链:C:\Users\Administrator.platformio\packages

    2023-12-31-12-42-24.png

    DEMO 演示:
    • step1:打开vscode, 点击小蚂蚁打开pio,这里启动可能有点慢,因为要加载已经安装的平台;

    demo_01.png

    • step2:点击home,新建工程,填写工程名称,选择Board,这里填写STC,就可以显示所有已经安装的可以使用的Board;选择工程存放目录,点击创建。

    demo_02.png

    • step3:简单介绍一下pio的工程目录;

    demo_03.png

    • step4:编写代码,在src目录下新建文件 main.c 代码如下:
      1. #include <compiler.h>
      2. SFR(P0, 0X80);
      3. void Delay500ms()                //@11.0592MHz
      4. {
      5.         unsigned char __data i, j, k;
      6.         NOP();
      7.         NOP();
      8.         i = 22;
      9.         j = 3;
      10.         k = 227;
      11.         do
      12.         {
      13.                 do
      14.                 {
      15.                         while (--k);
      16.                 } while (--j);
      17.         } while (--i);
      18. }
      19. void main(void)
      20. {
      21.     // STC89C52单片机的P0口输出高电平点亮LED
      22.     P0 = 0XF0;
      23.     while (1)
      24.     {
      25.         Delay500ms();
      26.         P0 = 0X00;
      27.         Delay500ms();
      28.         P0 = 0XFF;
      29.     }
      30.    
      31. }
      复制代码

    • step5:编译,生成的hex 文件在 ./pio/build/STC89C52RC 目录下

    demo_05.png

    • step6:烧录;

    demo_07.png

    效果演示:


    最后:

        仅仅是搭建环境是开启VPS开发51单片机的第一步,正如前文说的sdcc 是一个开源的跨平台的编译器,这是它的优点,但是关于它的资料太少了。在使用的过程中也遇到了很多问题,这些就放在后边跟大家分享。



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

    使用道具 举报

    该用户从未签到

    640

    主题

    1万

    回帖

    1万

    积分

    管理员

    积分
    15687
    发表于 2023-12-31 14:55:13 | 显示全部楼层
    这有 SDCC 格式头文件,IAR C++ 头文件
    截图202401141554105722.jpg
    深圳国芯人工智能有限公司-工具软件 (stcai.com)


    大家先 :
    【VSCode + SDCC】;
    【VSCode , IAR C++ for 51】;
    【VSCode + KEIL C51】;
    【VSCode + KEIL C251】


    后面 51, 我们将例程翻一遍 SDCC / IAR C++, 让大家熟悉下 自由的空气


    回复 支持 1 反对 0 送花

    使用道具 举报

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

    [LV.8]以坛为家I

    33

    主题

    158

    回帖

    1921

    积分

    金牌会员

    积分
    1921
     楼主| 发表于 2023-12-31 16:40:00 | 显示全部楼层
    神农鼎 发表于 2023-12-31 14:55
    这有 SDCC 格式头文件,IAR C++ 头文件

    不争是争
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:06
  • 签到天数: 269 天

    [LV.8]以坛为家I

    5

    主题

    282

    回帖

    1440

    积分

    金牌会员

    积分
    1440
    发表于 2024-1-3 01:56:23 | 显示全部楼层
    回复 送花

    使用道具 举报

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

    [LV.8]以坛为家I

    12

    主题

    396

    回帖

    1890

    积分

    金牌会员

    积分
    1890
    发表于 2024-1-3 08:27:22 | 显示全部楼层
    妙啊这个,board有几种,STC8h8k、32g12k128都有吧
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:58
  • 签到天数: 339 天

    [LV.8]以坛为家I

    91

    主题

    1321

    回帖

    3902

    积分

    论坛元老

    积分
    3902
    发表于 2024-1-4 10:29:31 | 显示全部楼层
    PIO 以前安装过, 安装时间太久了,不知道现在会不会这样。
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.8]以坛为家I

    33

    主题

    158

    回帖

    1921

    积分

    金牌会员

    积分
    1921
     楼主| 发表于 2024-1-4 15:36:42 | 显示全部楼层
    wangxiangtan 发表于 2024-1-3 08:27
    妙啊这个,board有几种,STC8h8k、32g12k128都有吧

    stc32 是80251 sdcc只能支持8051. 应该是不行。 其他的stc的8051几乎全都支持。 也可以自定义
    不争是争
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 315 天

    [LV.8]以坛为家I

    16

    主题

    515

    回帖

    705

    积分

    高级会员

    积分
    705
    发表于 2024-1-5 21:04:27 | 显示全部楼层
    这个有时候新建工程会报错, 比如说有些单片机的型号含有特殊字符 我上次新建stc89c51rc+都失败了
    自信就会温和,温和就会坚定!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:54
  • 签到天数: 322 天

    [LV.8]以坛为家I

    0

    主题

    733

    回帖

    1187

    积分

    金牌会员

    积分
    1187
    发表于 2024-1-6 21:01:21 | 显示全部楼层
    赞,有机会试一下
    靡不有初,鲜克有终
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-6-28 23:26
  • 签到天数: 45 天

    [LV.5]常住居民I

    0

    主题

    27

    回帖

    58

    积分

    注册会员

    积分
    58
    发表于 2024-1-9 00:12:09 | 显示全部楼层
    KEIL用习惯了,用其他的得适应适应
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-1 06:46 , Processed in 0.105863 second(s), 92 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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