ARLO FOR THE SERIES 5, SERIES 5MX and SERIES 7, Version 1.34 ============================================================ NOTE: Before you upgrade to any newer version of Arlo, you MUST do a cold reboot first because usually the device driver has been changed. Unfortunately, the device driver cannot be unloaded other then by rebooting. See below for an explanation. What's new in 1.34 ================== - New option in the expert menu: find physical memory areas mapped into virtual address space. It will traverse every 4KB page in Arlo's 4GB address space to see if there is anything mapped. Based on that it will spit out a table with the physical areas and their sizes. What's new in 1.33 ================== - Integrated patch from Tony Lindgren, the S5mx Linux kernel maintainer, to have Arlo boot non-glued kernels using boot2nd. Thanks Tony! As of 1.33, Arlo will default to using boot2nd for S5mx machines, this can be overriden in the config file using "useboot2nd=no" or "useboot2nd=false". Note that the patch required changes in the driver, so S5mx people need to cold reboot before installing Arlo. What's new in 1.32 ================== - Arlo now reads dos & unix formatted config files correctly. Prior to 1.32 Arlo could not read unix formatted config files. What's new in 1.31 ================== - Made 64 the default archnumber for the Series 7 which is the official number assigned to use by Russel King. The old 16 was the archnumber for Brutus. What's new in 1.31 ================== - Arlo has now support for Series 7 kernels. Hurray! - The driver implementation has changed for the Series 7. The Series 5 and 5mx implementations are not affected. - The memory size in "detect memory" is now always reported in KBs. - To speed up boot time, Arlo can now run as the EPOC shell, see the description "Running Arlo as the EPOC shell" below. This is more of a nice development feature than really being usefull (I think). Said that, it does allow us to display a PisLinux Logo _before_ the Psion/EPOC logo. That would be quite cool :-) - Fixed the "o" parameter bug in the expert menu. It will now take everything after the "o" as the boot parameters rather than the next token. - The arlo files may be stored in any of the following directories (searched for in order listed): c:\ c:\arlo d:\ d:\arlo If you run arlo.exe from the EPOC file manager, then arlo.cfg and boot2nd.bin need to be present in one of the above directories. If you run arlo as the EPOC shell, then you specify arlosh.exe in the wsini.ini (see "Running Arlo as the EPOC shell" below) and arlo.exe, arlo.cfg and boot2nd.bin need to be present in one of the above directories. - There is a new option in the export menu: "h" (for Hardware) You can use this to find out where EPOC has mapped physical registers. In the early days of Arlo, some one reported on the mailing list a handful of magic EPOC internal addresses. EPOC maps I/O registers at virtual address 58000000. Essentially the command translates each virtual address starting at 0x58000000 (with PAGE-size increments) to its physical address. I've used this feature to find out the virtual address of the watchdog registers on the Series 7 (SA-1100). According to the SA-1100 spec, the physical location is fixed at 0x90000000. On the Series 7 the watchdog is enabled and thus resets the machine if certain counters are not incremented on a periodic basis. This caused a reset when disabling IRQs from Arlo because the EPOC kernel can no longer update the watchdog counters. From the Arlo driver, prior to bootstrapping, I reprogram the watchdog and set the next deadline as far as possible in the future (about 20 minutes). - In addition to the normal boot package, Arlo now uses its own second stage boot loader called: boot2nd.bin. It is mandatory for the Series 7, does not work for the Series 5 and is optional for the Series 5mx. This has the following consequences: - For the Series 7 the kernel should _not_ be glued with the boot package. Arlo will transparrently use boot2nd.bin. The kernel image should still be uncompressed. - For the Series 5 there are no changes/differences in behaviour; everything works as before. Current thinking is that I will not update boot2nd.bin for the Series 5. - The use of boot2nd.bin is optional for the Series 5mx; by default there are no changes/differences in behaviour. If you want to use boot2nd.bin it for the Series 5mx you should not glue the kernel with the boot package (the same rules for the Series 7 applies) and specify "useboot2nd=yes" in arlo.cfg. - Arlo.cfg has a couple of new parameters if you want to use boot2nd.bin. Consult the arlo.cfg on on how to use them. What's new in 1.23 ================== - Fixed crash when the bootstring the in the config file > 64 chars - Fixed problem that the bootstring from config file gets truncated - The driver has _not_ changed compared to 1.22. What's new in 1.22 ================== - Changed the heap size to be 512kb minimal and 16MB maximum. Arlo can now be loaded in low memory conditions. - Fixed problem in page table size. Arlo can now correctly load up to 16MB worth of kernel and initrd. - The driver has _not_ changed compared to 1.21. What's new in 1.21 ================== - Boot option in the .cfg file didn't work, it does now. - Fixed stupid bug in booting on the Series 5mx. - Reinstated "o" option in the expert menu to manually set the boot option What's new in 1.20 ================== - Arlo now works for the Series 5, 5mx and the Series 7 I've tested the Series 5 with a proper kernel and it boots ok. The series 5mx should still work, although I've not retested. The Series 7 does not fully work yet. The address translation works ok, but trying to boot some test kernel resutls in a crash. It's probably to do with the way the MMU gets disabled. Maybe I need to flush the cache first?! - For each of the three platforms we can use the exact same driver image. The only platform difference is that the EKern.exe UIDs seem to differ. Each time Arlo is started it will patch the driver file image with the UIDs of the local kernel (if needed). - To avoid copyright issues, I've removed the line editor code that was copied from the EPOC SDK and replaced it with a basic line editor I cooked up myself. - Some other bit and bobs: - Added the processor id in the information screen - Added the 'r' (for detect RAM) option in the expert menu. This reports the location of the RAM banks according to information in the EPOC kernel. - Hex numbers should entered as "0xabcd1234" and not abcd1234. Also made sure that we don't peek at address 0 (I make typos all the time and they get converted to 0) What's new in 1.10 ================== - Arlo now uses a config file for automatic booting. - This version of Arlo supports both the Series 5 and the Series 5MX. Said that, I don't own a Series 5 and could therefor only test it on a Series5mx. Feedback is appreciated on using it withe a Series5! - Note that the Series 5MX still has no kernel to boot, so it's pretty much for developers only. - Added a screen with some hardware info (select (a)advanced item and next (i)information). ********************* END OF VERSION INFO ************************** Installing ========== - Copy arlo.ldd to either c:\system\libs\ or d:\system\libs\ - Copy all the other files in one of the following directories: c:\, c:\arlo, d:\ or d:\arlo - arlosh.exe is only used if you want to run Arlo as the EPOC shell (see below on "Running Arlo as the EPOC shell"). - arlo.exe will search for the arlo.cfg and boot2nd.bin in the above mentioned four directories (searched for in that order). Arlo Config file ================ See the supplied arlo.cfg for information on its format Booting Linux using the boot menu ================================= - Start arlo.exe - Arlo presents a boot menu with the info it has found from the config file. If no config file was present or could not be successfully interpreted the text will be displayed. - The default boot item has been marked by * - For the duration of the timeout you can select another boot or menu item. Running Arlo as the EPOC shell ============================== You need a Compact Flash (CF) card for this to work. - copy z:\system\data\wsini.ini to directory d:\system\data\ - Edit d:\system\data\wsini.ini and replace the STARTUP line by STARTUP X:\some_dir\arlosh.exe. where x:\some_dir is where you've stored arlosh.exe - Make sure that arlo.exe, arlo.cfg and boot2nd.bin are stored in one of the following directories: c:\, c:\arlo, d:\ or d:\arlo. - Add an EPOC boot item in arlo.cfg; see the supplied arlo.cfg on how to do that. - That's it! Advanced boot menu ================== - Presents more detailed info on how Arlo has interpreted the config file, including which file it has used. Experienced boot menu ===================== - This is basically the old Arlo. You can boot the "old" way by: - loading a kernel image and optionally an initrd image for example: l d:\vmlinuz l d:\initrd.gz b - Although you can use this "manual" booting for all kernels (S5, S5mx and Series 7), you cannot set any of the new options such as kernel load address or archno. Why the device driver cannot be unloaded ======================================== There is no public SDK/DDK for developing device drivers in EPOC. I have reverse engineered the kernel interface to develop my own Arlo device driver. The only thing that does not appear to work is unloading the driver. As it stands I have no plans/intention to include this functionality because at some point development on the device driver will stabelise. There is no harm in the device driver being loaded all the time and does not cause any restrictions. The only annoyance is that upgrading the device driver requires a cold reboot to force the unload. Building ======== - Unzip the source (with folder names) to the root of your epoc development drive. Building the driver ================== - change directory to \arlo\ldd - call "makmake arlo marm" - call "nmake -f arlo.marm" Building the console app ======================== - change directory to \arlo\app - call "makmake arlo marm" - call "nmake -f arlo.marm" Building the Shell App ======================== - change directory to \arlo\shell - call "makmake arloshell marm" - call "nmake -f arloshell.marm" License ======= Arlo is released under the GNU General Public Lisence. See the file copying for more info. Send suggestions or comments to: peter@yipton.demon.co.uk