大锤子 发表于 2023-12-31 13:50:08

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


背景    不管是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,点击安装;

[*]step3:安装成功后在左侧会出现小蚂蚁图标;
[*]step4:安装platform,这里的platform可以理解成不同单片机平台;点击小蚂蚁 -> 点击Home -> 点击Platforms -> 搜索 Intel 找到Intel MCS-51 安装,这里可能会花费一些时间来安装相关的工具链,其中就包括sdcc
SDCC 安装已经在PIO 中安装了,可以到以下目录查看PIO下已经安装的工具链:C:\Users\Administrator.platformio\packagesDEMO 演示:
[*]step1:打开vscode, 点击小蚂蚁打开pio,这里启动可能有点慢,因为要加载已经安装的平台;

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

[*]step3:简单介绍一下pio的工程目录;

[*]step4:编写代码,在src目录下新建文件 main.c 代码如下:
[*]#include <compiler.h>

SFR(P0, 0X80);

void Delay500ms()                //@11.0592MHz
{
      unsigned char __data i, j, k;

      NOP();
      NOP();
      i = 22;
      j = 3;
      k = 227;
      do
      {
                do
                {
                        while (--k);
                } while (--j);
      } while (--i);
}

void main(void)
{
    // STC89C52单片机的P0口输出高电平点亮LED
    P0 = 0XF0;
    while (1)
    {
      Delay500ms();
      P0 = 0X00;
      Delay500ms();
      P0 = 0XFF;
    }
   
}
[*]step5:编译,生成的hex 文件在 ./pio/build/STC89C52RC 目录下

[*]step6:烧录;
效果演示:


最后:

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



神农鼎 发表于 2023-12-31 14:55:13

这有 SDCC 格式头文件,IAR C++ 头文件

深圳国芯人工智能有限公司-工具软件 (stcai.com)


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

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


大锤子 发表于 2023-12-31 16:40:00

神农鼎 发表于 2023-12-31 14:55
这有 SDCC 格式头文件,IAR C++ 头文件




{:4_250:}

lzl1okOK 发表于 2024-1-3 01:56:23

{:4_250:}

wangxiangtan 发表于 2024-1-3 08:27:22

妙啊这个,board有几种,STC8h8k、32g12k128都有吧

xxkj2010 发表于 2024-1-4 10:29:31

PIO 以前安装过, 安装时间太久了,不知道现在会不会这样。

大锤子 发表于 2024-1-4 15:36:42

wangxiangtan 发表于 2024-1-3 08:27
妙啊这个,board有几种,STC8h8k、32g12k128都有吧

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

嵌入式之路 发表于 2024-1-5 21:04:27

这个有时候新建工程会报错, 比如说有些单片机的型号含有特殊字符 我上次新建stc89c51rc+都失败了

小涵子爸爸 发表于 2024-1-6 21:01:21

赞,有机会试一下

yuchen123 发表于 2024-1-9 00:12:09

{:4_167:}KEIL用习惯了,用其他的得适应适应
页: [1] 2
查看完整版本: SDCC, 51单片机开发工具探索-摆脱keil