PlatformIO Community

Experimental `platform-mcs51`

I’ve started a platform for the old-and-popular-and-all-forgotten mcs51.

Just because I want that Activate Power Mode while I code…

The setup is a bit tricky ATM, I’ve only tested it on Linux, which is my primary working platform.

The platform is in an experimental stage.

  1. use SDCC as it’s toolchain, and, no, we don’t have C++ support.
  2. I have only created board support for the one I’ve got, which is a Nuvoton n79e855…
  3. I haven’t found a way to upload the compiled code onto the board, yet. Nuvoton just don’t provide linux tool, so I’m pretty much on my own. Trying hard to figure it out.

However, it’s a start after all, I accept PR :smiley:


Wow!!! New 3-rd party development platform :clap: :smile:

A few hints:

  • “HOWTO (Setup for MCS-51)” -is very complicated :slight_smile: Really, you need 1 magic command:
platformio platform install
  "name": "mcs51",
  "title": "MCS 8051/8052",
  "description": "Intel 8051/8052 8-bit and 3rd party compatible MCUs those which are used almost everywhere.",
  "url": "",
  "homepage": "",
  "license": "Apache-2.0",
  "engines": {
    "platformio": "^3.0.0",
    "scons": ">=2.3.0,<2.6.0"
  "repository": {
    "type": "git",
    "url": ""
  "version": "0.0.1",
  "packageRepositories": [
      "framework-nakedmcs51": [
          "url": "",
          "version": "0.0.1"
  "frameworks": {
    "naked": {
      "package": "framework-nakedmcs51",
      "script": "builder/frameworks/"
  "packages": {
    "toolchain-sdcc": {
      "type": "toolchain",
      "version": "~1.20500"
    "framework-nakedmcs51": {
      "type": "framework",
      "optional": true,
      "version": "~0.0.1"
    "tool-srecord": {
      "type": "uploader",
      "optional": true,
      "version": "~1.64"

Binary files

We use and recommend it you. You can out here toolchains and manifest. See PlatformIO repositories:

If you finish with this development platform, we will add it to global registry.

the problem now bugs me are the toolchain and tools.

how do I provide these for different platforms (linux-amd64 / linux-i686 / windowns-x32 / windows-x64 / osx-whatever)?

See existing global manifest

Do you have these toolchains for mentioned archs?

SDCC is cross-platform, at least we get linux (i386/amd64), windows (x32/x64), and osx (ppc :scream:/i386).

i’m also having problem with the linter, Atom tries to lint using gcc (and of course it don’t work, it complains about SDCC flags…), how do I make it lint with SDCC?

or… disable linter FTM completely, anyway.

SDCC is cross-platform, at least we get linux (i386/amd64), windows (x32/x64), and osx (ppc :scream:/i386).

Please create own package repository on with manifest for these packages

or… disable linter FTM completely, anyway.

Project contains .gcc-flags.json file. Try to set it to


Project contains .gcc-flags.json file. Try to set it to


is there anyway that I can tell it to use sdcc for execPath?

I created the manifest.json files for platforms and packages…

$ pio platform install
will just work.

well… at least on linux…
edit: and windows 10 x64.

We use this package. I’m not sure that non-GCC compiler will work here.

is it possible to add support in platformio, to disable the linter for a specific platform completely?
like "linter": "none" maybe?

I’ll check it automatically. Please open a feature request here

minor updates to platform-mcs51, tweaking iram/xram/code/heap size, etc.

majorly targeted on fixing linking issue.