getting-started icon indicating copy to clipboard operation
getting-started copied to clipboard

[HDMI2USB] Port Linux to the lm32 CPU and support HDMI2USB firmware functionality

Open mithro opened this issue 9 years ago • 3 comments

Brief explanation

The HDMI2USB gateware currently includes a lm32 soft core. The misoc version has an MMU and should support running a full Linux kernel.

Expected results

Linux booting on the HDMI2USB gateware.

Detailed Explanation

There is a bunch of extra information in the LiteX Linux Support Random Notes Google Doc.

The HDMI2USB-misoc-firmware embeds a LM32 soft-core for controlling and configuring the hardware. See the diagram below;

MiSoC firmware structure

This soft-core should be able to run Linux Kernel, which means we would get access to a lot of good things;

  • Access to well tested TCP/IP stack (useful for IP based streaming).
  • Access to well tested USB stack (useful for the USB-OTG connector).
  • Access to kernel mode setting for edid processing and DisplayPort stuff.

Work on this was started by the MilkyMist / M-Labs people.

There is a port of the lm32 to qemu which will help, see https://github.com/timvideos/HDMI2USB-misoc-firmware/issues/86

Further reading

  • https://en.wikipedia.org/wiki/LatticeMico32
  • https://lwn.net/Articles/647949/
  • http://m-labs.hk/milkymist-wiki/wiki/index.php%3Ftitle=Milkymist_Linux_cheat_sheet.html
  • https://wiki.debian.org/HelmutGrohne/rebootstrap#lm32
  • www.latticesemi.com/view_document?document_id=28118 - Linux Port to LatticeMico32 System Reference Guide
  • http://www.ubercomp.com/jslm32/src/ - Javascript LatticeMico32 Emulator (runs Linux) - Ubercomp

Knowledge Prerequisites

  • Linux Kernel knowledge
  • Strong C knowledge.

mithro avatar Feb 03 '16 00:02 mithro

Just dropping a note so that people know a good amount of work on this has been done in linux-lm32

John-K avatar Sep 29 '17 10:09 John-K

http://j.mp/pre-fpga-lca2018

Linux isn't possible on lm32, due to bitrot. However we have it booting on or1k. 10/100 Ethernet is also working as of Jan 2018. See above instructions.

Google Docs
Linux.conf.au 2018 FPGA Miniconf Set Up Instructions https://j.mp/pre-fpga-lca2018 Aim Requirements Pre-work for the Miniconf Download & Install Vivado Download & Install LiteX Dependencies Download & setup udev rules Download & setup the LiteX Build Environment Resuming Development Test build...

futaris avatar Feb 13 '18 06:02 futaris

Also, I might add that current lm32 Linux port, whatever its bitrot state, isn't using the MMU. It's uCLinux (noMMU). MMU is experimental also.

fallen avatar Jun 05 '19 10:06 fallen