Sunday, 2016-04-10

*** tpb has joined #timvideos00:00
*** CarlFK has joined #timvideos02:43
*** ChanServ sets mode: +v CarlFK02:43
*** CarlFK has quit IRC03:46
shenkimithro: hello04:53
mithroI'm out at lunch with the parents :-)05:06
mithroshenki: The first thing we need to do is create a driver for the UART in misoc05:06
shenkimithro: ok. that is already in the hardware?05:07
tpbTitle: linux-milkymist/milkymist_uart.c at ng · m-labs/linux-milkymist · GitHub (at
mithroSomething along those lines - but I'm pretty sure that doesn't work05:09
shenkimithro: your or1k branch has that uart hardware built in already?05:10
mithroThe code we currently use is at05:10
tpbTitle: misoc/uart.c at legacy · timvideos/misoc · GitHub (at
mithroYes, we are using it in the current firmware :-)05:11
shenkii'll get some hardware out and program it up05:11
shenkienjoy your lunch :)05:11
mithroI ran out of time, I was going to add a sim board type to run in vertilator but ran out of time last night05:12
mithroBuild the firmware to get the csr.h file which lets you understand how to talk to it05:13
mithroIt'll end up some where in like third_party/misoc/software/generated05:14
mithroShould I send your Atlys back with my parents?05:14
mithroI recommend using the base target as it takes like 5 minutes for a complete fresh build.05:16
mithroLiteEth seems to be giving ISE a hernia on my computer for some reason (yet it still works fine on Travis).05:18
mithroAnyway, should stop ignoring my parents :-)05:20
mithroshenki: poke me about the Atlys.05:21
*** Bertl is now known as Bertl_zZ05:36
*** panther has joined #timvideos06:48
shenkimithro: i couldn't find a power brick that fit the connector and was 12V07:34
shenkimithro: so im trying to use the minispartan607:34
shenkii thought I had that working, but i don't get anything out the uart07:34
shenkii assume that's becuase i don't have any firmware built in07:35
tpbTitle: GitHub - shenki/HDMI2USB-misoc-firmware at ms6 (at
cr1901_modernshenki: What's wrong with ms6?07:36
shenkicr1901_modern: it doesn't do anything :)07:37
shenkicr1901_modern: do you have a working design?07:38
cr1901_modernshenki: I've gotten a UART on it before.07:38
shenkicr1901_modern: cool. do you have that on github?07:39
mithroshenki: I'm sure we have gotten at least the BIOS prompt on the minispartan before07:39
shenkimithro: i agree. im wondering if i didn't commit it though07:40
mithroshenki: are you sure you have connected to the right serial device? I seem to remember it coming up as two?07:40
shenkimithro: one of them dissapears when i load the design07:40
shenkidunno if that's the expected behaviour07:40
mithroI wouldn't have expected it to do that?07:41
cr1901_modernshenki: I didn't need to make any changes to get it to boot07:41
cr1901_modernI'll see if wrote down my build hints07:41
mithroSo do you want me to sand l send your Atlys back?07:42
cr1901_modernCome to think of it, I'm not sure which branch I'm currently on in HDMI2USB07:43
shenkimithro: umm, you can. i don't really need it if i can get the ms6 going07:44
shenkimithro: the ms6 and/or novena are much easier dev platforms for this work07:44
tpbTitle: HDMI2USB-misoc-firmware/ at minispartan6+ · timvideos/HDMI2USB-misoc-firmware · GitHub (at
shenkibecause they fit in nice little boxes07:44
shenkiwell, in the case of novena, it sits on my lap07:45
mithroAre you using that branch?07:45
mithroAh my novena doesn't have a case07:45
shenkimine is in laptop form factor :)07:45
shenkimithro: no, not that branch. i'll use that07:45
mithroMy opsis has a nice case.07:45
mithroHrm, that branch doesn't seem to have anything?07:46
shenkino. it doesn't07:47
tpbTitle: HDMI2USB-misoc-firmware/ at minispartan6+ · timvideos/HDMI2USB-misoc-firmware · GitHub (at
shenkiImportError: No module named 'targets.minispartan6_base'07:48
shenkiMakefile.lm32:34: recipe for target 'firmware-lm32' failed07:48
shenkimake: *** [firmware-lm32] Error 107:48
cr1901_modernshenki: Using YOUR fork, and "make BOARD=minispartan6 TARGET=base MISOC_EXTRA_CMDLINE=-Ob source True load", I was able to get a command line07:49
tpbTitle: GitHub - shenki/HDMI2USB-misoc-firmware at ms6 (at
shenkicr1901_modern: oh nice07:49
shenkicr1901_modern: what does MISOC_EXTRA_CMDLINE=-Ob do?07:49
cr1901_modernIt should be "-Ob source True"07:49
cr1901_modernOn my machine I need this, so MiSoC actually finds the synthesizer07:50
tpbTitle: Add support for the miniSpartan6+ to HDMI2USB · Issue #140 · timvideos/HDMI2USB-misoc-firmware · GitHub (at
tpbTitle: GitHub - shenki/HDMI2USB-misoc-firmware at minispartan6 (at
cr1901_modernmithro: I am actively working on MiSoC right now, so I'll take a look into minispartan6+ issues with shenki07:51
tpbTitle: GitHub - shenki/HDMI2USB-misoc-firmware at minispartan-testing (at
shenkicr1901_modern: i'll try building it again07:52
mithroshenki: looking at those branches, one of them has the embedded firmware stuff needed07:53
shenkimithro: ok. which one?07:54
shenkicr1901_modern: which branch worked for you?07:54
cr1901_modernshenki: The testing branch07:54
cr1901_modernOnce I check out MiSoC legacy (no, the submodules that HDMI2USB has does not work for various reasons), I'll rebuild07:55
tpbTitle: HDMI2USB-misoc-firmware/ at minispartan6 · shenki/HDMI2USB-misoc-firmware · GitHub (at
mithrocr1901_modern: our versions of misoc legacy have a couple of small patches that aren't upstream07:56
shenkicr1901_modern: can you clarify? you need a diff version of the submodules to the one that 'submodule update' will get me?07:57
mithroshenki: did you hit the reset button after programming the minispartan?07:57
shenkimithro: no07:57
cr1901_modernmithro/shenki: The problem isn't actually w/ HDMI2USB. That was sloppy wording. It's the fact that my personal copy of MiSoC is installed w/ develop, and Python gives priority to those modules even when PYTHONPATH is set07:57
shenkiim on the couch, and the board is all the way on the table07:57
cr1901_modernso no matter what I do, python tries to import my personal copy of MiSoC07:58
shenkiah i see07:58
mithroThe minispartan doesn't program directly I think? It programs into the spi flash and there you have to reset the fpga to get it to read it? Or maybe I'm confused?07:58
shenkimithro: i used openocd to program07:59
shenkii'll try resetting07:59
mithroDunno if the LEDs are suppose to do something?07:59
mithroBut I'm sure we have had something on the UART before :-)08:00
cr1901_modernshenki building now. I have NOT update my copy.08:01
cr1901_modernof the repo.* I want to compare/contrast08:01
cr1901_modernErm, why does minispartan bother to build microudp and tftp when ms6 has NO Ethernet support?08:02
shenkiit's a wip; we started with a working design for the atlys and cut out bits we didn't need08:07
shenkicr1901_modern: if we verify this works, we can merge it in and start fixing it08:07
cr1901_modernshenki: All I'm going to have is a UART lol08:08
shenkimithro: where do i check to know if it's building in firmware or not?08:08
cr1901_modernmithro: Did anyone ever end up doin data islands?08:08
mithrocr1901_modern: no08:09
cr1901_modernOnce we get minispartan up and running, can I take a stab at it (and actually do it this time)?08:10
shenkicr1901_modern: ok, so i've done 'make gateware'08:10
shenkicr1901_modern: what did you do next to get it working?08:11
cr1901_modernshenki: Flashed it via openocd, opened up PuTTY on the relevant COM port, and pressed enter :)08:11
shenkicr1901_modern: using 'make load-gateware'?08:12
cr1901_modernshenki: Ideally yes. It's broken due on my machine, so I did the command manually08:12
cr1901_modern(the fix was never put into migen (sic) legacy)08:13
shenkicool, wfm08:13
*** panther has quit IRC08:14
shenkidunno why it didn't work the first time08:14
cr1901_modernshenki: So you got a prompt? Cool08:14
shenkicr1901_modern: yup08:14
cr1901_modernI suppose for the sake of Windows users, the fix for migen/mibuild paths on OpenOCD should be put into legacy as well08:15
shenkiare you a windows user?08:16
cr1901_modernYes, it's wonderful :D08:16
cr1901_modernOkay, and can confirm that I also have a serial prompt. Awesome08:21
*** rohitksingh has joined #timvideos08:25
shenkiversion.c: In function ‘print_board_dna’:08:52
shenkiversion.c:35:16: error: ‘CSR_DNA_ID_ADDR’ undeclared (first use in this function) print_csr_hex(CSR_DNA_ID_ADDR, CSR_DNA_ID_SIZE);08:52
shenkii added dna to the csr_map08:52
shenkiah, i need to add code as well09:00
tpbTitle: or1k does not fit on minispartan6+ · Issue #246 · timvideos/HDMI2USB-misoc-firmware · GitHub (at
mithroshenki: Not a lot we can do about that09:42
mithroshenki: I was thinking that for linux the driver code for both the or1k and lm32 would all end up being the same, it's only the initial start up and interrupt code that would be different?09:44
tpbTitle: AltOR32 OpenRISC ISA CPU on Papilio One 250K FPGA Board « Ultra-Embedded (at
cr1901_modern(Haven't read the link): lm32 can't fit on a Spartan 3 without concessions. Would be very surprised if or1k did09:55
*** rohitksingh has quit IRC10:17
shenkimithro: ok10:37
shenkimithro: i need to understand the different pieces the the misoc firmware10:38
shenkimithro: when i get the BIOS> prompt, that's C code, right?10:39
shenkibut that's not the 'firmware'10:40
mithroNo, it's the BIOS :-)10:40
cr1901_modernIt's a bunch of routines sb0 (I think?) coded up to make testing easier.10:40
mithroIts main job is to setup the DDR RAM and allow the next stage to be loaded into it10:41
mithroIt only has like a small amount of RAM and stuff to get going10:42
shenkiso the 'firmware' runs from ram?10:42
cr1901_modernmithro: Do you plan to send your changes upstream to migen legacy?10:43
shenkiis im baking it into the brams, instead of sticking it in the flash?10:43
shenki(with my over-sized image)10:43
mithrocr1901_modern: not really, _florent_ is planning on moving us to the new branch10:43
mithroshenki: with the "embedded firmware", the fpga basically emulates ROM which is memory mapped10:44
cr1901_modernmithro: That's fine. Where should I send a patch to fix this? openocd is screwy w/ Windows paths, and TCL won't NOT escape them unless there's extra braces.10:45
tpbTitle: migen/ at master · m-labs/migen · GitHub (at
cr1901_modernI fixed this in the new migen, but never thought to fix it in the old10:45
mithroSo the BIOS pretty much just jumps to the ROM location if I understand correctly10:45
mithroYou can use flterm to dump some stuff from your computer into the DDR RAM and then jump to it10:46
mithroThat is what the serial boot stuff is10:47
mithroWhen the Ethernet stuff is enabled, it can do that over tftp instead.10:47
mithroThere is a spi boot option which will do the same from spi flash when we get around to enabling that10:49
shenkimithro: ok, thanks10:56
shenkimithro: is the minispartan6 that you got me the big one or the small one?10:57
mithroI'm pretty sure I only got the LX25 versions11:05
mithroshenki: actually, you should check that it is compiling for the lx25 and not the lx9?11:06
shenkiyeah. that's where i was headed11:08
mithroshenki: the 25 means 25,000 LUTs iirc11:08
shenki    def __init__(self, device="xc6slx25", programmer="fpgaprog"):11:12
shenkimithro: ok, so where do i go from here?11:19
mithroshenki: You mean, how do I get the or1k on a minispartan, or?11:19
shenkimithro: yeah11:20
shenkimithro: well, what's the quicket route to having a dev platform11:20
mithroshenki: Well, least amount of effort to having a dev platform is probably to get your Atlys back from my parent's when they return tomorrow11:21
shenkihah ok11:22
mithroshenki: I don't think there is an easy way to make the or1k fit on the minispartan6+ unless the problem is the embedded rom11:22
shenkimithro: does the atlys have a bigger fpga?11:22
mithroYes, all of the Atlys, Opsis and Pipistrello have SLX4511:22
mithroalmost double the LUTs11:22
mithroI'm a bit surprise the BaseSoC doesn't fit  on a SLX25....11:23
mithroshenki: Can you link to the SoC?11:23
shenkimithro: oh, the novena has a slx4511:24
tpbTitle: GitHub - shenki/HDMI2USB-misoc-firmware at ms6 (at
mithroshenki: yeah the slx45 is the biggest Spartan-6 you could use with the free tools for a long time11:24
mithroshenki: remove the firmware_ram stuff in your SoC and try again11:25
shenkimithro: that does work; i had it working earlier11:29
mithroshenki: okay, you don't need the embedded firmware to do development11:29
mithrojust use flterm to load the kernel via the serial port11:30
mithroshenki: so the or1k worked without the embedded firmware?11:30
shenkihrm, no11:30
shenkiim getting confused11:30
shenkithat was the lm3211:30
shenkiim building with the or1k now11:31
shenkimithro: yep, that works11:34
mithroshenki: okay, it sounds like we ran out of block ram, so it decided to try emulating ram using the slicem luts and ran out of them11:35
shenkiyup, makes sense11:35
mithroshenki: probably a warning further up which says something like "block ram 100% utilized"11:36
shenkimithro: ok. so i should be able to run ./firmware/softcpu/firmware.bin with flterm now?11:38
mithroshenki: yes11:38
shenkimithro: what's the flterm escape seq?11:38
mithro"make load-softcpu" and then at the bios prompt, type "serialbot"11:38
shenkihrm, it's stuck at zero11:39
shenkiBIOS> serialboot11:41
shenkiBooting from serial...11:41
shenki[FLTERM] Received firmware download request from the device.11:41
shenki[FLTERM] Uploading kernel (26992 bytes)...11:41
shenkicpu was stuck; i could re-load the gateware and now it's back11:41
shenkilooks like the ram is either not there, or not functioning11:42
shenkiBIOS> mw 0x20000000 0xAB 1011:43
shenkithat hangs11:43
mithroshenki: what about "memtest" ?11:43
mithroshenki: You should compare it to the lm32 version too11:43
shenkimithro: memtest says "OK"11:43
shenkiok, i'll go back to lme3211:43
mithroshenki: You should use two git workdirs - one with the lm32 and one with the or1k and switch back and forth quickly11:44
shenkiah ok11:44
mithroI normally have tmux with two windows11:48
mithroand set their name to or1k and lm3211:48
shenkiim not grown up enough to use tmux11:48
mithroshenki: screen with a decent config also works11:49
mithroshenki: but tmux generally doesn't need to be configured at all, which is why I ended up using it :P11:49
shenkiyeah. i know. ive been told by enough people enough times11:50
shenkioneday i'll learn the keybindings11:50
mithroonly one you need is "ctrl-a [0-9]"11:51
shenki$ tmux11:51
shenkiThe program 'tmux' is currently not installed. You can install it by typing:11:51
shenkisudo apt install tmux11:51
mithrotmux is pretty nice is that you can use it from the command line11:51
mithroie to rename a window "tmux rename-window or1k"11:51
shenkithat is cool11:53
mithrowhich is why I don't know any of the keyboard short cuts :P11:55
mithroexcept the change window one11:55
*** Bertl_zZ is now known as Bertl11:57
mithroactually I think tmux uses "ctrl-b [0-9]" by default11:57
shenkiheh yeah, was going to say, its not working11:57
mithroshenki: I think its so you can use it inside screen which uses ctrl-a by default12:01
mithroshenki: if the ram works under the lm32 but not the or1k, I'm not sure what the next step is12:02
mithroshenki: I was having weird lock up issues with the firmware on the or1k on the Atlys, but nothing with the BIOS12:03
mithroshenki: I wonder if its hitting an illegal instruction or something12:04
shenkiflterm is giving me 'command not found'12:04
shenkisomething in the background is not present?12:05
mithroshenki: in response to what?12:05
shenki[FLTERM] Starting...12:05
shenkiCommand not found12:05
shenkiin response to a "enter"12:05
mithrohit enter again?12:05
shenkithen i get a prompt12:05
shenkihrm, im getting the same hang12:05
shenkiwith the lm3212:05
shenkiwhen trying to do serialboot12:05
mithroshenki: then it sounds like it's an issue with your minispartan6 SoC rather than the or1k stuff?12:06
mithroshenki: I think you have gotten about as far as I have with the minispartan now12:07
mithroshenki: might be worth poking cr1901_modern and _florent_12:08
mithroshenki: otherwise maybe drop the frequency to 50MHz?12:09
shenkiok, that's easy enough to test12:09
mithroshenki: That might stop everything from working :P12:10
mithroshenki: the DDR controller seems to be locked to the CPU frequency in some way I don't quite understand yet12:10
mithroshenki: Looking at might help you understand the clocking stuff if you want to dig into that12:11
tpbTitle: WIP: Fixing the timing propagation through PLL/DCM parts in ISE. by mithro · Pull Request #226 · timvideos/HDMI2USB-misoc-firmware · GitHub (at
mithroshenki: I'll have to dig up my miniSpartan6+ and see if I can repo here12:13
mithrobut that will have to wait till tomorrow12:13
mithroshenki: I'll also look at getting the vertilator board going, which would let you get the uart linux stuff going without needing any hardware12:14
mithrobut would be good to figure out what is going on with the real hardware12:24
shenkiperhaps i commented out too much?12:29
shenkiperhaps i need the register_mem still, so it knows where to map the sdram12:30
shenkimithro: how does the cpu create it's memory mappings?12:33
mithroshenki: what do you mean?12:33
shenkimithro: the memory mapped bus that the cpu sits on12:33
shenkiit needs to know what addresses correspond to which devices12:33
shenkiwhere does that come from?12:33
mithroI think it's hardcoded as part of the misoc stuff12:33
mithroshenki: You can look at that csr.h header I pointed too as well12:36
shenkithat's generated tho?12:36
mithroshenki: yeah, from your soc configuration12:37
shenkimithro: mmm. how do i not include the firmwrae blob, but still have the sdram mapped12:37
mithroshenki: look at enjoy-digital's one
tpbTitle: scarab-soc/ at master · enjoy-digital/scarab-soc · GitHub (at
shenkimithro: yeah. that's what mine is based off12:42
mithroshenki: that has the sdram enabled12:42
shenkihrm. i can't see how it works12:53
mithroshenki: ?12:54
shenkimithro: i can't see where the devices are attached to the bus12:54
mithro ?12:55
tpbTitle: misoc/ at legacy · timvideos/misoc · GitHub (at
tpbTitle: misoc/ at legacy · timvideos/misoc · GitHub (at
shenki0x4000 000012:57
mithroshenki: and what is missing?12:57
shenkithat's the bit i was after13:02
shenkidunno why it downloads to 2000 0000 in our socs tho?13:02
shenkithere's nothing htere13:02
*** thaytan has quit IRC13:02
*** thaytan has joined #timvideos13:04
*** ChanServ sets mode: +v thaytan13:05
shenkimithro: cool, ram works under or1k13:05
shenkimithro: i can mw and mr to 0x4000000013:05
shenkiExecuting booted program.13:06
shenkiand then nothing13:06
mithroshenki: and under the lm32?13:07
mithroAlso check where the program is being loaded and the addresses match13:08
shenkiheh, and the cpu arch of the binary13:09
shenkiok, arch is k13:09
mithroIE the flterm command and the addresses passed to the SoC13:09
shenkiwhat do you mean "addresses passed to the soc"?13:10
shenkii had to change the fl term cmd line to point to 0x4....13:11
shenkii assume it's a relocatable binary?13:11
shenkiperhaps that's a bad assumption13:11
shenkirelocatable is the wrong word. i meant that it doesn't have any hard coded assumptions about where it executes from13:12
mithroThat could be a bad assumption13:13
mithroActually I'm pretty sure that is a bad assumption13:13
mithroThe is a generated linker map file somewhere...13:14
shenkii'll take a look. just rebuilding the world13:14
tpbTitle: HDMI2USB-misoc-firmware/linker.ld at ms6 · shenki/HDMI2USB-misoc-firmware · GitHub (at
mithroMake clean should work13:15
mithroAnyway, I'm in bed now13:16
mithroYou could try a very simple hello world firmware?13:17
shenkiisn't that what our firmware is?13:17
shenkibut yeah, i take your point13:17
mithroIt's slightly more13:17
shenkisomething with just puts("hello world")13:17
mithroNot that much more :-)13:17
mithroAnd services the UART isr maybe?13:17
shenkiwe have a uart isr? fancy13:18
tpbTitle: HDMI2USB-misoc-firmware/isr.c at ms6 · shenki/HDMI2USB-misoc-firmware · GitHub (at
mithroNo idea what it actually does :-P13:19
mithroThink that UART isr comes from with libbase or the generated stuff...13:20
mithroCan check from my phone :-)13:20
shenkino worries13:20
shenkii will do some digging13:21
shenkistaying up to watch the cycling :)13:21
mithroHa okay13:21
mithroAs you are trying to change the CPU type and add a new board at the same time, I would try and get things working with the lm32 first, then try the same one the or1k13:22
mithroWe know that the lm32 work on the Atlys13:22
mithroNot sure if the or1k works on the Atlys13:23
mithroBrinly and my parents prevented me testing that all that will this weekend :-)13:23
mithroI know that the BIOS booted and the firmware was behaving strange...13:24
shenkiyeah, im seeing strangeness13:24
shenkiwill go back to lm3213:24
mithroQuestion everything :-)13:25
shenkiunfortunatly work is super interesting at the momemnt, so i will be busy during hte week13:25
mithroIncluding if the compiler is generating correct code :-)13:25
shenkiyeah, i was thinking we should poke a jump instruction at 0x4000000013:26
* mithro tries to be more interesting13:26
shenkithat just takes us back to the bios13:26
mithroYou've had more experience here than I have :-)13:26
mithroI'm just a high level C++ programmer ;-)13:26
shenkispeaking of13:27
shenkithe new version of chromium i put on my novnea13:27
shenkipops up and says "cannot detect SSE2. Must have SSE2"13:27
shenkiand that's it13:27
shenkibloody chrome developers13:27
shenkinot going to find much SSE2 on an arm13:28
mithroI'm sure it runs on arm13:29
mithroSounds like someone just compiled it wrong13:30
shenkiyeah. i suspect there's some flag the debian guys need to be setting13:30
shenkior some bad developer just tests for OS=chromeos and assume that OS=linux is always x8613:30
mithroBlame the user :-)13:31
shenkicouldn't find the error string in the online codesearch13:31
mithroAnyway, I was going to go to sleep13:31
mithroI expect a working minispartan when I get up :-)13:32
mithroGood night!13:32
shenkigood night13:32
shenkihrm, it crashes booting it's own bios14:24
shenkiBIOS> serialboot14:24
shenkiBooting from serial...14:24
shenki[FLTERM] Received firmware download request from the device.14:24
shenki[FLTERM] Uploading kernel (19452 bytes)...14:24
shenki[FLTERM] Upload complete (10.2KB/s).14:24
shenki[FLTERM] Booting the device.14:24
shenki[FLTERM] Done.14:24
shenkiExecuting booted program from 40000000.14:24
shenkiMiSoC BIOS   http://m-labs.hk14:24
tpbTitle: M-Labs » open source experimental physics (at
shenki(c) Copyright 2007-2014 Sebastien Bourdeauducq14:24
shenkiRevision b19037ed built Apr 10 2016 2314:24
shenkihrm, and now it's re-booting the bios from sdram without issue14:39
xfxfshenki: you sound like you're having fun14:40
shenkixfxf: im watching paris-roubaix, it's keeping the heart rate up while i hack14:40
shenkinot sure if im making progress14:41
shenkineed some better tooling to dump the processor state14:41
shenkioh cool, there's the problem14:50
shenkimain_ram was defined, but firmware_ram is not14:50
shenkibut we stick all of the firwmare text in firmware_ram14:50
shenkiso who knows where that was getting loaded... not at 0x40000000 where our ram is14:50
shenkiprobably 014:53
shenkiwoot. aussie won the bike race!15:15
*** sb0 has quit IRC16:07
*** sb0 has joined #timvideos16:08
*** se6astian|away is now known as se6astian17:18
*** [d__d] has quit IRC17:55
*** [d__d] has joined #timvideos17:57
*** se6astian is now known as se6astian|away21:25
*** Bertl is now known as Bertl_zZ21:34
*** CarlFK has joined #timvideos21:47
*** ChanServ sets mode: +v CarlFK21:47

Generated by 2.13.1 by Marius Gedminas - find it at!