Linux Port
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 20
Bryan Hogan (339) 592 posts |
Hi Timothy and Tristan. Are either of you based anywhere near London, as we’d love to have a demo of this at a ROUGOL meeting. Drop me an email – http://rougol.jellybaby.net/contacts/index.html If you’re not near London, contact your local user group and go give them a demo! See here for a list – http://www.riscository.com/calendar/ |
Timothy Baldwin (184) 242 posts |
I’m on the way to the Wakefield Show, and I shall be wearing a name badge I’ve made so you can identify me. |
Tristan M. (2946) 1039 posts |
Sorry. I’m just a filthy Colonial. Wrong landmass. Thanks for the offer though! Last night after beating some sense into my fileserver I tried building the Linux port on it. Like most of my other devices RISC_OS built fine, but the SDL stage fails. Still trying to work out why most (but not all) devices just keep spitting out undefined references to the functions. Everything seems right in the makefiles and the libraries and headers are definitely where they need to be. |
Tristan M. (2946) 1039 posts |
Built and functional on Raspberry Pi 3 running Raspbian. SDL also compiles correctly. It uses ptrace which is no surprise. The systems that built sdl with no issue were both Jessie based. I’m not totally sure but I think later versions of linux need -lSDL2 or whatever explicitly added. I haven’t tried it yet, but I have found some info on the web which hints at it. Performance is reasonable as long as the window isn’t made too big. That’s really no surprise. It’s probably a silly question but IIRC the bottleneck is because the RO framebuffer is being copied to an SDL surface. I hate to ask again, but is it possible to use !boot with the Linux port? If so, how? So many things I try just explode in a confetti of text files on the desktop. I don’t know if it’s a manually configured setting but the build of RISC_OS at the end of it’s boot reports “RISC OS 1024MB” on my H2+ fileserver that has 512MiB RAM. |
mark stephens (181) 125 posts |
I was lucky enough to get a demo from Tim at the Wakefield show and it is looking really impressive. It all runs (and fast). |
Matthew Phillips (473) 721 posts |
I also got a demo at Wakefield: RiscOSM rendering maps of the Isle of Man. Timothy was running Debian on a Chromebook with RISC OS in a window on that. |
Timothy Baldwin (184) 242 posts |
The Test_Boot script should do everything needed. (currently it boots once in RPCEmu) It appears from your description the filetypes are not set, as of 18:50 UTC today it can read filetypes of the ,xxx extension style, earlier versions required filetypes in POSIX extended attributes. If you extract HardDisc4 zip file outside RISC OS you need give the -F to unzip to extract filetypes, and then for older versions use comma2attr convert the filetypes:
Reported free and total memory is fixed at 1024MiB, it’s not clear what counts as free memory and total memory. |
Tristan M. (2946) 1039 posts |
This is what happens when I run Test_Boot regardless of system. The path in Linux is different per computer of course but the rest is definitely the same. It downloads the files to ~/Downloads but everything just falls apart from there. A bit later: I dug around a bit. I had the wrong version of Allegro installed on this device somehow (RPi3) but that wasn’t the issue. gcc was still breaking. This time with a segfault. I had to go build rpcemu from it’s makefile. After that Test_Boot worked. Was it supposed to dump some extra files from HardDisk4 somewhere? I think it copied Pinboard and a few other things but that was it. I’m having another shot at it now after a git reset. e: Much better. dev.fd.4 now exists! e: but not in Test_Wimp last edit, I promise: |
Ronald May (387) 407 posts |
No such file I have had this error from my standard linux gccsdk when the binary itself was corrupt, In my case it had been compiled in an earlier debian and copied over. I guess it could also be the path to the file you are creating not being valid as the error suggests though. |
Tristan M. (2946) 1039 posts |
Ronald, all binaries were functioning as far as I could tell. It’s just an odd thing. Good news! I got it all to build on the Orange Pi PC2 with mainline kernel. This is from mixed/Linux/Support/common.mk I added -lSDL2main -lSDL2
e: Something I’ve noticed with the port is opening a directory window pegs the CPU core. Not sure what’s happening there. |
Ronald May (387) 407 posts |
all binaries were functioning as far as I could tell. It’s just an odd thing. If you can find where touch is being called in the makefile, maybe you could insert ‘touch —version’ just before to see if it is acting normally. Otherwise I wonder if the make utility or cd is up to scratch for changing directories. |
Colin Ferris (399) 1814 posts |
Just as a matter of interest – are the arm tools like &FF8/Absolute ‘cc’ and ‘ObjAsm’ running directly in/on ARM Linux? If so are are you using them to build a copy of RO ‘ROM’ that runs as a Linux program in User mode on a ARM chip? |
Timothy Baldwin (184) 242 posts |
They are running on RISC OS on Linux.
Yes. |
Tristan M. (2946) 1039 posts |
Next time I have it plugged in, after it’s updated I’ll check it. |
Timothy Baldwin (184) 242 posts |
The fix I used was to replace calls to egrep to call “grep -E” instead. |
Timothy Baldwin (184) 242 posts |
Why -lSDL2main? That should only be needed on Windows, it does nothing on Linux.
Where are these mumblings? I am running Debian Stretch, and it works for me as is. What does “ |
Timothy Baldwin (184) 242 posts |
I’ve added support for resizing the the RISC OS desktop by resizing SDL window. The SDL frontend passes a message to the SocketKVM module which causes the Wimp mode to be changed on the next poll. SocketKVM responds to all Service_ModeExtension calls, thereby allowing modes of any pixel size to be selected. To eliminate flicker the SDL frontend pauses updating it’s window until a null wimp poll occurs. Alas this has exposed 4 bugs in Pinboard relating to backdrops, which I have fixed. |
Tristan M. (2946) 1039 posts |
It probably isn’t needed. I was low on time. It seemed to be a common fix for the linking error I was encountering with SDL2. I thought it was a bit questionable but didn’t get to try without. The mumblings are really just that when hunting for fixes I saw a few references of SDL working fine in Jessie but needing the explicit library in Xenial. I really have no idea why. Bug in sdl2-config maybe?
In the port or in RO? If it’s the latter especially I just want to remind you fixing bugs is a good thing. |
Timothy Baldwin (184) 242 posts |
In RISC OS. I have sent patches to ROOL. |
Tristan M. (2946) 1039 posts |
Results as requested. From the Orange Pi PC2 running Xenial with mainline kernel. Confirmed failure still existed before posting this.
I also just confirmed that sdl still won’t build without “-lSDL2”. Ignore -lSDL2main of course. e: Unrelated to the SDL issue. How much has the IOMD ROM been tampered with? |
Timothy Baldwin (184) 242 posts |
So sdl-config works, and includes -lSDL2 in it’s output so maybe it’s an ordering issue. The way I had it it would not work with a statically linked library. |
Tristan M. (2946) 1039 posts |
How is work going on this? I’m revisiting trying to build it on the Orange Pi Zero with a mainline kernel. Previously the build would fail catastrophically with a system reboot which I believed was an insufficient power supply. It doesn’t seem to be the case. Currently I’m trying an RPCEmu build in the cruellest way again. Via an ssh X11 tunneled session. The eight hour mark just passed. It just finished compressing the ROM. It’s been chugging away at a whopping average 2.8MIPS. |
Jan Rinze (235) 368 posts |
Just rebuilt from scratch and everything runs well. Are there people working with Timothy to help out? |
Timothy Baldwin (184) 242 posts |
Sorry, I haven’t done much in the last few months but intend ro get back to it soon. I will be busy until next after next weekend. It’s is just me it seems. I will be writing a proposal for how the low level routines for locking and virtual PSR manipulation are called. If anyone would like to tackle networking or sound help will be appreciated. For networking both a high level approach replacing the Internet module with a stub that calls Linux system calls, or a low level approach writing a DCI4 driver that sends and receives packets to from a Linux file descriptor witch could be connected to a Linux tap device. |
Tristan M. (2946) 1039 posts |
Not all that useful but I’ve given some thought to the network over the past few months. I think the higher level approach makes the most sense because the Linux port is more of an application than an emulation. Some people may find it a little restrictive but I see no reason why looking at it as an application would be a bad thing. I agree that a stub of sorts makes the most sense. However I’m a little concerned at the potential complexity. I’m assuming that it would be utilising Linux’s network stack, and hopefully passing the configuration data for the network back through to RO. Given the hushed whisperings which people use when referring to the RO network stack I’m guessing the interfaces aren’t so great either? |
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 20