Author Topic: Announcing Rip'Em, a third-party firmware for the HP Prime  (Read 10567 times)

0 Members and 2 Guests are viewing this topic.

Offline Jean-Baptiste Boric

  • LV2 Member (Next: 40)
  • **
  • Posts: 21
  • Rating: +1/-0
    • View Profile
Announcing Rip'Em, a third-party firmware for the HP Prime
« on: December 25, 2015, 05:09:06 am »
Ran out of presents to rip open? How about ripping open your HP Prime for science?

This is Rip'Em, a third-party firmware for the HP Prime calculator. It is a (rather primitive for now) unofficial bootloader that replaces PRIME_OS.ROM and is currently written by someone who doesn't know what he's doing.

For now, unless you can connect to the 3.3v TTL serial port inside the calculator nothing too exciting will happen.

What you can do with it for now :
  • Launch a homegrown GDB stub over serial (only suitable for poking memory and upload/run code) ;
  • Launch a single ELF file as a payload. Current payloads available are :
    • dummy.elf : A dummy payload that blinks the LEDs so you can hang your HP Prime to your Christmas tree ;
    • PRIME_OS.ROM : The official firmware can be launched using the osrom2elf tool supplied.
  • Write your own application on bare metal using the libraries supplied.

Current plans and what you can do to help :
  • Play around with Rip'Em ;
  • Use the GDB stub to figure out the hardware ;
  • Replace the homegrown GDB stub with the real stuff ;
  • Write a USB serial driver to enable the GDB stub to work over it ;
  • Add the ability to have multiple payloads, to read payloads from the FAT16 partition in PRIME_APP.DAT and to select a payload with a simple graphical user interface.

Non-goals (at least for me) :
  • Reverse-engineering, patching or otherwise tampering with the official firmware. The TODO list is already big enough to keep me busy for a long time ;
  • Bloat within RIp'Em itself. It's an ELF launcher, not a operating system. Even the GDB stub should be demoted as a payload eventually.

Source code available over at https://github.com/boricj/ripem. Kudos to Lionel Debroux for being the first one to run a third-party firmware on the HP Prime.

As always : please void your warranty in a responsible manner. I will decline any responsibility should you turn your HP Prime into the thinnest CAS calculator brick available currently on the market.
We're gonna have a geeky Christmas,
That is what we'll do.
We're gonna have a geeky Christmas,
Hope you'll have one too.

Offline pimathbrainiac

  • Occasionally I make projects
  • Members
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1731
  • Rating: +136/-23
  • dagaem
    • View Profile
Re: Announcing Rip'Em, a third-party firmware for the HP Prime
« Reply #1 on: December 25, 2015, 07:15:13 am »
Yet another reason to want a prime for myself!

This looks amazing! Keep up the good work!
I am Bach.

Offline TIfanx1999

  • ಠ_ಠ ( ͡° ͜ʖ ͡°)
  • CoT Emeritus
  • LV13 Extreme Addict (Next: 9001)
  • *
  • Posts: 6173
  • Rating: +191/-9
    • View Profile
Re: Announcing Rip'Em, a third-party firmware for the HP Prime
« Reply #2 on: December 25, 2015, 09:36:27 am »
This is a very good start. Congratulations on your accomplishment! ;D

Offline Jean-Baptiste Boric

  • LV2 Member (Next: 40)
  • **
  • Posts: 21
  • Rating: +1/-0
    • View Profile
Re: Announcing Rip'Em, a third-party firmware for the HP Prime
« Reply #3 on: January 01, 2016, 05:01:26 pm »
Just a quick update : Rip'Em can now use the LCD screen on the HP Prime. The dummy payload has been updated to take advantage of it, displaying the current time from the RTC on it.

Next goal is to figure out the keypad.
We're gonna have a geeky Christmas,
That is what we'll do.
We're gonna have a geeky Christmas,
Hope you'll have one too.

Offline Jean-Baptiste Boric

  • LV2 Member (Next: 40)
  • **
  • Posts: 21
  • Rating: +1/-0
    • View Profile
Re: Announcing Rip'Em, a third-party firmware for the HP Prime
« Reply #4 on: March 04, 2016, 04:43:07 pm »
New stuff added since last time :
  • Complete keypad support ;
  • gzip-compressed payloads ;
  • Graphical menu to select a payload to launch ;
  • Dumb integer RPN calculator demo, complete with 26 (a-z) variables.
The ability to boot the original firmware is crippled for now (only booting the diagnostic screen works).

I have now run out of simple things to implement. I can't push this thing any further without first porting a real-time operating system and making a USB GDB stub...
We're gonna have a geeky Christmas,
That is what we'll do.
We're gonna have a geeky Christmas,
Hope you'll have one too.

Offline Hooloovoo

  • LV5 Advanced (Next: 300)
  • *****
  • Posts: 225
  • Rating: +22/-0
    • View Profile
Re: Announcing Rip'Em, a third-party firmware for the HP Prime
« Reply #5 on: August 24, 2017, 07:15:18 am »
Is there a way to get past the 1Mb limit in PRIME_OS.ROM? I have a project which would really stand some more code space.
"My world is Black & White. But if I blink fast enough, I see it in Grayscale." -tr1p1ea
Spoiler For some of the calcs I own:



(actually I have quite a few more than this, but I don't feel like making bars for them all.)

Offline Jean-Baptiste Boric

  • LV2 Member (Next: 40)
  • **
  • Posts: 21
  • Rating: +1/-0
    • View Profile
Re: Announcing Rip'Em, a third-party firmware for the HP Prime
« Reply #6 on: August 25, 2017, 12:17:35 pm »
Currently no, since Rip'Em can't access the NAND so it's limited by the 1 MiB that BXCBOOT0.BIN loads.

However, with the recently-created, QEMU-based emulator (https://github.com/Gigi1237/qemu) I can now rewrite Rip'Em to include such functionality. If you can use the emulator, you can use its -kernel option to load large ELF files (limited by RAM capacity).
We're gonna have a geeky Christmas,
That is what we'll do.
We're gonna have a geeky Christmas,
Hope you'll have one too.

Offline Hooloovoo

  • LV5 Advanced (Next: 300)
  • *****
  • Posts: 225
  • Rating: +22/-0
    • View Profile
Re: Announcing Rip'Em, a third-party firmware for the HP Prime
« Reply #7 on: August 25, 2017, 07:00:34 pm »
Ah, good to know. I have been using it and fixing some things on the emulator, and my branch I think does interrupts well enough to run the OS. I'm not sure how exactly the rest of the OS is loaded.
I hadn't been using the -kernel option, but I'll definitely start.
"My world is Black & White. But if I blink fast enough, I see it in Grayscale." -tr1p1ea
Spoiler For some of the calcs I own:



(actually I have quite a few more than this, but I don't feel like making bars for them all.)