summaryrefslogtreecommitdiffstats
path: root/vortex86ex/index.php
diff options
context:
space:
mode:
Diffstat (limited to 'vortex86ex/index.php')
-rw-r--r--vortex86ex/index.php307
1 files changed, 0 insertions, 307 deletions
diff --git a/vortex86ex/index.php b/vortex86ex/index.php
deleted file mode 100644
index 8a1370a..0000000
--- a/vortex86ex/index.php
+++ /dev/null
@@ -1,307 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
-
- <style type="text/css">
- @import url('../css/main.css');
-
- div.contain {
- max-width:100%;
- }
-
- b {
- background:#ddd;
- }
- </style>
-
- <title>dmp vortex86ex in libreboot</title>
-
-</head>
-
-<?php
- include_once "../variables.php";
-?>
-
-<body>
-
- <div class="contain">
-
- <div id="libreboot" class="section intro">
-
- <h1>dmp vortex86ex in libreboot</h1>
-
- <p>
- small embedded system (SoC), i586 CPU
- made by a company called DMP. Seems like there are no blobs except a <a href="#kbd_fw">small firmware</a>
- for a keyboard controller (PS/2), could use usb keyboard instead if
- the ps/2 'blob' is an issue.
- </p>
- <p>
- <a href="../">(Back to homepage)</a>
- </p>
-
- <p>
- <b>Last updated 00:22 UTC+0100 on November 23rd, 2014</b>
- </p>
-
- </div>
-
-
- <div class="section">
-
- <h2>#libreboot on November 15th, 2014</h2>
-
-<pre>
-&lt;pehjota&gt; After the conversation yesterday about KolibriOS, I stumbled upon some hardware that community seems to like: the Vortex86 series of i586-compatible SoCs and the DMP EBOX nettops that use those SoCs. coreboot supports one computer by DMP (src/mainboard/dmp/vortex86ex/) which appears to be the EBOX-3100 (the only EBOX nettop AFAICT without VGA). Three years ago someone ported coreboot to the
-&lt;pehjota&gt; EBOX-3300MX but apparently never upstreamed that work. These Vortex86 SoCs look pretty good, freedom-wise: I think there's no microcode at all, the VGA cores don't seem to need option ROMs, and there are no blobs for things like ME/MRC/AGESA. They have relatively low CPU clock rates (most at 600 or 933 MHz), so they aren't great for compiling or gaming. But they're sold as nettops, thin clients,
-&lt;pehjota&gt; and embedded systems, and the prices ($95–$269 from the US distributor) aren't bad.
-&lt;pehjota&gt; DMP EBOX computers: <a href="http://www.compactpc.com.tw/en/index.html">http://www.compactpc.com.tw/en/index.html</a>. EBOX-3300MX coreboot port: <a href="https://github.com/XVilka/coreboot">https://github.com/XVilka/coreboot</a> (last six commits). Basic (and incomplete) information on the Vortex86 SoCs: <a href="http://www.vortex86.com/">http://www.vortex86.com/</a>. Some technical overviews and resources: <a href="http://www.dmp.com.tw/tech/">http://www.dmp.com.tw/tech/</a>. DMP's BusyBox/Linux distribution (with a Linux config file but apparently no source code):
-&lt;pehjota&gt; <a href="http://www.dmp.com.tw/tech/os-xlinux/">http://www.dmp.com.tw/tech/os-xlinux/</a>.
-</pre>
-
- <h2>#libreboot on November 16th, 2014</h2>
-
-<pre>
-&lt;fchmmr&gt; pehjota, I added info about those vortex86 machines to libreboot.org/release.html and to git.
-&lt;fchmmr&gt; By the way, xvilka (the person behind those commits on that github page) is in #coreboot at the moment.
-&lt;pehjota&gt; Cool. I can't discuss it right now either (busy and have to go idle soon), but I'm interested in his work and possibly seeing at least EBOX-3350MX (a nice cheap one with VGA) supported as well.
-&lt;pehjota&gt; The EBOX systems are cheap (once you add the cost of a power supply and enclosure to a BBB, it isn't much cheaper than an EBOX is) and most have VGA. Some have dual Ethernet and miniPCI.
-
-&lt;mtjm&gt; what is in dmp_kbd_fw_part1.inc in coreboot sources?
-&lt;fchmmr&gt; mtjm, coreboot/src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc is part of the "DEBLOB" file in libreboot.
-&lt;fchmmr&gt; I'll check it's contents in a coreboot clone.
-&lt;fchmmr&gt; it's referenced (included) by src/cpu/dmp/vortex86ex/biosdata.{inc,lds}
-&lt;fchmmr&gt; src/cpu/dmp/vortex86ex/biosdata.inc: #include "src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc"
-&lt;fchmmr&gt; src/cpu/dmp/vortex86ex/Makefile.inc:chipset_bootblock_inc += $(src)/cpu/dmp/vortex86ex/biosdata.inc
-&lt;mtjm&gt; are there other blobs for that platform?
-&lt;mtjm&gt; for checking if it's code or data, see code that uses it (hardware only here?) and relevant documentation; if a disassembler produces reasonable code for an appropriate ISA, then it's most probably code, otherwise it's unknown
-&lt;mtjm&gt; (or is it e.g. a keymap?)
-&lt;fchmmr&gt; As far as I can tell, src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc is the only blob
-&lt;fchmmr&gt; xvilka will know more, I'm sure
-<i>I then asked for more info in #coreboot and emailed Andrew Wu (original maintainer for that board) asking the same question</i>
-</pre>
-
- <h2>#coreboot on November 16th, 2014</h2>
-
-<pre>
-&lt;fchmmr&gt; xvilka, what is src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc for? What kind of data is it?
-&lt;fchmmr&gt; Is there a document that describes this data?
-&lt;idwer&gt; fchmmr: you haven't looked at biosdata.inc/.lds then
-&lt;ruik&gt; fchmmr: i think it is firmware for keyboard controller havent check
-&lt;fchmmr&gt; idwer, i looked at biosdata.inc, not lds. checking now.
-&lt;fchmmr&gt; ruik, keyboard as in ps/2 keyboard?
-&lt;ruik&gt; fchmmr: yes
-&lt;ruik&gt; fchmmr: could be 8051
-&lt;ruik&gt; 0x2 can be LJMP
-</pre>
-
- <h2>back to #libreboot on November 16th, 2014</h2>
-
-<pre>
-&lt;fchmmr&gt; mtjm, just a hunch from #coreboot discussion: I think it might just be for PS/2 keyboards, not sure.
-&lt;fchmmr&gt; If that is the case though, you could basically just ignore it (not use it) and use a usb keyboard, I imagine.
-
-&lt;pehjota&gt; fchmmr: The EBOX-3100 (only Vortex86EX computer by DMP: &lt;<a href="http://www.compactpc.com.tw/en/product/EBOX-3100/ebox-3100_1.html">http://www.compactpc.com.tw/en/product/EBOX-3100/ebox-3100_1.html</a>&gt;.
-&lt;fchmmr&gt; coreboot menuconfig just says DMP -&gt; Vortex86EX
-&lt;pehjota&gt; Yeah, it doesn't say which computer that is, but I'm guessing it's the EBOX-3100.
-&lt;fchmmr&gt; maybe there are more that also work.
-&lt;fchmmr&gt; I found a few "86duino" boards for isntance.
-&lt;fchmmr&gt; <a href="http://www.bttr-software.de/forum/mix_entry.php?id=13074">http://www.bttr-software.de/forum/mix_entry.php?id=13074</a>
-&lt;fchmmr&gt; <a href="http://www.86duino.com/?page_id=85/installation-troubleshooting-1/recompiling-coreboot-seabios-need-config-files">http://www.86duino.com/?page_id=85/installation-troubleshooting-1/recompiling-coreboot-seabios-need-config-files</a>
-&lt;pehjota&gt; Yeah, there's 86duino which supposedly comes with coreboot installed. There were some old configs posted to a forum but the links are dead. Other than that I can't find source code. And it's not in upstream coreboot.
-<i>Surely someone had a git repository somewhere? Was it public (and is it still online)?</i>
-<i>So we need to check all the usual places (github, gitorious, search google/ddg, etc).</i>
-
-&lt;pehjota&gt; Yeah, that thread; the links are dead.
-&lt;fchmmr&gt; tried the wayback machine?
-&lt;fchmmr&gt; <a href="https://archive.org/web/">https://archive.org/web/</a>
-&lt;pehjota&gt; Oh right, that's a Vortex86EX. Maybe that's the one supported by coreboot. DMP sells that one too.
-&lt;fchmmr&gt; a lot of the actual commits in coreboot seem to come from DMP themselves.
-
-&lt;pehjota&gt; I didn't, but the Wayback Machine usually doesn't archive .zip files or other things that aren't Web documents.
-&lt;fchmmr&gt; sometimes it does.
-
-&lt;pehjota&gt; Yeah, there's a developer at DMP who contributes this code to coreboot.
-&lt;pehjota&gt; And who is apparently active with KolibriOS too.
-&lt;fchmmr&gt; Andrew Wu
-&lt;pehjota&gt; Yup.
-
-&lt;fchmmr&gt; does trisquel 7 run on i586-only hardware?
-&lt;fchmmr&gt; i thought it was i686
-&lt;fchmmr&gt; I asked in #trisquel
-&lt;pehjota&gt; Not sure.
-&lt;pehjota&gt; Rereading the message in 8522f99 ("Add support for DMP Vortex86EX PCI mainboard.") and looking at &lt;<a href="http://www.86duino.com/index.php?p=68">http://www.86duino.com/index.php?p=68</a>&gt;, I think that might be the board.
-&lt;fchmmr&gt; maybe it runs on all vortex86ex soc's
-&lt;pehjota&gt; The code in src/cpu/ should, but src/mainboard/ is specific to individual boards.
-&lt;fchmmr&gt; I meant that maybe the same rom will work on multiple boards.
-<i>Or maybe all those *many* menuconfig options means that it could...</i>
-
-&lt;pehjota&gt; Although src/mainboard/dmp/vortex86ex/Kconfig appears to support configuration for different Vortex86EX-based boards, which is interesting.
-&lt;pehjota&gt; With defaults for 86Duino ZERO.
-&lt;fchmmr&gt; yes. lots of config options in menuconfig.
-&lt;fchmmr&gt; the default microcode options when selecting that board is "do not include microcode", which is promising.
-&lt;pehjota&gt; Yeah, as I said I don't think there's any microcode on Vortex86. I think the ISA is implemented directly in hardware.
-&lt;fchmmr&gt; Where does it say 86Duino in that Kconfigfile?
-&lt;pehjota&gt; It doesn't; I'm just guessing based on some of the default values.
-&lt;fchmmr&gt; select BOARD_ROM_KB_256
-&lt;fchmmr&gt; in Kconfig
-&lt;fchmmr&gt; probably couldn't fit GRUB in there, then. Would hvae to use SeaBIOS.
-&lt;pehjota&gt; And as I said, the initial commit message suggests it could have been originally for the 86Duino ZERO.
-&lt;fchmmr&gt; But if there's no vbios, or if it's a full (and free) vbios implementation, then seabios would be ok.
-&lt;pehjota&gt; Yeah, it uses SeaBIOS.
-&lt;pehjota&gt; Yup.
-&lt;fchmmr&gt; personally I'd prefer to use GRUB, but seabios is also fine.
-&lt;fchmmr&gt; GRUB wouldn't fit in such a small space
-&lt;fchmmr&gt; unless you build it with basically no modules
-&lt;pehjota&gt; It's basic VGA hardware with no option ROM AFAICT. No GPU or anything to initialize. The Linux driver is just a framebuffer one.
-&lt;fchmmr&gt; this all sounds very promising.
-&lt;fchmmr&gt; That file for keyboard can apparently be ignored if it's a freedom issue
-&lt;pehjota&gt; So just a framebuffer that gets sent out on VGA.
-&lt;fchmmr&gt; (can use usb keyboard)
-&lt;pehjota&gt; Yeah.
-&lt;fchmmr&gt; &lt;pehjota&gt; So just a framebuffer that gets sent out on VGA.
-&lt;fchmmr&gt; &lt;pehjota&gt; The Linux driver is just a framebuffer one.
-&lt;pehjota&gt; There's no GPU driver enabled in DMP's Linux config, only a couple video framebuffer drivers.
-&lt;fchmmr&gt; I'll ask on the mailing list (coreboot one) who has vortex86 hardware to test on
-&lt;pehjota&gt; The Linux config file is in the "source" .zip files here: &lt;<a href="http://www.dmp.com.tw/tech/os-xlinux/">http://www.dmp.com.tw/tech/os-xlinux/</a>&gt;.
-&lt;pehjota&gt; (Old version of Linux.)
-&lt;fchmmr&gt; Source for Vortex86DX/MX: xlinux-5.7-src-dx.zip (4.74 MB)
-&lt;fchmmr&gt; Source for Vortex86SX: xlinux-5.7-src-sx.zip (4.77 MB)
-&lt;fchmmr&gt; isn't it vortex86ex that we're looking at?
-&lt;pehjota&gt; fchmmr: Yeah, the SoC supported in mainline coreboot is the EX, for which there are apparently no "sources" on that page. I wouldn't use these systems for routers though; there are cheaper Atheros MIPS boards with dual Ethernet ports and built-in wireless chipsets, which should be able to run U-Boot.
-&lt;pehjota&gt; Good call on asking Andrew Wu. I was planning to just ask DMP in general about coreboot support for the EBOX systems.
-&lt;pehjota&gt; Personally I'm not all that interested in the EX-based systems like 86Duino. They don't have VGA, which would be necessary at least for the use cases I currently have in mind. I think the MX ones are more interesting from a practical perspective (they should be just as potentially free and xvilka ported coreboot to one of them). DX2 ones are also nice, but more expensive.
-
-DMP sells the 86Duino directly, and distributors sell the EBOX-3100 (as well as the other EBOX computers).
-</pre>
-
- </div>
-
- <div class="section" id="kbd_fw">
-
- <h2>Firmware for keyboard</h2>
-
- <p>
- In coreboot, see src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc. It is believed to be
- firmware for a PS/2 keyboard controller, though it's actual purpose is yet to be
- confirmed. You could probably exclude this
- (libreboot already does, in the DEBLOB script) and plug in a USB keyboard.
- </p>
-
- <p>
- A copy of dmp_kbd_fw_part1.inc: <a href="dmp_kbd_fw_part1.inc.txt">dmp_kbd_fw_part1.inc.txt</a>.
- </p>
-
- <p>
- The hex arrays were copied and formated in a PHP file.
- This outputs the array in <a href="https://en.wikipedia.org/wiki/Intel_HEX#Format">intel hex format</a>.
- See results at <a href="array.php">array.php</a> (for src, clone the libreboot site using the info from the
- <a href="../">home page</a>).
- The output was then saved as <b>dis.inc</b> and <b>dis.inc.hex</b>.
- </p>
-
- </p>
- According to ruik in #coreboot IRC channel, this is either 8051 or 8052 assembly code. I installed
- 2 disassemblers: dis51 (8051 disassembly) and d52 (8052 disassembly). <br/>
- $ <b>dis51 &lt; dis.inc &gt; dmp_kbd_fw_part1.inc.disassembled.dis51.txt</b><br/>
- And for 8052 disassembly:<br/>
- $ <b>d52 -dh dis.inc.hex</b><br/>
- $ <b>mv dis.inc.d52 dmp_kbd_fw_part1.inc.disassembled.d52.txt</b>
- </p>
-
- <p>
- Disassembly results here:<br/>
- 8051 (dis51) disassembly:
- <a href="dmp_kbd_fw_part1.inc.disassembled.dis51.txt">dmp_kbd_fw_part1.inc.disassembled.dis51.txt</a>
- - lots of data (non-instruction) sections, might be unknown instructions from 8052?<br/>
- <s>8052 (d52) disassembly:
- <a href="dmp_kbd_fw_part1.inc.disassembled.d52.txt">dmp_kbd_fw_part1.inc.disassembled.d52.txt</a></s> -
- it's 8051 code. See below.
- </p>
-
- <p>
- The original dmp_kbd_fw_part1.inc in coreboot also has a GPL licence attached, so it's possible
- that DMP might give the source code for this. Otherwise, if all else fails, we have the
- disassembled code to try to reverse engineer.
- </p>
-
- <p>
- Todo's from mtjm:
- </p>
- <ul>
- <li>check if there is any documented load address, check if jump addresses are reasonable</li>
- <li>check if there are reasonable code sequences (so it's probably really 8051 code)</li>
- <li>
- make sure that it's really under the GPL, then work on generating the same binary from disassembly
- + comments added when trying to understand it
- </li>
- <li>check if anything reads the code (there are different memory spaces for code and modifiable data)</li>
- <li>maybe it has data or unaligned instructions</li>
- <li>(check that you disassembled it properly, in other words)</li>
- <li>
- you want to get code that a machine runs, while you send some (maybe not all) code to it,
- that code has instructions that can read the available code and probably does some i/o that
- can be used to send that code
- </li>
- <li>not sure if it would have any bootrom; 8051 starts running code at address 0</li>
- </ul>
-
- <p>
- Andrew Wu replied to my email. The keyboard controller firmware is non-free; no source code available.
- The GPL license on it is bogus. So libreboot will simply not include PS/2 keyboard support for this machine,
- unless it can be reverse engineered based on the above. (not needed. just use USB)
- </p>
-
- <p>
- Andrew also said that the firmware is <b>8051</b> code, not 8052. The firmware
- implements a <b>standard PC/AT 8042 keyboard controller (handling PS/2 KB_CLK, KB_DATA signals, etc)
- There are datasheets for this!!</b>.
- </p>
-
- <p>
- Andrew also said that he doesn't know about specific hardware as he is in sotfware,
- so he forwarded me to sales, they/he will let me know what vortex86ex systems are actually available for coreboot.
- </p>
-
-<pre>
-The 8051 PS/2 keyboard controller firmware not only controls PS/2 keyboard/mouse, but also handles some system functions, like system reset, A20 line enable, etc, via I/O port 60h/64h.
-
-(Because standard PC/AT 8042 keyboard controller does so).
-
-In short, if software reads or writes I/O port 60h/64h in vortex86ex, then you need the 8051 firmware, otherwise these I/O ports won’t work correctly.
-
-I think most OSes, like DOS or Windows, will access port 60h/64h on startup, so removing the firmware code may cause many compatibility problems.
-</pre>
-
-<pre>
-Instead I propose that I take some minimal time to re-disassemble it
-trough the usual free software tools like gdb, binutils(readelf, and
-objdump), or radare2.
-
-^ other approaches.
-</pre>
-
- <p>
- If GNU/Linux will work, then it's ok.
- </p>
-
- </div>
-
-<br/>
-<hr/>
-
- <div class="section footer">
-
-<?php
- include "../footer.php";
-?>
-
- </div>
-
- </div>
-
-</body>
-</html>
-