OESF Portables Forum
Model Specific Forums => Gemini PDA => Gemini PDA - Hardware => Topic started by: 41CH3M157 on December 05, 2019, 03:53:55 pm
-
Three decades ago my Dad bought a ZX80 assembly book. After spending a long time in a cupboard he made an office, having almost finished writing a word processor from scratch, a bug evaded him in the huge roll of dot matrix printout; still love that noise; of lines and lines of assembly. Unfortunately he lost interest in software.
I've researched computer science quite a lot, yet still know so little. No piece of hardware gave me the bug, the one that draws you in and won't let go. That was, until I saw the Planet Gemini PDA. After two years of pining I took the plunge during the recent Black Friday sale. I am in love. I wish to know Planet's Gemini PDA as well as my Dad knew the ZX80; Computer Science, ARM Assembly, and C. Then write open source software and firmware.
I am aware of the enormity of this task, especially as smartphone chip set manufacturers seem to care little about customers who wish to understand the product they own. The word 'proprietary' makes me want to scream, "I just want to understand how your firmware works so I can develop for this device! How can one ethically own mathematics!?", and wise crack about Einstein or Newton making their calculations proprietary.
At the same time modernity does have its benefits; internet communities, forums, tutorials, GitHub, Stack Overflow, GNU, Linux, DEF CON, etc; luxuries my father didn't have. So, getting to the point, I write this to introduce myself to the community, share my goals, ask for pointers, and use this thread as a place to amalgamate as much information as I can on Planet's Gemini PDA hardware, the Realtek chip set, ARM chipsets in general, modems. Though all pie in the sky pipe dreams at the moment I will do my best and see what I come up with.
I got in touch with Realtek to see if they would send me the data sheets for the chip set, they advised they only give them to customers who buy in large quantities, so I should ask Planet Computers as they will have them and might be willing to share. I have emailed PC, though they stated they were busy at the moment; understandably with the Cosmo being released; and my request will be handed to a developer. I live in hope.
Another route may be to get my hands on the data sheets for the Realtek X20 MT6351 Development Board. As apparently it is very similar to the X27 board, though I will need someone who knows their stuff to verify that.
Finally, to sign off, run it up the flagpole and see, who salutes,
"They're trashing our rights man!
They're trashing the flow of data!
They're Trashing! Trashing! Trashing!!
Hack the PLANET!!!"
Yours Faithfully,
41CH3M157
-
Just to get myself started with basic specs from the Planet Computers Website.
Chipset: Mediatek MT6797X Helio X27 (Deca Core)
CPU: 2x Cortex A72 @ 2.6 GHz, 4x Cortex A53 @ 2.0 GHz, 4x Cortex A53 @ 1.6 GHz
GPU: Quad Core ARM Mali T880 MP4 @ 875MHz
I know this is everywhere, but I have to start somewhere.
-
This is what I found regards Data Sheets on the Mediatek X20 Development Board.
https://www.96boards.org/documentation/cons...-manual.md.html (https://www.96boards.org/documentation/consumer/mediatekx20/hardware-docs/hardware-user-manual.md.html)
Though I am still to fully read through it so do not know how much is useful or relevant.
-
This wiki
https://en.wikichip.org/wiki/mediatek/helio/mt6797x (https://en.wikichip.org/wiki/mediatek/helio/mt6797x)
states:
"The Helio X27 is identical to Helio X20 with higher CPU clocks speed and higher GPU clock speed."
-
Found this. Should be useful. Feel kinda bad now as clearly the info is out there I just wasn't looking hard enough.
https://www.96boards.org/documentation/cons...dditional-docs/ (https://www.96boards.org/documentation/consumer/mediatekx20/additional-docs/)
-
Hello,
it sooo much reminds me of myself reading this. The much younger me, though I really wrote my own text processor in 6502-assembler for my beloved Atari 800XL, which I even used to write my diploma thesis.
Unfortunately I allways was slow, and by the time I had figured out how to code things there were kids half my age who were into serious software development. So I didn't follow that path so vigorously anymore.
Though I see now that especially when it comes to Android apps, I could be the shark in the pool again. If I only was eager enough to learn the depth of application devolopment. When I see what heaps of crap is out there, I can't understand how people couldn't do better. But I learned that many people who call themselves software developer just are kids playing with Lego: all they can do is puzzle together preconfigured modules from a software construction kit, mostly without even knowing what they put in there, and what goes on under the hood.
I had an increasingly angry (on both sides) discussion lately with a supplier of a product coming bundled with an Android app, after I had found out that even for the basic functionalities the app would connect to several servers out there, most of which I could not figure out where exactly they are and what the heck they were doing. The first few answers from the supplier were down the lines of "No, we don't do that! You are wrong! There must be something else on your device that connects to external servers!", and first after I sent them a log list showing plainly that is was their app that connects to servers together with IP addresses and some information I had found about those servers, they started to even take my question seriously. After they explained one server out of at least five they connected, I asked - grindingly politely - to get to communicate with someone who actually knows what they are talking about.
The long and the short of it, they didn't even know what their app was doing. They finally admitted that they had just taken modules, let's say for "cloud storage", from some kit and put it in, without knowing - and what I blame them for: without even asking - what they got in addition. They then even went as far as whiningly asking me for advise how to solve the problem. Well, I couldn't give them any, maybe I could have earned some money
And I have given up asking people, even suppliers and developers, for extended information of anything. Last time I tried was when I stupidly bricked an Android tablet, unfortunately one of a not very widely used brand, so there was no community keeping busy with it. Finally I wanted to know how that "bootloader" thingy actually worked and whether there is a way to fire up a device with a certain processor and chipset undependently of the Android flavor that is planned to run on it. All I got was some superficial information and references to "flash tools" and the occasional hint to getting the firmware from the supplier (which the supplier was unable or unwilling to provide). All that showed me that 99,99% of the people didn't even understand the question, or thought that their ability to use a flashtool - which they didn't understand a thing about - to put some firmware - which they knew even less about - onto some device - which they had no idea of how it works - made them "experts", and that I was asking the stupid questions. Unfortunately the 0,01% of the people who read my questions and might have been able to provide some really useful information didn't do so. Maybe they looked at their knowledge as their capital, thus not being willing to share it for free.
So, it is nice to know that there are still people out their who try to really understand the wonders of modern technology and use that knowledge to make something useful and maybe even better. I wish you all the luck and success in the world on you journey!
-
Hi Eldkatten,
That is something to be really proud of having written a text processor in assembly, you must have learned so much in the process, I haven't got much past writing hello world scripts as of yet, I am a bit weird in that I always want to go from first principles and have only recently decided that I definitely want to learn from computer science from assembly up, no compromises. Even if for some reason the majority of people seem to want to try to talk me out of it.
My Dad always says he gave up due to thinking there are younger and better programmers out there. I think he underestimates his capability; and the laziness of others; too modest, and in reality has really good knowledge. I wish he, and you, would find your passion for it again, we need good people like you guys to share your knowledge.
There are so many out there just bashing scripts together and hoping for the best, they are often called 'script kiddies' as a derogatory term. It is difficult, you don't want to put anyone off learning, though lack of standards leaves software with much to be desired. So few seem to truly understand computers down to the bare metal and have the capacity and patience to write good code. Though perhaps I judge too early, I haven't really met many people into programming.
It is disgusting to hear about your encounter with the cloud app developers; no respect for their customers security and privacy. This as far as I can tell seems to be becoming more prevalent as more apps become web apps instead of run locally. People seem to forget the cloud is just someone else's machine. It is one of the reasons I want to get into programming, to solve some of these issues, I find it quite motivating to have this cause, so many are happy to use things without any idea of how they actually work, I hope to become part of the solution instead continuing the cycle.
Regards the searching for extended information I have had the same problems. It seems I got lucky with the Gemini having a development board so similar. Though I did buy a small cheap Intel laptop from Curries prior to this, tried to find out what the chip set, who produced it, no avail, nobody seemed able to tell me, very frustrating.
I think you could be right regards people keeping things under their hats, for the reason you state, and also as I find people in this field seem to have imposter syndrome; either delusionally or rightfully so; and worry about saying something wrong. It is sad as only a small amount of people are truly interested in how things work, we have to share our knowledge the best we can or risk a technocratic elite. No good having open source software if we are not being open with each other. I hope to buck the trend, I am open to a fault, I actually worry it might get me in trouble one day, but so be it.
Thanks for you kind words of encouragement, and as I said before I really do hope you find the bug for it again you seem to be pretty wise to the way things are and we could do with more good guys.
Yours Faithfully,
41CH3M157
-
"The application processor, a Tri-cluster having
Multi-core ARM® Cortex-A72 and ARM®
Cortex-A53 MPCoreTM equipped with NEON
engine offers processing power necessary to
support the latest OpenOS along with its
demanding applications such as web browsing,
email, GPS navigation and games."
Seems like it could be important, I will look up the ARM NEON Engine and OpenOS.
Could OpenOS be what is being used as the primary boot loader?
-
"An ARM® Cortex-R4, DSP, and 2G and 3G
coprocessors combined provide a powerful
modem subsystem capable of supporting LTE
Cat 6, Category 24 HSDPA downlink and
Category 7 HSUPA uplink data rates, Category
14 TD-HSDPA downlink and Category 6 TD-
HSUPA uplink, as well as Class 12 GPRS,
EDGE."
Seems this explains which processors the RF modem will be linked to, though it seems it doesn't have one built in. I am sure there must be some kind of standardised way of communicating with this chip though.
-
Right, I have been looking through the register paperwork and honestly have no idea what I am doing. At least the URLs are saved here for a later date. So now I am going to look up some tutorials on Computer Science and developing for ARM, etc. I hope this style of working is fine with you guys on the forum. I just feel like sharing this here is helping me stay motivated and helping to organise my thoughts as I progress.
-
I can identify with the sentiment behind this thread, but I fear computers have become far too complicated for anyone to gain a deep understanding of more than one or two layers…
Interestingly, one retrospective of the Psion Series 5 — to which the Gemini is a spiritual successor — was titled Psion: The Last Computer (https://www.theregister.co.uk/2007/06/26/psion_special/), as it was the last time a computer was created from scratch: an entirely new chip, new hardware, a new OS and middleware, and new application software. (IIRC, Psion created everything themselves except for the processor, which was by ARM.)
It's a fascinating story — especially for someone like me who used a 5mx for 20 years until the Gemini arrived — but sad in a way, as no-one's ever likely to do so again. Every aspect has become too complicated to go it alone. And of course that's how Planet Computers has been able to create something like the Gemini and Cosmo with only a handful of people: by using existing chipsets, screens, OS, and applications.
(In fact, although I delved deep into my Psion, and wrote quite a bit of software for it, I still don't feel I understood it all. The last computer I did was the BBC Micro (https://en.wikipedia.org/wiki/BBC_Micro), for which I knew the entire memory map and rewrote part of the OS…)
So while I applaud your enthusiasm, you might want to restrict your sights a little in order to avoid too much disappointment…
-
So while I applaud your enthusiasm, you might want to restrict your sights a little in order to avoid too much disappointment…
I'd echo this, you could spend the rest of your life trying to master low-level multi-thread compartmentalisation and you'd probably never get there because they keep designing new chips with different protocols.
For some things use the APIs, choose your areas of specialisation with care.
I used to be able to program a Z80 in machine code, I wouldn't know where to start with current processors.
-
Hi Andy,
Thanks for sharing. This could very likely be true, which will sadden me very much if it is the case. Has technology really surpassed us? I want to learn computer science and programming so much yet have no idea where to start that will grab me. If I have do another hello world script I will scream, I want something I can explore.
I hear this kind of thing regularly and seem to be driving myself half mad going round in circles. I hoped this time would be the time it all works out, and still hold out some hope that I will make it at least some of the way this time.
Part of me feels that this has become the case due to either laziness in keeping systems simple enough to do the tasks they need to do; bad coding, lazy design. That mixed with purposeful obscuring of what doesn't need to be so difficult.
But perhaps I am paranoid. :/
Again thanks for your post, really nice read. I also enjoyed the article you shared. I had a quick wiki of Psion afterward, didn't realise the curse of the portable linux device had beat them too. Why is it so hard to make a portable version of Linux?
Yours Faithfully,
41CH3M157
-
Hi DJO,
Thanks for the post.
I want this more than anything, at first it would only be this device I would be interested in. Maintain this device best I can and buy a few when they are cheaper in case this one breaks. Worst comes to worst I can use this as a thin client for a more powerful computer indoors over LTE. I see no reason I should need more power than this in my pocket. So that resolves the issue of changing technology. Additionally I should learn so much in the process that it would surely cross over to other things.
Though I do fear you could still be right. Maybe I don't have it in me to even learn this one machine. If that is the case I might as well just get rid of the bloody thing and go back to owning an apple and succumb to facejacker and google owning everything, call it a day with computer science. That would suck. The tech-oligarghy wins, The End.
Sucks that tech has become so compartmentalised. Perhaps I am paranoid, but it seems purposeful.
Your Faithfully,
41CH3M157
-
... the Gemini is a spiritual successor — was titled Psion: The Last Computer (https://www.theregister.co.uk/2007/06/26/psion_special/), as it was the last time a computer was created from scratch...
A quote from the linked article:
And also, we treated what were really “best case” targets as deadlines, and of course hurt ourselves by rushing things to try to achieve the unachievable.
Planet should have learnt that lesson but it seems to have passed them by.
-
DJO,
I think that is a really valid point. I can't help but feel we collectively keep being impatient and wanting progress for the sake of progress, issue is we also are not collectively keeping up with the changes.
Just don't see why we seem to struggle to keep our data organised? Why are we working on so many different projects as humanity in tandem? Seems to me computers are all based around mathematics as much as we work in a way that seem linguistic, underneath it is all mathematics. With mathematics there is only usually one right way to do a specific task in the most efficient way. So why is there so many different high level languages? Why is there so many different types of processor architectures? Surely open sourcing makes the most sense in these scenarios just like any other science.
I am not against progress but how about we all just slow down a bit. Less haste and more speed?
How about working to help humanity to catch up educationally to technology before going down new avenues?
-
Well I seem to have relatively exhausted my capacity to look into this area for now. I am glad I have found these documents as they will hopefully be something I will come back to and find useful in future. Now to explore the next avenue, software.
Just going to ask here as you both seem to have some knowledge regarding software development.
I notice that the Android Kernal and Boot Loader have been open sourced. I thought an interesting project for me to have a little go at might be having a look through the Boot Loader source.
https://github.com/dguidipc (https://github.com/dguidipc)
Could either of you point me in the right direction of which part is the Boot Loader source?
Thanks in advance,
41CH3M157
-
Hi and welcome to OESF. To really get under the hood of modern computers, including those we call phones, one needs to be or become something of a modern alchemist, able to gather and convert scattered, often incomplete, information into deep, esoteric, knowledge. Then again, while computers are more complex than ever, there's also more information, more powerful tools and better means of communication than ever. I wish you great success.
Just reading the labels, it seems the LK (Linux Kernel, I presume) bootloader for Android 8 is in
https://github.com/dguidipc/gemini-lk-android8 (https://github.com/dguidipc/gemini-lk-android8)
Then there seems to be more stuff in
https://github.com/dguidipc/gemini-lk (https://github.com/dguidipc/gemini-lk)
While I am a software developer by trade, Android and ARM stuff is largely beyond my current (mostly Windows) horizon, so those are the only pointers I can provide, I'm afraid.
As a comment, yes, previously when trying to find out what I might miss when I got an X25 chip in my early production Gemini, I also came to the conclusion that all X2- chips (as far as I know X20, 23, 25 and 27) are identical, except for their peak clock speed, and the differences are tiny. Documentation for either of the chips, should be equally valid, though references to configuration, software and standards might be out of date in older documents.
-
Hi Daniel,
Thanks for your post and encouragement, a really nice read, it gives me hope. I am pleased to see we seem to have a common interest in esoteric knowledge. All is data; input, storage, process, output. I agree that there is more information out there than ever and it will take quite a few modern day alchemists to organise it all so it can fit on one stone, tablet.
I really appreciate you sharing you knowledge with me. I have done a little research since I first read your post and it seems a very good place to start. I am still unsure if it is the primary or secondary boot loader, though I am sure I will find out in time. Regards the chip sets being similar enough to make some comparisons I am very happy to hear that.
Found an interesting video today on the boot loading process of ARM chips. Likely simple for someone like yourself, though I found it enlightening regarding how to read tech docs and the boot process of ARM chips, perhaps it may assist others.
Again many thanks for you input and encouragement, I appreciate it more than you likely realise.
Yours Faithfully,
41CH3M157
-
Here is a video I found on ARMs ROM boot loading process. Was helpful to understanding a bit more about the above, and also how to go about reading technical documents.
https://youtu.be/DV5S_ZSdK0s (https://youtu.be/DV5S_ZSdK0s)
-
Hi All,
After researching Little Kernal, and other options for SPLs (Secondary Program Loaders)/ MLOs (Memory Loaders), I wonder why Android doesn't use U-Boot instead of Little Kernal. U-Boot's documentation seems much better. Perhaps there's a valid reason?
Tomorrow I hope to make concise the information from the prior video to make it easier for me to revise the information. Then do some digging around in U-Boot's GIT (https://github.com/u-boot/u-boot/blob/master/README) to get a better idea of how it works. Thanks again to everyone who has posted, I am really pleased to have found such a welcoming community.
Yours Faithfully,
41CH3M157
p.s. Still love my Gemini, do everything on it, getting faster at typing, keeps me super motivated.
-
Slightly off-topic but have you considered the Pyra (https://pyra-handheld.com/boards/pages/pyra/)? It's a community driven PDA, fully open (as can be these days: does not include some of the radio component drivers). Not out yet but soon (hopefully).
-
Hi Eric,
I hadn't seen it before so thanks for the share. At the same time, to me; and it is just personal preference, it is just not in a form factor that I would find as appealing. The keyboard in the Gemini is just so good. With every piece of hardware I have felt I had to make some kind of compromise, I don't feel this way about the Gemini. Additionally, the more I look at the Gemini, the more I realise that most ARM devices are relatively open for those with the time and patience to do the research, those with the eyes to see as they say. Personally, at least for now, I think I am more interested in working on learning the parts of the Gemini that are open, and eventually I will attempt to backwards engineer any parts that I find are not.
Yours Faithfully,
41CH3M157
-
Summarised Information Gathered from Video Above
Arm chips have three levels of boot loader.[/u]
1) ARM ROM boot loader; etched into chip.
2) SPL (Secondary Program Loader)/ MLO (Memory Loader);
AKA 'Primary Boot Loader' though ROM is first, a bit confusing, usually stored on internal SD.
3) Secondary Boot Loader;
Similarly to above, a bit confusing as it is actually third; again usually stored on internal SD.
Process of Booting
ARM ROM runs automatically when chip powered.
ROM searches peripherals, in serial, searching for SPL/MLO.
(I read that there is a private key in ROM, the MLO must have the public key to be trusted.
Though I will need to do some more research into this to know for sure.)
MLO loaded onto chips internal RAM, usually small; around 64kb; the ROM hands off.
MLO has firmware to load PCB RAM, loads secondary boot loader into PCB RAM;
and a config folder which I also need to do some more research on.
Once secondary boot loader on PCB RAM the MLO hands off.
Secondary Boot Loader then searches peripherals for the Kernal Boot Loader.
Further Research Since
Seems the main two SPL/MLOs are 'Tiny Kernal' for Android and 'U-Boot' for everything else.
Quite pleased most of the important stuff can be played with as it's open source; may need the public key if needed. Though the ROM is hard etched, it seems relatively standardised, so there should be info on how it works and how one can interact with it.
It seems the chips being setup as they are in the Gemini (clustered multi core) there will be a chip that acts as master in the boot process (perhaps the MCU?), and something called a... spin table? to boot the rest of the cores. Will have to more research, but so far so good.
Hope this helps someone. It helps me organise myself, so thanks for putting up with my blabbering. I may get things wrong, I know little about all this, just sharing what I learn as I go along. If you notice something I have misunderstood please feel free to let me know. Next I'll look for ARM Assembly and more about U-Boot and Little Kernal.
Yours Faithfully,
41CH3M157