[riot-notifications] [RIOT-OS/RIOT] cpu/mips: Remove platforms (#11788)

Juan I Carrano notifications at github.com
Thu Jul 4 01:58:52 CEST 2019

**Note**: before removal there should be a deprecation. I open this PR so that we can discuss the removal itself.

**Note 2**: The following text is a copy-pasta of the commit messages, so you can read those instead.

### Before we start...

...this removal does not mean MIPS is banished from RIOT until the end of times. As I explain below, many of the problems stem from the lack of dedicated maintainers for the platform.

I do not think that MIPS is orders of magnitude more complex than other plaforms (maybe it is, but I don't know). The thing is, the other plaforms have people working every day to iron out the bugs. If such a thing were to happen to MIPS, it could go back into RIOT. Until that happens, though we cannot afford to support it.

### Reasons to remove MIPS (or, What's wrong?)

#### No "dedicated" maintainer.

The MIPS platform does not have a maintainer. While there is no such thing as "official plaform maintainer" in RIOT, in reality there are de-facto maintainers for all the "well supported" platforms. These are people with good knowledge of the architecture, access to boards and active in the community.

These are the persons one can rely upon to test PRs and ensure the platform keeps working. See for example the SAM and the STM32 plaforms.

MIPS is lacking such a maintainer.

#### Poor usability

I doubt the current implementation of these board can be use for any serious development.

##### No working UART input

a. Makes development & debugging way harder.
b. It is impossible to run interactive tests.
 b.1. Constrains the rest of the platforms by providing an incentive to not
      make tests interactive.
c. The lack of UART is a witness to the poor quality of the port.

I want to stress point (c). If something as basic as a serial port cannot work,
how can we expect more complex fucntionality to work. The answer is impossible
to know, because of point (1).

##### No flasher

pic32-wifire is the least worse. At least it can be flashed from Linux, though it
is not an easy task. From dist/tools/pic32prog/doc.md

>It will require flashing a specific firmware on the PICkit3.
> As this can only be done from a Windows computer, that not many Linux users
> have, the following steps explain how to setup a Windows VirtualBox virtual
> machine and flash the PICkit3 from it.
> Informations come from this comment
> #6092 (comment)

pic32-clicker HAS NO FLASHER and requires one to use MPLAB.

#### Maintainance burden

The RIOT project has limited time and human resources which can be better spent.

a. Compiling for these boards wastes CPU time.
b. Blacklisting the boards in the test wastes contributor's time.
c. Adapting the board's makefile during build system rework takes time and makes
   the reworks harder.
 c.1. Add to that that the changes are most of the time not even tested on the board
      because of lack of people with the board (and no flasher). Look at the github issues/PRs and you will see it.
d. Developers usually stick to the lowest common denominator. No UART input and no flasher sets this
   denominator unacceptably low.

##### MIPS microcontrollers are dead

(Please note that I'm NOT referring to the architecture in general, whichis still in use in other applications)

I'm sure that from a technical point of view, MIPS may have some advantages. Technilogical history shows, however, that it is not the best technicals solutions that triumph. The determining factor is economics.

A smaller platform means more lock-in, less tooling support, less software availability.

A quick looks at current offerings of MIPS MCUs shows only Microchips products are practically available. Now, Microchip has bought Atmel and its line of SAM Arm MCUs. I would not be surprised if in a few years they decided to discontinue (or "not recommended to new designs") their MIPS line.

### Testing procedure

I need a bit of help here. What could I have broken?

### Issues/PRs references

You can view, comment on, or merge this pull request online at:


-- Commit Summary --

  * boards/mips-malta: remove board.
  * boards/pic32-{clicker,wifire}: delete boards
  * cpu/mips*: remove MIPS support.
  * sys/newlib_syscalls_default: Remove MIPS-specific ifdef.

-- File Changes --

    M README.md (2)
    D boards/mips-malta/Makefile (3)
    D boards/mips-malta/Makefile.features (4)
    D boards/mips-malta/Makefile.include (10)
    D boards/mips-malta/doc.txt (5)
    D boards/mips-malta/include/board.h (44)
    D boards/mips-malta/include/periph_conf.h (41)
    D boards/mips-malta/malta.c (28)
    D boards/pic32-clicker/Makefile (2)
    D boards/pic32-clicker/Makefile.features (6)
    D boards/pic32-clicker/Makefile.include (6)
    D boards/pic32-clicker/clicker.c (50)
    D boards/pic32-clicker/doc.txt (18)
    D boards/pic32-clicker/include/board.h (78)
    D boards/pic32-clicker/include/periph_conf.h (65)
    D boards/pic32-clicker/pic32_config_settings.c (117)
    D boards/pic32-wifire/Makefile (2)
    D boards/pic32-wifire/Makefile.features (6)
    D boards/pic32-wifire/Makefile.include (6)
    D boards/pic32-wifire/doc.txt (21)
    D boards/pic32-wifire/include/board.h (89)
    D boards/pic32-wifire/include/periph_conf.h (62)
    D boards/pic32-wifire/pic32_config_settings.c (419)
    D boards/pic32-wifire/wifire.c (56)
    D cpu/mips32r2_common/Makefile (9)
    D cpu/mips32r2_common/Makefile.features (2)
    D cpu/mips32r2_common/Makefile.include (17)
    D cpu/mips32r2_common/cpu.c (81)
    D cpu/mips32r2_common/include/eic_irq.h (70)
    D cpu/mips32r2_common/irq_arch.c (42)
    D cpu/mips32r2_common/mips_dsp.S (151)
    D cpu/mips32r2_common/mips_excpt_entry.S (288)
    D cpu/mips32r2_common/newlib_syscalls_mips_uhi/Makefile (1)
    D cpu/mips32r2_common/newlib_syscalls_mips_uhi/syscalls.c (338)
    D cpu/mips32r2_common/periph/Makefile (3)
    D cpu/mips32r2_common/periph/pm.c (31)
    D cpu/mips32r2_common/periph/timer.c (283)
    D cpu/mips32r2_common/thread_arch.c (384)
    D cpu/mips32r2_generic/Makefile (5)
    D cpu/mips32r2_generic/Makefile.features (1)
    D cpu/mips32r2_generic/Makefile.include (8)
    D cpu/mips32r2_generic/include/cpu.h (48)
    D cpu/mips32r2_generic/include/cpu_conf.h (67)
    D cpu/mips32r2_generic/include/periph_cpu.h (37)
    D cpu/mips_pic32_common/Makefile (2)
    D cpu/mips_pic32_common/Makefile.features (3)
    D cpu/mips_pic32_common/Makefile.include (6)
    D cpu/mips_pic32_common/doc.txt (8)
    D cpu/mips_pic32_common/include/periph_cpu_common.h (69)
    D cpu/mips_pic32_common/periph/Makefile (3)
    D cpu/mips_pic32_common/periph/cpuid.c (18)
    D cpu/mips_pic32_common/periph/gpio.c (209)
    D cpu/mips_pic32_common/periph/hwrng.c (83)
    D cpu/mips_pic32_common/periph/uart.c (91)
    D cpu/mips_pic32_common/reset_mod.S (244)
    D cpu/mips_pic32mx/Makefile (6)
    D cpu/mips_pic32mx/Makefile.features (1)
    D cpu/mips_pic32mx/Makefile.include (28)
    D cpu/mips_pic32mx/eic_pic32mx.c (56)
    D cpu/mips_pic32mx/include/cpu.h (60)
    D cpu/mips_pic32mx/include/cpu_conf.h (67)
    D cpu/mips_pic32mx/include/periph_cpu.h (24)
    D cpu/mips_pic32mx/include/vendor/p32mx470f512h.h (17926)
    D cpu/mips_pic32mx/ldscripts/pic32mx512_12_128_uhi.ld (324)
    D cpu/mips_pic32mx/p32mx470f512h/Makefile (1)
    D cpu/mips_pic32mx/p32mx470f512h/p32mx470f512h.S (2732)
    D cpu/mips_pic32mz/Makefile (6)
    D cpu/mips_pic32mz/Makefile.features (3)
    D cpu/mips_pic32mz/Makefile.include (31)
    D cpu/mips_pic32mz/eic_pic32mz.c (56)
    D cpu/mips_pic32mz/include/cpu.h (60)
    D cpu/mips_pic32mz/include/cpu_conf.h (68)
    D cpu/mips_pic32mz/include/periph_cpu.h (24)
    D cpu/mips_pic32mz/include/vendor/p32mz2048efg100.h (51671)
    D cpu/mips_pic32mz/ldscripts/pic32mz2048_uhi.ld (409)
    D cpu/mips_pic32mz/p32mz2048efg100/Makefile (1)
    D cpu/mips_pic32mz/p32mz2048efg100/p32mz2048efg100.S (6288)
    M dist/tools/ci/print_toolchain_versions.sh (3)
    D dist/tools/pic32prog/doc.md (166)
    M examples/gnrc_border_router/Makefile (2)
    M examples/javascript/Makefile (2)
    M examples/lua_REPL/Makefile (4)
    M examples/lua_basic/Makefile (4)
    D makefiles/arch/mips.inc.mk (68)
    M sys/newlib_syscalls_default/syscalls.c (4)
    M tests/driver_dynamixel/Makefile (3)
    M tests/driver_feetech/Makefile (3)
    M tests/emb6/Makefile (2)
    M tests/gnrc_ipv6_ext/Makefile (4)
    M tests/gnrc_rpl_srh/Makefile (4)
    M tests/gnrc_sock_dns/Makefile (4)
    M tests/pkg_semtech-loramac/Makefile (2)
    M tests/pkg_ubasic/Makefile (5)
    M tests/rng/Makefile (2)
    M tests/slip/Makefile (2)
    M tests/ssp/Makefile (4)

-- Patch Links --


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/notifications/attachments/20190703/fca08ca3/attachment-0001.html>

More information about the notifications mailing list