mudita / MuditaOS

Mobile operating system based on FreeRTOSβ„’ optimized for E Ink displays - developed for Mudita Pure minimalist phone
https://mudita.com/products/pure/muditaos
Other
642 stars 70 forks source link

How to port to Raspberry Pi Zero (ZeroPhone)? #3214

Closed niutech closed 2 years ago

niutech commented 2 years ago

πŸ“š Missing or unclear documentation

πŸ“ Description

Please provide documentation on how to port MuditaOS to other platforms such as Raspberry Pi Zero (BCM2835), which powers ZeroPhone with some e-paper display (e.g. Waveshare).

πŸ“ Describe the solution you'd like

There is a port of FreeRTOS for BCM2835 and another one, but maybe it would be easier to start off with the Linux port.

As an open source project, the OS shouldn't be tied to a single board. Thanks!

pholat commented 2 years ago

Broadly speaking: it depends. Just running MuditaOS on RPI Zero shouldn't be too hard.

  1. cross-compile the Linux target
  2. run ./PurePhone application on raspberry pi 0 target. ( There is a catch with it - we do not have any publicly available font so it will fail miserably at the start) This would be a very good beginning.

Having the app compiled it shall run as it is. It won't be too functional though and very energy inefficient - due to the limitations of FreeRTOS emulation. If you connect the Quectel EC25 modem via USB - then it shall be not too hard to hack it to be a usable phone. To make it properly energy efficient it would require either dropping the FreeRTOS emulation layer and switching to POSIX threads and pipes, or a better FreeRTOS wrapper. The first would be harder, but shall prove to be better in the long run. After that, it would require proper power profiling and power management adaptation.

Saying all of that, while striving to meet our goal which was a usable product it may not be the best-layered software, but an experienced user should be able to hack it to his heart content :) I would strongly encourage you to give the first step a try!

niutech commented 2 years ago

Thanks for an explanation. As for Linux, how to install the missing font? As for FreeRTOS, will MuditaOS run on any hardware which is supported by FreeRTOS? Provided that RPi Zero has a usable port of FreeRTOS, will MuditaOS work out of the box?

pholat commented 2 years ago

as for missing font - the issue is we do not have proper non-OSS distribution. The best way would be to provide an alternative font set. It's possible, but it requires a bit of work and as we are closing to release date - the time is at essence. As for FreeRTOS - yes, it will run on any FreeRTOS supported platform, but you will have to provide BSP (board support layer) for each. Provided that RPi Zero has a usable port and there is a BSP layer provided - it should work out of the box.

The very first step will be: adding a new platform. Right now we have compilation for rt1051 or Linux, so you will have to add TARGET rpi0 and CMAKE_TOOLCHAIN_FILE - please look into ./configure.sh

In CMAKE_TOOLCHAIN_FILE you will have a compiler set for the Broadcom chip. Then it's pretty straightforward - try to compile and add the required BSP image

niutech commented 2 years ago

Thanks again. As for the font, aren't you using DejaVu Sans by default? It is based on permissive and public domain license, so can't you just bundle it? And by providing an alternative font, do you mean https://github.com/mudita/MuditaOS/issues/3216#issuecomment-975510308?

pholat commented 2 years ago

Yes, DejaVu Sans is a default font - and with a reason, it has all the glyphs we needed :) Providing DejaVu is actually a pretty simple matter - but we shall plan it properly so that it won't be only added, but also it will be properly usable, documented etc. and that will take a bit of time.

Please let me know if you happen to configure a new target :crossed_fingers:

pholat commented 2 years ago

No further comments, issue closed. Please reopen if required :)