Hi!
I have custom board based on AM335x almost copy of AM335x-EVM-SK the only one big difference on this board absent Ethernet; instead USB is used. USB part is pin-to-pin similar to AM335x-EVM-SDK (UART0, JTAG, USB0 are connected to FT IC and to HUB IC and all these to micro-USB header).
U-Boot is ported and launch fine, HOST is configured and has /tftpboot and /targetNFS folders for upload linux kernel and mount NFS rootfs respectively. From U-Boot I can download kernel from tftp and from NFS folder (the last is just to confirm HOST NFS is work properly). Board has staic IP=10.10.0.2 and HOST IP=10.10.0.1 here is bootargs U-Boot successfully passes to kernel:
console=ttyO0,115200n8 root=/dev/nfs rw ip=10.10.0.2 nfsroot=10.10.0.1:/home/dev/ti-sdk-am335x-evm-06.00.00.00/targetNFS,nolock rw rootfstype=nfs
I've started to port Linux Kernel from 06.00.00.00 SDK from git branch "06.00.00.00-template", all compiled fine and loaded by U-boot from TFTP here is log of booting process since power on time:
U-Boot 2013.01.01-00001-gd5af140-dirty (Jan 31 2014 - 06:21:56)
I2C: ready
DRAM: 256 MiB
WARNING: Caches not enabled
Configure interrupts
BackLight Enable
Configure LCD
NAND: No NAND device found!!!
0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
*** Warning - readenv() failed, using default environment
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
Net: usb_ether
Hit any key to stop autoboot: 0
mmc0 is current device
SD/MMC found on device 0
reading uEnv.txt
4411 bytes read in 3 ms (1.4 MiB/s)
Loaded environment from uEnv.txt
Importing environment from mmc ...
Running uenvcmd ...
uImage-am335x-evm.bin from server...
using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
MAC 00:18:31:e1:d8:b5
HOST MAC de:ad:be:af:00:00
RNDIS ready
musb-hdrc: peripheral reset irq lost!
high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
USB RNDIS network up!
Using usb_ether device
TFTP from server 10.10.0.1; our IP address is 10.10.0.2
Filename 'uImage-am335x-evm.bin'.
Load address: 0x80200000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
######################################
375 KiB/s
done
Bytes transferred = 3185928 (309d08 hex)
using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
MAC 00:18:31:e1:d8:b5
HOST MAC de:ad:be:af:00:00
RNDIS ready
high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
USB RNDIS network up!
Using usb_ether device
host 10.10.0.1 is alive
U-Boot# bootm
## Booting kernel from Legacy Image at 80200000 ...
Image Name: Linux-3.2.0-g9bd25ff-dirty
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3185864 Bytes = 3 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Linux version 3.2.0-g9bd25ff-dirty (dev@ubuntu) (gcc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) ) #1 Tue Feb 4 06:52:42 PST 2014
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: MyCustomAM335x
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] AM335X ES1.0 (sgx neon )
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024
[ 0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/nfs rw ip=10.10.0.2 nfsroot=10.10.0.1:/home/dev/ti-sdk-am335x-evm-06.00.00.00/targetNFS,nolock rw rootfstype=nfs
[ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Memory: 256MB = 256MB total
[ 0.000000] Memory: 253296k/253296k available, 8848k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
[ 0.000000] .text : 0xc0008000 - 0xc0595000 (5684 kB)
[ 0.000000] .init : 0xc0595000 - 0xc05d0000 ( 236 kB)
[ 0.000000] .data : 0xc05d0000 - 0xc0638518 ( 418 kB)
[ 0.000000] .bss : 0xc063853c - 0xc0667224 ( 188 kB)
[ 0.000000] NR_IRQS:396
[ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
[ 0.000000] Total of 128 interrupts on 1 active controller
[ 0.000000] OMAP clockevent source: GPTIMER2 at 24000000 Hz
[ 0.000000] OMAP clocksource: GPTIMER1 at 32768 Hz
[ 0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms
[ 0.000000] Console: colour dummy device 80x30
[ 0.000122] Calibrating delay loop... 718.02 BogoMIPS (lpj=3590144)
[ 0.058563] pid_max: default: 32768 minimum: 301
[ 0.058685] Security Framework initialized
[ 0.058776] Mount-cache hash table entries: 512
[ 0.059143] CPU: Testing write buffer coherency: ok
[ 0.079589] omap_hwmod: pruss: failed to hardreset
[ 0.080718] print_constraints: dummy:
[ 0.081085] NET: Registered protocol family 16
[ 0.083190] OMAP GPIO hardware version 0.1
[ 0.085754] omap_mux_init: Add partition: #1: core, flags: 0
[ 0.088226] omap2_mcspi.1: alias fck already exists
[ 0.088439] omap2_mcspi.2: alias fck already exists
[ 0.089447] edma.0: alias fck already exists
[ 0.089477] edma.0: alias fck already exists
[ 0.089508] edma.0: alias fck already exists
[ 0.116302] bio: create slab <bio-0> at 0
[ 0.118499] SCSI subsystem initialized
[ 0.120178] usbcore: registered new interface driver usbfs
[ 0.120483] usbcore: registered new interface driver hub
[ 0.120666] usbcore: registered new device driver usb
[ 0.122619] Advanced Linux Sound Architecture Driver Version 1.0.24.
[ 0.123718] Switching to clocksource gp timer
[ 0.139129] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
[ 0.139526] NET: Registered protocol family 2
[ 0.139709] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.140014] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.140167] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.140258] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.140289] TCP reno registered
[ 0.140289] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.140319] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.140533] NET: Registered protocol family 1
[ 0.140777] RPC: Registered named UNIX socket transport module.
[ 0.140777] RPC: Registered udp transport module.
[ 0.140808] RPC: Registered tcp transport module.
[ 0.140808] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.141052] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.152221] VFS: Disk quotas dquot_6.5.2
[ 0.152282] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.152832] msgmni has been set to 494
[ 0.155975] alg: No test for stdrng (krng)
[ 0.156646] io scheduler noop registered
[ 0.156677] io scheduler deadline registered
[ 0.156738] io scheduler cfq registered (default)
[ 0.158569] omap_uart.0: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0
[ 0.596496] console [ttyO0] enabled
[ 0.600708] omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1
[ 0.608551] omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2
[ 0.616363] omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3
[ 0.624145] omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4
[ 0.631896] omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5
[ 0.640167] omap4_rng omap4_rng: OMAP4 Random Number Generator ver. 2.00
[ 0.656463] brd: module loaded
[ 0.664428] loop: module loaded
[ 0.667877] i2c-core: driver [tsl2550] using legacy suspend method
[ 0.674346] i2c-core: driver [tsl2550] using legacy resume method
[ 0.682495] mtdoops: mtd device (mtddev=name/number) must be supplied
[ 0.689636] omap2-nand driver initializing
[ 0.694091] OneNAND driver initializing
[ 0.699340] CAN device driver interface
[ 0.703338] CAN bus driver for Bosch D_CAN controller 1.0
[ 0.709838] usbcore: registered new interface driver zd1201
[ 0.715850] usbcore: registered new interface driver cdc_ether
[ 0.722076] usbcore: registered new interface driver cdc_eem
[ 0.728149] usbcore: registered new interface driver dm9601
[ 0.734039] cdc_ncm: 04-Aug-2011
[ 0.737548] usbcore: registered new interface driver cdc_ncm
[ 0.743469] Initializing USB Mass Storage driver...
[ 0.748748] usbcore: registered new interface driver usb-storage
[ 0.755004] USB Mass Storage support registered.
[ 0.760284] mousedev: PS/2 mouse device common for all mice
[ 0.767181] omap_rtc am33xx-rtc: rtc core: registered am33xx-rtc as rtc0
[ 0.774261] am33xx-rtc: already running
[ 0.778411] i2c /dev entries driver
[ 0.782196] Linux video capture interface: v2.00
[ 0.787353] usbcore: registered new interface driver uvcvideo
[ 0.793365] USB Video Class driver (1.1.1)
[ 0.798614] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[ 0.805175] _regulator_get: deviceless supply vdd_mpu not found, using dummy regulator
[ 0.813873] cpuidle: using governor ladder
[ 0.818664] cpuidle: using governor menu
[ 0.823364] omap4_aes_mod_init: loading AM33X AES driver
[ 0.829040] omap4-aes omap4-aes: AM33X AES hw accel rev: 3.02
[ 0.835571] omap4_aes_probe: probe() done
[ 0.839965] omap4_sham_mod_init: loading AM33X SHA/MD5 driver
[ 0.846099] omap4-sham omap4-sham: AM33X SHA/MD5 hw accel rev: 4.03
[ 0.857635] omap4_sham_probe: probe() done
[ 0.864318] usbcore: registered new interface driver usbhid
[ 0.870147] usbhid: USB HID core driver
[ 0.874877] usbcore: registered new interface driver snd-usb-audio
[ 0.882720] ALSA device list:
[ 0.885864] No soundcards found.
[ 0.889404] oprofile: hardware counters not available
[ 0.894683] oprofile: using timer interrupt.
[ 0.899169] nf_conntrack version 0.5.0 (3957 buckets, 15828 max)
[ 0.905914] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 0.911590] TCP cubic registered
[ 0.914978] NET: Registered protocol family 17
[ 0.919616] can: controller area network core (rev 20090105 abi 8)
[ 0.926177] NET: Registered protocol family 29
[ 0.930816] can: raw protocol (rev 20090105)
[ 0.935272] can: broadcast manager protocol (rev 20090105 t)
[ 0.941192] Registering the dns_resolver key type
[ 0.946197] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[ 0.954223] ThumbEE CPU extension supported.
[ 0.958740] mux: Failed to setup hwmod io irq -22
[ 0.964355] Power Management for AM33XX family
[ 0.969177] Trying to load am335x-pm-firmware.bin (60 secs timeout)
[ 0.975860] Copied the M3 firmware to UMEM
[ 0.980224] Cortex M3 Firmware Version = 0x181
[ 0.985382] sr_init: platform driver register failed
[ 0.993988] clock: disabling unused clocks to save power
[ 1.012481] omap_rtc am33xx-rtc: setting system clock to 2000-01-01 00:00:48 UTC (946684848)
[ 13.135864] VFS: Unable to mount root fs via NFS, trying floppy.
[ 13.142211] List of all partitions:
[ 13.145904] No filesystem could mount root, tried: nfs
[ 13.151367] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[ 13.160003] Backtrace:
[ 13.162597] [<c0017dbc>] (dump_backtrace+0x0/0x10c) from [<c0412afc>] (dump_stack+0x18/0x1c)
[ 13.171386] r6:00008000 r5:c04f4ce0 r4:c063b188 r3:c05f200c
[ 13.177337] [<c0412ae4>] (dump_stack+0x0/0x1c) from [<c0412cf8>] (panic+0x64/0x194)
[ 13.185333] [<c0412c94>] (panic+0x0/0x194) from [<c0595cf8>] (mount_block_root+0x1e4/0x228)
[ 13.194061] r3:cf01df0c r2:00000020 r1:cf01df40 r0:c04f4ce0
[ 13.199981] r7:c04f4d48
[ 13.202636] [<c0595b14>] (mount_block_root+0x0/0x228) from [<c0595ef0>] (mount_root+0xc8/0xe8)
[ 13.211639] [<c0595e28>] (mount_root+0x0/0xe8) from [<c059607c>] (prepare_namespace+0x16c/0x1c0)
[ 13.220794] r4:c06385a0
[ 13.223449] [<c0595f10>] (prepare_namespace+0x0/0x1c0) from [<c05958fc>] (kernel_init+0xf4/0x120)
[ 13.232727] r5:c05cf480 r4:c05cf480
[ 13.236480] [<c0595808>] (kernel_init+0x0/0x120) from [<c0040a9c>] (do_exit+0x0/0x65c)
[ 13.244720] r5:c0595808 r4:00000000
And that is all so far, I've passed successfully bootargs to Kernel (highlighted string above) and can't figure out how to include USB/RNDIS or something like this into board files of kernel. As reference I use /arch/arm/mach-omap2/board-am335xevm.c . I've read "sitara_boot_camp_uboot_linux_kernel_board_port.ppt" already, but there is sample how to connect Ethernet, but I need Ethernet over USB for NFS rootfs.
Please show me clear road map how to change board-am335xevm.c (and related sources if necessary) for NFS roofs over USB.