Thanks for all of the great advice.
I think my plan is to stick with the 2.4 kernel for now until I run into a compelling reason to switch to 2.6. It sounds like the 2.6 support is getting very close to maturity and if I get some free time I would love to pitch in and help. Is anyone out there using JFFS2 on a NAND flash device in 2.4? If this works in 2.4 then I should be OK. My dev board only has 4MB of NOR flash so this is one part of the processor subsystem that I cannot test. -David Summers On 1/31/06, David H. Lynch Jr. <dhlii at dlasys.net> wrote: > > David; > > I just completed a port of 2.6 to the Pico E-12 which is a Xilinx > Virtex-4 with very little hardware. > > I had the advantage of a system that already had a elf loader (not > U-Boot), but not a Linux loader. > If I could load Linux as an elf file then I did not need another loader. > In the end I had to make some very trivial modifications to Pico's > loader to pass a board information structure. But otherwise the decision > to use the existing loader saved me having to port u-boot. > > I also chose to boot into a ramdisk. Using the existing loader precluded > having the ramdisk as a separate file. > the intramfs feature of 2.6 allowed me to wrap the ramdisk into the same > file as the kernel. Documentation on initramfs is spartan, and somewhat > opaque. The good news was that despite the documentation initramfs > proved trivially easy to use. > > After that I took the 2.6 kernel source, and litterally went through > looking for all references to the xilinx ml300. > Wherever there was an ml300 specific file I created an new one for the > pico_e12. Wherever there was an ml300 configuration option I created a > PICO_E12 one. > > The E-12 had substatnitially less hardware than the ml300 (or the ml403) > so mostly I just ended up ripping code out of my private version of the > ml300 code that was transmuting into the pico_e12 code. > > The next obstacle I bumped into was that the e-12 had two devices > suitable for a console - a highspeed fifo interface to a host > development system called the keyhole port, and the xilinx uartlite > serial port. Neither are supported in 2.6. I looked at the Xilinx > Uartlite 2.4 driver and it was coded substantially different from other > serial drivers. I decided not to try to port it to 2.6. I started from > scratch using the 8250 code as a base. I picked the 8250 because: > It must be the most heavily used linux serial driver and therefore I > hoped the most uptodate and well debugged. > The 8250 had boot through console IO support. Most other serial devices > require getting fairly far into the boot process before you get any output. > > The really early IO proved fairly simple. Implimenting xxxx_dbg.c and > xxxx_tty.c for both the uartlite and the keyhole was fairly trivial. > > Additionally the keyhole port had a "debug" feature where if you output > a single 32 bit word to one of the fifo ports it would be displayed in > hex on the host. As this could be done in an assembler macro that proved > indispensiable early on. > > I was stalled for about 3 weeks trying to get the sucker into virtual > mode. In the end I had to disable Machine Check exceptions to make the > transition to virtual mode. Pico claims there is not a hardware problem, > but if I do nto disable machine checks on the e-12 it will never make > the tansition to virtual mode. > > The full serial driver for the Uartlite (and Keyhole) proved more > daunting than anything else. In some ways the 8250 proved a bad choice > as a template there as there are more permutations, busses, etc > associated with the 8250 than anything else. I ended up stripping out > huge hunks of code. Eventually, I used the m32r_sio as a simpler > template. The driver was much simpler, and it had the critical features > I needed - both interupt driven and polled IO support - some > implimentations of the E12 do not include a PIC. The serial drivers took > much longer than the whole rest of the port combined - including the > machine check detour. > > Just as I was finishing up the E12 port, Grant posted a set of patches > for the ml403. There were some fundimental differences at a fairly low > level between Grant's approach and mine. And I think Grant's Virtex-4 > code appears to reflect more of the direction things are going, so I am > in the process of remodeling my port for the E12 on his for the ml403. > But I have not completed that. > > Absent the machine check issue and having to write serial drivers thus > was atmost 2 weeks work. > > > BTW while you appear to be a hardware guy with alot of software > experience, I am a software guy with alot of hardware experience. > > > The E-12 has flash, but it uses a proprietary flash file system, and > using it would have required writing a filesystem driver - which I would > be happy to do if I got paid for it. Write performance on flash can be > extremely slow. If you are recording a significant amount of data in > realtime, you may want to skip the flash and just use a ramdisk. However > the ramdisk will not survive the system loosing power - which might be > an issue in a rocket. > > If you are going to start with the 2.6 Kernel, I would get git. use it > to DL Linus's current 2.6 git repository, adn apply all of Grant's ml403 > patches from the mailing list to it. > Then I would start an approach somewhat similar to what I described > above - except using Grant's ml403 as the base to create your own board > spec from instead of the ml300 that I used. > How tightly constrained are you for gates in the FPGA ? > If you are not tight, use the Xilinx 16550 serial IP and then you can > use standard Kernel 8250 dirvers (making Grant's patches work with > Uartlite is one of the things I am having trouble with) It would be my > guess that if you use the 16550 serial IP, you may be able to use > Grant's ml403 stuff asis. > > > > > > David Summers wrote: > > >I am starting a new project where I need to have a flash file system > >and an ethenet interface (HTTP and FTP). The project is a solar > >physics experiment that will be launched on a sub-orbital rocket > >flight this fall. The idea is that the experiment will write data > >files to the flash file system while in flight, and then I can > >download the data using ethernet after the experiment returns to > >earth. > > > >I think that Linux is the way to go for this project because of the > >JFFS2 filesystem and the strong networking support. The only problem > >is that I am totally new to embedded linux. > > > >I am prototyping my system on an Avnet FX12 development board ( Specs > >here: http://tinyurl.com/4gfdv ) which is pretty similar to the Xilinx > >ML403 board except with less memory and no SystemACE slot. > > > >I will eventually build my own custom board with the same Xilinx > >Virtex 4 FX12 FPGA and additional flash memory and some custom > >interface hardware. My background is primarily as a hardware designer, > >and I am very confortable with the FPGA part of this project. I am > >comfortable as a Linux user, and I am a pretty good C coder (for a > >hardware guy anyway :). I have never built a linux system (embedded > >or desktop) before, and I need some help getting started with embedded > >linux. > > > >I have already found the following websites which have been a big help so > >far: > > > >http://www.klingauf.de/v2p/index.phtml > >http://splish.ee.byu.edu/projects/LinuxFPGA/configuring.htm > >http://www.crhc.uiuc.edu/IMPACT/gsrc/hardwarelab/docs/kernel-HOWTO.html#toc1 > > > >I have a few questions that I hope someone can help me with: > > > >1. What is the best linux distribution to start out with? I am > >currently working with the 2.4 kernel code from > >ppc.bkbits.net/linuxppc_2_4_devel, but I'm not sure that this version > >be being updated. (MontaVista also seems to be making it rather > >difficult to download their free Linux Preview Kit, so I wouldn't mind > >finding another distribution) Does the DENX distribution have good > >PPC support? Are there any others that I should look at, or should I > >just download the kernel source directly from kernel.org? > > > > > >2. kernel 2.4 or 2.6? > > > >It is my understanding that the latest version of MTD and JFFS2 have > >dropped support for kernel 2.4. I would like to use JFFS2 on a NAND > >flash device, so it seems like I should use 2.6. (Can I use JFFS2 on > >a NAND device with kernel v 2.4?) > > > >Being a complete newbie, am I biting off more that I can handle by > >trying to use 2.6? > > > >I have been lurking on the mailing list for a while, and I know that > >there are several people working on 2.6.x patches for the Xilinx > >virtex 4 parts. Could someone point me to a list of the patches that > >I need to get me started? I think that the ML403 patches should work > >with my board, but I don't know which ones I need to download. > > > > > >Thank you for your help, > > > >David Summers > >University of Colorado > >_______________________________________________ > >Linuxppc-embedded mailing list > >Linuxppc-embedded at ozlabs.org > >https://ozlabs.org/mailman/listinfo/linuxppc-embedded > > > > > > > > -- > Dave Lynch DLA Systems > Software Development: Embedded Linux > 717.627.3770 dhlii at dlasys.net http://www.dlasys.net:8888 > >