Uploading firmware to RAM of Jetson TX2 NX in RCM

Hi,
I am looking for an easy and portable way to upload from a Linux system an existing executable binary to RAM of Jetson TX2 which boots in RCM, and then execute it. I don’t want to use anything big like SDK manager or scripts that would build the entire system. For the current project I need to keep it as simple as possible.
BootROM correctly enters RCM, and tegrarcm can communicate with it. I believe that there is a way to tell BootROM to store the code in a given range of memory and then to “call it” for execution. However, I am not able to find how can this be done. My guess is that it takes a correct applet for BootROM and then correct message exchange.
Please, let me know if this is documented somewhere - I haven’t found anything, but maybe I wasn’t looking for the correct thing.
Best regards,
Adam

There is no such function supported. And that is why you cannot find any document for this.

What we can support is RCM boot. Which flashes the whole BSP file into RAM. Let it has one time chance to do the work.
If you reboot the device, then it will fallback to emmc again.

Hi WayneWWW,

what do you mean by “flashes (…) into RAM”?
This sounds kind of exactly what I need: put some code into RAM and execute it (without execution it makes no sense).

Is this documented?

Best regards,
Adam

Hi,

No, this method does not put a “code” into RAM and execute. It puts the whole ubuntu to the RAM.

Currently, sdkmanager (or flash.sh) will flash the whole system image to the emmc, boot to the emmc and then operate the OS.

The difference here is we replace the “emmc” to “RAM”. But since this RAM, if you reboot the device, it will just be gone.

I’m not sure if I understand. Please, let me know some more details.

I guess it doesn’t really matter if it’s Ubuntu, or just a binary with random contents, unless the CPU has some hardcoded way of validating that it really is Ubuntu. Putting anything into RAM just to lose it after reboot makes little sense. So what happens with this Ubuntu already in RAM? Can it be “useful” in any way?

If I can put the binary to eMMC to get it executed, it’s OK too. But I need a way to do so avoiding “big things” like sdkmanager or even flash.sh. Therefore I want to learn to talk to BootROM directly.

Is RCM documented? I had no luck searching, but maybe I was searching incorrectly.

My point is it is not able to prevent “big things”. Everything requires flash.sh to work.

What we can teach you it just flash the whole ubuntu into RAM. And the whole process is totally similar to how to flash the emmc.

Well, even flash.sh has to talk to BootROM or whatever is implemented in
the hardware (maybe RCM is not handled by BootROM, but other embedded
app, maybe the emmc is made externally accessible, maybe there are other
ways too). So this surely is possible.

I understand that the documentation may be not disclosed. Is this the case?

It is not only “the document not disclose it”.

Make it more easier to understand, our official support only have those flash scripts. And those flash script cannot just let you to flash a binary to RAM and let it run.

It must flash bootloader, and kernel. I am not sure if this is “something big” for you.

Thanks for clarification.
Well, I’m not sure yet. I guess I can feed the useful thing as
“bootloader” and any random garbage for “kernel”. Maybe this will be
good enough.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.