[Tinkerphones] Dual personality systems (was Re: ZeroPhone site offline)

Paul Boddie paul at boddie.org.uk
Mon Jan 10 22:51:33 CET 2022


On Monday, 10 January 2022 02:27:15 CET Jonas Smedegaard wrote:
> Quoting Paul Boddie (2022-01-09 23:40:08)
> > 
> > The AR100 processor in the Allwinner SoCs appears to be used as a kind
> > of microcontroller without memory management unit, at least from what
> > I can understand from that wiki page, so running vanilla Linux would
> > be out of the question. But there are other things it could presumably
> > be asked to do.
> 
> It was my understanding that the AR100 was unusable for running Linux -
> until I read that wiki page, which to me seems to explicitly mention
> running linux on it - in the very section header, ever:
> > Mainline Kernel Support
> 
> I am not knowledgeable in this low-level stuff though, so I take your
> word for it.

I wouldn't know without really taking a look at it. However, it sounds like 
the Linux support would be comparable to what has been done (or attempted) 
with the Ingenic auxiliary cores (AUX and MCU), meaning that the additional 
core is supported by a Linux driver which allows code to be transferred to the 
core and then run. This is obviously different from actually running a kernel 
on such a core: even the driver supporting the core is external to it, merely 
offering the mechanism to control it.

It seems that the appropriate terminology for this kind of Linux support is 
"remoteproc", and here is what is currently in the mainline kernel:

https://elixir.bootlin.com/linux/latest/source/drivers/remoteproc

The Ingenic stuff seems to have made it here now:

https://elixir.bootlin.com/linux/latest/source/drivers/remoteproc/
ingenic_rproc.c

And here is where the documentation lives:

https://elixir.bootlin.com/linux/latest/source/Documentation/staging/
remoteproc.rst

For the CI20, Ingenic made a version of MPlayer available that initialises the 
AUX core, but it used its own mechanisms for doing so:

https://www.elinux.org/CI20_MPlayer

Naturally, you could just ignore Linux when initialising and using such a 
core, as we discuss below.

> [...]
> 
> > I suppose that if it were possible to power down the main cores and
> > just keep the auxiliary core operating (perhaps more feasible with the
> > AR100 given its apparent use with power management), the aim would be
> > to somehow wake up the main cores in a state where they can present
> > the user with an interface upon some kind of telephony event.
> 
> That I know for a fact is not only theoretical speculation: It is
> possible to fully power down the main cores and keep only the AR100
> running: The reason I maintain the gcc compiler for AR100 is for Crust,
> a free firmware that I have succesfully used to put my Allwinner
> A64-based Teres I laptop to deep sleep:
> https://github.com/crust-firmware/crust - or Debian package
> crust-firmware.
> 
> That codebase has some quite informative commit messages in the git
> source, which I imagine that someone more skilled than me can benefit
> from digging through to understand much more on what has already been
> mapped out of the AR100 functionality.

That looks very interesting! I also see that functionality is present for 
dealing with our favourite HDMI peripheral - Synopsys DW-HDMI - which I now 
remember is also present in Allwinner SoCs, albeit in a different 
configuration to what we have had to deal with on the JZ4780/CI20.

I only briefly looked at Allwinner A64 hardware a while back, perusing the 
Olimex KiCad files to see what their designs entailed, and the only Allwinner 
hardware I expected to get my hands on at some point was the EOMA68 effort's 
A20 computer card which won't have this kind of functionality and may not ever 
be delivered, anyway. Had that initiative proceeded differently, maybe there 
might have been an A64 computer card, but I rather think we are well beyond 
that point now.

Paul




More information about the Community mailing list