Hi Pavan, On Fri, 2010-01-01 at 13:34 -0800, Pavan Kandepet wrote: > Hello, > I want to get involved and eventually get a job doing embedded > Linux development. I had a couple of questions for folks who do > this and could give me some advice. I am specifically interested > in device driver development and embedded networking. > > I am competent in userland Linux programming and have done > plenty of kernel compilations etc... I am also an electrical engineer > and don't have problems reading processor or device manuals etc... > > I know I could get a development board and start working right away, > but is there any specific development board that you folks would > recommend which offers great Linux support? I should be able read and > understand how most of the drivers and networking code work. ( I am > interested in ARM processor boards). I want to tweak drivers and play > around. > > Is there any way I could find out what new open source device drivers are > being developed so that I could contribute? This would be a great place to > start. > > If there are any embedded Linux developers on this mailing list, how did > you get started? Any advice is greatly appreciated, thanks and have a great > new year. > Pavan > > -- > To unsubscribe from this list: send an email with > "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx > Please read the FAQ at http://kernelnewbies.org/FAQ > > If there are any embedded Linux developers on this mailing list, how did > you get started? I've been into embedded for years, but only recently did I notice nowadays Embedded Linux is a must (as an embedded engineer). Entry level made my head spin, but after some research I found that Olimex had a particularly good deal when it comes to stepping into the ARM Linux world. I guess it depends on one last criteria - whether you want full graphics (ie. LCD & touch screen etc), or are happy with a terminal interface. I chose the latter, as I thought it's already complex enough without graphics, let alone.... (I'm planning to expand to fuller graphics at some stage when I'm more comfortable) So I settled on the SAM9-L9260 Olimex board : http://olimex.com/dev/index.html You can see the full heads up at the URL under SAM9-L9260. I found it a very good deal, considering the low price tag. The board comes turnkey "preflashed" for the first giant step.. :-) It uses an Atmel SAM9 (ARM926ej-S, v5TEJ) @ 180/200 MHz. It's got 512 MB of NandFlash, 64 MB SDRAM, USB host/device, Ether 100M, SD/MMC/SDIO, full RS232 (+2 extra ports), standard JTAG.. etc I've already crossed many hurdles and would be happy to pool resources or guide you if you get stuck on entry etc. For tools, I ended up with Buildroot (2009.08) so I can completely customise everything incl my rootfs. I'm using (ARM)GCC 4.3.3 on Ubuntu 9.10 host wise. While still learning, I've updated quite a few things, plus struggled through various issues, as I found Linux help in the embedded world seems to be a lot more scarce than on PCs. I've patched the latest U-boot version to run on that L9260 board (the PHY support is missing), latest stable kernel so you can use menuconfig properly etc. The result so far is that my embedded board boots in about ~18 secs with a modest rootfs (JFFS2). If you're curious about that, I'm attaching a log at end of this post of my bootlog on SAM9-L9260. If you're interested in this, I can elaborate further - as I too am ultimately interested in becoming proficient writing kernel space drivers/modules. Finally, since a while, I've quite taken to Eclipse/Galileo to do user/kernel cross development and source level debugging. That was a day and a half on its own all right... especially to get module stuff going (getting kgdb to work on ARM9 iow source level remote target debug, but a couple of helpful members here clued me in :-) Wrt. open source development, as a "test" I'm planning to add Linux support for SDW-820 SDIO WiFi card. About a year ago I wrote my own 'from scratch' ARM based driver for it, but I don't know yet how to deal with the open source issue vs. NDA I had to sign with Sigtec to get some example partial driver WINCE code. I reverse engineered how to talk to the IPN2128 Inprocomm MAC chipset. It took me over a month to figure out how that beastie is driven (it's very complicated) , but I have a completely functional WiFi driver. That's what's going on here wrt. planned driver development. ** Here's the log to give you idea of L9260 board : reboot # The system is going down NOW! Sent SIGTERM to all processes Sent SIGKILL to all processes Requesting system reboot Restarting system. RomBOOT >AT91Bootstrap loading from 0x8400... U-Boot 2009.03 (Aug 14 2009 - 01:32:23) DRAM: 64 MB NAND: 512 MiB DataFlash:AT45DB161 Nb pages: 4096 Page Size: 528 Size= 2162688 bytes Logical address: 0xD0000000 Area 0: D0000000 to D00041FF (RO) Bootstrap Area 1: D0004200 to D00083FF Environment Area 2: D0008400 to D0041FFF (RO) U-Boot Area 3: D0042000 to D0251FFF Kernel Area 4: D0252000 to D020FFFF FS In: serial Out: serial Err: serial Net: macb0 macb0: PHY present at 1 macb0: link up, 100Mbps full-duplex (lpa: 0x45e1) Hit any key to stop autoboot: 3 2 1 0 ## Booting kernel from Legacy Image at 22200000 ... Image Name: Linux-2.6.29.4 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1622792 Bytes = 1.5 MB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux.......................................................................................................... done, booting the kernel. Linux version 2.6.29.4 (kris@Ubuntu) (gcc version 4.3.3 (GCC) ) #14 PREEMPT Sun Aug 23 03:00:55 EST 2009 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 CPU: VIVT data cache, VIVT instruction cache Machine: Olimex SAM9-L9260 Memory policy: ECC disabled, Data cache writeback Clocks: CPU 180 MHz, master 90 MHz, main 18.432 MHz Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 Kernel command line: mem=64M console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=jffs2 AT91: 96 gpio irqs in 3 banks PID hash table entries: 256 (order: 8, 1024 bytes) Console: colour dummy device 80x30 console [ttyS0] enabled Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 64MB = 64MB total Memory: 61444KB available (3056K code, 264K data, 92K init) Calibrating delay loop... 89.70 BogoMIPS (lpj=448512) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok net_namespace: 520 bytes NET: Registered protocol family 16 bio: create slab <bio-0> at 0 SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 2048 (order: 2, 16384 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 2048 bind 2048) TCP reno registered NET: Registered protocol family 1 NetWinder Floating Point Emulator V0.97 (double precision) audit: initializing netlink socket (disabled) type=2000 audit(0.480:1): initialized JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. msgmni has been set to 120 io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered (default) atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL loop: module loaded MACB_mii_bus: probed eth0: Atmel MACB at 0xfffc4000 irq 21 (4a:72:ac:3e:e1:fa) eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:01, irq=-1) Driver 'sd' needs updating - please use bus_type methods NAND device: Manufacturer ID: 0xec, Chip ID: 0xdc (Samsung NAND 512MiB 3,3V 8-bit) Scanning device for bad blocks Bad eraseblock 384 at 0x000003000000 Creating 2 MTD partitions on "NAND 512MiB 3,3V 8-bit": 0x000000000000-0x000000400000 : "Bootloader Area" 0x000000400000-0x000020000000 : "User Area" ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver at91_ohci at91_ohci: AT91 OHCI at91_ohci at91_ohci: new USB bus registered, assigned bus number 1 at91_ohci at91_ohci: irq 20, io mem 0x00500000 usb usb1: New USB device found, idVendor=1d6b, idProduct=0001 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: AT91 OHCI usb usb1: Manufacturer: Linux 2.6.29.4 ohci_hcd usb usb1: SerialNumber: at91 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. mice: PS/2 mouse device common for all mice Registered led device: led_stat Registered led device: led_pwr TCP cubic registered Initializing XFRM netlink socket NET: Registered protocol family 17 NET: Registered protocol family 15 RPC: Registered udp transport module. RPC: Registered tcp transport module. VFS: Mounted root (jffs2 filesystem) on device 31:1. Freeing init memory: 92K init started: BusyBox v1.14.3 (2010-01-03 02:04:55 EST) Populating /dev using udev: done Starting portmap: done Initializing random number generator...done. Starting network... udhcpc (v1.14.3) started Sending discover... Sending select for 192.168.1.4... eth0: link up (100/Full) Lease of 192.168.1.4 obtained, lease time 86400 deleting routers route: SIOCDELRT: No such process adding dns 192.168.1.1 Starting sshd: OK Welcome to Buildroot L9260 login: root # ******************************************** HTH ! -- Best regards, Kris -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ