搞到了片 Pandaboard ES, 經過了幾天的網上資訊過濾, 目前總算比較有頭緒了.
Pandaboard 的 support 看起來似乎不是什麼大問題, 但 ES 則感覺有點亂. 試了不同的 image 來源 (主要是 Cononical 及 Linaro), 相當的花時間. u-boot 及 kernel source tree 那個穩哪版是 official release, 都是要試過才準, 光看 document 常會發現跟實際情況有不少的差異.
Ubuntu Core 11.10 從網上收集到的資訊看來在 ES 上會有過熱的問題. 12.04.2 版執行於 Pandaboard ES 則是在開機時印出以下 message
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.2.0-1412-omap4 ([email protected]) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #16-Ubuntu SMP PREEMPT Tue Apr 17 19:38:42 UTC 2012 (Ubuntu 3.2.0-1412.16-omap4 3.2.14)
[ 0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: OMAP4 Panda board
[ 0.000000] Reserving 33554432 bytes SDRAM for VRAM
[ 0.000000] Memory policy: ECC disabled, Data cache writealloc
[ 0.000000] OMAP4460 ES1.1
[ 0.000000] PERCPU: Embedded 8 pages/cpu @c1240000 s10080 r8192 d14496 u32768
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 251648
[ 0.000000] Kernel command line: rw vram=32M fixrtc [email protected] root=/dev/mmcblk0p2 console=ttyO2,115200n8 rootwait
[ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] allocated 4194304 bytes of page_cgroup
[ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[ 0.000000] Memory: 991MB = 991MB total
[ 0.000000] Memory: 991148k/991148k available, 57428k reserved, 228352K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xf0800000 - 0xf8000000 ( 120 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xf0000000 ( 768 MB)
[ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
[ 0.000000] .text : 0xc0008000 - 0xc08b334c (8877 kB)
[ 0.000000] .init : 0xc08b4000 - 0xc0918760 ( 402 kB)
[ 0.000000] .data : 0xc091a000 - 0xc09710a8 ( 349 kB)
[ 0.000000] .bss : 0xc09710cc - 0xc0a37a0c ( 795 kB)
[ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] Preemptible hierarchical RCU implementation.
[ 0.000000] NR_IRQS:410 nr_irqs:410 410
[ 0.000000] ------------[ cut here ]------------
[ 0.000000] WARNING: at /build/buildd/linux-ti-omap4-3.2.0/arch/arm/common/gic.c:611 gic_init+0xb0/0x11c()
[ 0.000000] Cannot allocate irq_descs @ IRQ16, assuming pre-allocated
[ 0.000000] Modules linked in:
[ 0.000000] [
[ 0.000000] [
[ 0.000000] [
[ 0.000000] [
[ 0.000000] [
[ 0.000000] [
[ 0.000000] [
[ 0.000000] [
[ 0.000000] ---[ end trace da227214a82491b7 ]---
[ 0.000000] OMAP clockevent source: 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.000152] Calibrating delay loop... 1392.74 BogoMIPS (lpj=5439488)
[ 0.070404] pid_max: default: 32768 minimum: 301
[ 0.070648] Security Framework initialized
[ 0.070739] AppArmor: AppArmor initialized
[ 0.070739] Yama: becoming mindful.
[ 0.071044] Mount-cache hash table entries: 512
[ 0.072174] Initializing cgroup subsys cpuacct
[ 0.072235] Initializing cgroup subsys memory
[ 0.072296] Initializing cgroup subsys devices
[ 0.072326] Initializing cgroup subsys freezer
[ 0.072326] Initializing cgroup subsys net_cls
[ 0.072357] Initializing cgroup subsys blkio
[ 0.072387] Initializing cgroup subsys perf_event
[ 0.072540] CPU: Testing write buffer coherency: ok
[ 0.072601] ftrace: allocating 25675 entries in 76 pages
[ 0.117462] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.117523] Calibrating local timer... 341.55MHz.
[ 0.164306] hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
[ 0.164428] Setting up static identity map for 0x805d4dd0 - 0x805d4e18
[ 0.164459] L310 cache controller enabled
[ 0.164459] l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x5e470000, Cache size: 1048576 B
[ 0.240875] CPU1: Booted secondary processor
[ 0.271057] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.271087] CPU1: Unknown IPI message 0x1
[ 0.271118] Brought up 2 CPUs
[ 0.271148] SMP: Total of 2 processors activated (2755.07 BogoMIPS).
[ 0.272125] devtmpfs: initialized
[ 0.276916] omap_hwmod: l4_div_ck: missing clockdomain for l4_div_ck.
[ 0.332153] omap_hwmod: mcpdm: _wait_target_ready: -16
[ 0.332183] ------------[ cut here ]------------
[ 0.332214] WARNING: at /build/buildd/linux-ti-omap4-3.2.0/arch/arm/mach-omap2/omap_hwmod.c:1509 _enable+0x1ec/0x220()
[ 0.332214] Modules linked in:
[ 0.332275] [
[ 0.332305] [
[ 0.332336] [
[ 0.332366] [
[ 0.332397] [
[ 0.332427] [
[ 0.332458] [
[ 0.332489] [
[ 0.332519] [
[ 0.332550] [
[ 0.332580] [
[ 0.332580] ---[ end trace da227214a82491b8 ]---
[ 0.332611] omap_hwmod: mcpdm: cannot be enabled (3)
[ 0.339355] Enabling ERRATA 751472
[ 0.339385] OMAP4: Map 0xafe00000 to 0xfe600000 for dram barrier
[ 0.340332] print_constraints: dummy:
[ 0.340637] NET: Registered protocol family 16
[ 0.341369] GPMC revision 6.0
[ 0.341461] mpu.0: alias fck already exists
[ 0.341766] iva.0: alias fck already exists
[ 0.343200] OMAP GPIO hardware version 0.1
[ 0.344848] omap_mux_init: Add partition: #1: core, flags: 2
[ 0.345855] omap_mux_init: Add partition: #2: wkup, flags: 2
[ 0.348602] SRAM: Mapped pa 0x40300000 to va 0xf0840000 size: 0xd000
[ 0.352050] _omap_mux_init_gpio: Could not set gpio7
[ 0.352111] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[ 0.352111] hw-breakpoint: maximum watchpoint size is 4 bytes.
[ 0.357818] omap_ipussdev_init: could not look up fdif
[ 0.358764] OMAP DMA hardware revision 0.0
[ 0.366699] bio: create slab
[ 0.367553] print_constraints: vwl1271: 1800 mV
[ 0.368804] i2c-core: driver [twl] using legacy suspend method
[ 0.368835] i2c-core: driver [twl] using legacy resume method
[ 0.369628] SCSI subsystem initialized
[ 0.371063] usbcore: registered new interface driver usbfs
[ 0.371154] usbcore: registered new interface driver hub
[ 0.371307] usbcore: registered new device driver usb
[ 0.385498] omap_i2c omap_i2c.1: bus 1 rev2.4.0 at 400 kHz
[ 0.386169] Skipping twl internal clock init and using bootloader value (unknown osc rate)
[ 0.386688] twl6030: PIH (irq 39) chaining IRQs 368..387
[ 0.387329] print_constraints: VUSB: 3300 mV normal standby
[ 0.585327] twl6030_usb twl6030_usb: Initialized TWL6030 USB module
[ 0.586303] print_constraints: VMMC: 1200 <--> 3000 mV at 3000 mV normal standby
[ 0.586822] print_constraints: VPP: 1800 <--> 2500 mV at 1900 mV normal standby
[ 0.587310] print_constraints: VUSIM: 1200 <--> 2900 mV at 1800 mV normal standby
[ 0.587890] print_constraints: VCXIO: 1800 mV normal standby
[ 0.588256] print_constraints: VDAC: 1800 mV normal standby
[ 0.588714] print_constraints: VAUX1_6030: 1000 <--> 3000 mV at 2800 mV normal standby
[ 0.588775] twl_reg twl_reg.37: Failed to set supply vmmc
[ 0.588897] twl_reg twl_reg.37: can't register VAUX1_6030, -16
[ 0.588897] twl_reg: probe of twl_reg.37 failed with error -16
[ 0.589324] print_constraints: VAUX2_6030: 1200 <--> 2800 mV at 1800 mV normal standby
[ 0.589813] print_constraints: VAUX3_6030: 1000 <--> 3000 mV at 1200 mV normal standby
[ 0.590179] print_constraints: CLK32KG:
[ 0.590515] print_constraints: VANA: 2100 mV normal standby
[ 0.598968] omap_i2c omap_i2c.2: bus 2 rev2.4.0 at 400 kHz
[ 0.614196] omap_i2c omap_i2c.3: bus 3 rev2.4.0 at 100 kHz
[ 0.629455] omap_i2c omap_i2c.4: bus 4 rev2.4.0 at 400 kHz
[ 0.630157] iommu_enable: NULL arch_iommu
[ 0.630187] omap-iommu omap-iommu.0: can't get omap iommu: -19
[ 0.630187] omap-iommu omap-iommu.0: can't attach iommu device: -19
[ 0.630279] omap-iommu omap-iommu.1: tesla registered
[ 0.630462] Advanced Linux Sound Architecture Driver Version 1.0.24.
[ 0.631042] NetLabel: Initializing
[ 0.631072] NetLabel: domain hash size = 128
[ 0.631072] NetLabel: protocols = UNLABELED CIPSOv4
[ 0.631134] NetLabel: unlabeled traffic allowed by default
[ 0.631561] Switching to clocksource 32k_counter
[ 0.651397] FS-Cache: Loaded
[ 0.651702] AppArmor: AppArmor Filesystem Enabled
[ 0.666168] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
[ 0.666839] musb-hdrc musb-hdrc: USB OTG mode controller at fc0ab000 using DMA, IRQ 124
[ 0.667114] NET: Registered protocol family 2
[ 0.667541] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.668884] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.671081] TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
[ 0.672302] TCP: Hash tables configured (established 131072 bind 65536)
[ 0.672332] TCP reno registered
[ 0.672363] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 0.672393] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 0.672851] NET: Registered protocol family 1
[ 1.367126] ipu-power ipu0: Test of writing to the device message log,done from ipu_pm_init
[ 1.367156] ipu-power initialized ipu, major: 253, minor: 0
[ 1.367736] iovmm-omap initialized ducati, major: 252, base-minor: 0
[ 1.367950] iovmm-omap initialized tesla, major: 252, base-minor: 1
[ 1.368927] omap-remoteproc omap-remoteproc.0: omap_rproc_probe: adding rproc tesla
[ 1.369171] omap-remoteproc omap-remoteproc.0: omap-rproc initialized tesla, major: 251, base-minor: 0
[ 1.369201] omap-remoteproc omap-remoteproc.1: omap_rproc_probe: adding rproc ducati-proc0
[ 1.369384] omap-remoteproc omap-remoteproc.1: omap-rproc initialized ducati-proc0, major: 251, base-minor: 1
[ 1.369445] omap-remoteproc omap-remoteproc.2: omap_rproc_probe: adding rproc ducati-proc1
[ 1.369659] omap-remoteproc omap-remoteproc.2: omap-rproc initialized ducati-proc1, major: 251, base-minor: 2
[ 1.370361] audit: initializing netlink socket (disabled)
[ 1.370422] type=2000 audit(1.343:1): initialized
[ 1.489807] highmem bounce pool size: 64 pages
[ 1.499053] VFS: Disk quotas dquot_6.5.2
[ 1.499542] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 1.503173] fuse init (API version 7.17)
[ 1.503753] msgmni has been set to 1489
[ 1.505493] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
[ 1.505645] io scheduler noop registered
[ 1.505645] io scheduler deadline registered
[ 1.505706] io scheduler cfq registered (default)
[ 1.506439] OMAP DSS rev 4.0
[ 1.529846] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 104) is a OMAP UART0
[ 1.647308] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 105) is a OMAP UART1
[ 1.772308] omap_uart.2: ttyO2 at MMIO 0x48020000 (irq = 106) is a OMAP UART2
[ 2.961517] console [ttyO2] enabled
[ 3.053558] omap_uart.3: ttyO3 at MMIO 0x4806e000 (irq = 102) is a OMAP UART3
[ 3.178985] [drm] Initialized drm 1.1.0 20060810
[ 3.184600] brd: module loaded
[ 3.192962] loop: module loaded
[ 3.196441] (stk) :sysfs entries created
[ 3.200622] (stk) : debugfs entries created
[ 3.205871] Non-trimmed BGAP, Temp not accurate
[ 3.210876] thermal_sensor_dev_register:Need to init the cpu domain
[ 3.223937] Fixed MDIO Bus: probed
[ 3.227600] tun: Universal TUN/TAP device driver, 1.6
[ 3.232971] tun: (C) 1999-2004 Max Krasnyansky
[ 3.239990] PPP generic driver version 2.4.2
[ 3.244873] usbcore: registered new interface driver smsc95xx
[ 3.251312] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 3.258422] _regulator_get: ehci-omap.0 supply hsusb0 not found, using dummy regulator
[ 3.266967] ehci-omap ehci-omap.0: OMAP-EHCI Host Controller
[ 3.273315] ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1
[ 3.281341] ehci-omap ehci-omap.0: irq 109, io mem 0x4a064c00
[ 3.295684] ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00
[ 3.301971] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 3.309204] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.316864] usb usb1: Product: OMAP-EHCI Host Controller
[ 3.322509] usb usb1: Manufacturer: Linux 3.2.0-1412-omap4 ehci_hcd
[ 3.329162] usb usb1: SerialNumber: ehci-omap.0
[ 3.334686] hub 1-0:1.0: USB hub found
[ 3.338684] hub 1-0:1.0: 3 ports detected
[ 3.373870] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 3.380584] ohci-omap3 ohci-omap3.0: OMAP3 OHCI Host Controller
[ 3.387176] ohci-omap3 ohci-omap3.0: new USB bus registered, assigned bus number 2
[ 3.395355] ohci-omap3 ohci-omap3.0: irq 108, io mem 0x4a064800
[ 3.479644] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[ 3.486877] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.494537] usb usb2: Product: OMAP3 OHCI Host Controller
[ 3.500274] usb usb2: Manufacturer: Linux 3.2.0-1412-omap4 ohci_hcd
[ 3.506927] usb usb2: SerialNumber: ohci-omap3.0
[ 3.512512] hub 2-0:1.0: USB hub found
[ 3.516510] hub 2-0:1.0: 3 ports detected
[ 3.521423] Initializing USB Mass Storage driver...
[ 3.526763] usbcore: registered new interface driver usb-storage
[ 3.533142] USB Mass Storage support registered.
[ 3.538452] mousedev: PS/2 mouse device common for all mice
[ 3.544799] i2c-core: driver [tm12xx_ts] using legacy suspend method
[ 3.551605] i2c-core: driver [tm12xx_ts] using legacy resume method
[ 3.559020] twl_rtc twl_rtc: Power up reset detected.
[ 3.565521] twl_rtc twl_rtc: Enabling TWL-RTC.
[ 3.572052] twl_rtc twl_rtc: rtc core: registered twl_rtc as rtc0
[ 3.578826] Linux media interface: v0.10
[ 3.583038] Linux video capture interface: v2.00
[ 3.591796] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[ 3.598846] device-mapper: uevent: version 1.0.3
[ 3.604217] device-mapper: ioctl: 4.22.0-ioctl (2011-10-19) initialised: [email protected]
[ 3.615417] _regulator_get: omap_hsmmc.0 supply vmmc_aux not found, using dummy regulator
[ 3.627319] _regulator_get: omap_hsmmc.4 supply vmmc_aux not found, using dummy regulator
[ 3.670715] usb 1-1: new high-speed USB device number 2 using ehci-omap
[ 3.713043] thermal_governor_dev_register:Adding omap_ondie_governor governor
[ 3.720642] thermal_init_thermal_state:Not all components registered for cpu domain sensor (null), gov=ee565080, cooling= (null)
[ 3.734252] proc4430_drv_initializeModule
[ 3.739105] omap-devicehandler omap-devicehandler.0: omap_devh_probe: adding devh Tesla
[ 3.747833] omap-devh initialized Tesla, major: 242, base-minor: 0
[ 3.754608] omap-devicehandler omap-devicehandler.1: omap_devh_probe: adding devh SysM3
[ 3.763305] omap-devh initialized SysM3, major: 242, base-minor: 1
[ 3.770111] omap-devicehandler omap-devicehandler.2: omap_devh_probe: adding devh AppM3
[ 3.778839] omap-devh initialized AppM3, major: 242, base-minor: 2
[ 3.788055] SDP4430 SoC init
[ 3.823547] asoc: null-codec-dai <-> MultiMedia1 mapping ok
[ 3.830383] asoc: null-codec-dai <-> MultiMedia2 mapping ok
[ 3.837799] asoc: null-codec-dai <-> Voice mapping ok
[ 3.843658] usb 1-1: New USB device found, idVendor=0424, idProduct=9514
[ 3.851531] asoc: null-codec-dai <-> Tones mapping ok
[ 3.856933] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 3.865570] asoc: null-codec-dai <-> Vibra mapping ok
[ 3.871887] hub 1-1:1.0: USB hub found
[ 3.876159] asoc: null-codec-dai <-> MODEM mapping ok
[ 3.881652] hub 1-1:1.0: 5 ports detected
[ 3.886596] asoc: null-codec-dai <-> MultiMedia1 LP mapping ok
[ 3.892822] mmc0: host does not support reading read-only switch. assuming write-enable.
[ 3.903442] mmc0: new high speed SDHC card at address b368
[ 3.909790] asoc: FM Digital <-> omap-mcbsp-dai.1 mapping ok
[ 3.915863] mmcblk0: mmc0:b368 3.73 GiB
[ 3.922119] asoc: twl6040-legacy <-> mcpdm-dl mapping ok
[ 3.927825] mmcblk0: p1 p2
[ 3.944793] asoc: dmic-hifi <-> omap-dmic-dai-0 mapping ok
[ 3.951690] asoc: twl6040-dl1 <-> mcpdm-dl1 mapping ok
[ 3.967803] asoc: twl6040-ul <-> mcpdm-ul1 mapping ok
[ 3.983428] asoc: twl6040-dl2 <-> mcpdm-dl2 mapping ok
[ 3.999145] asoc: twl6040-vib <-> mcpdm-vib mapping ok
[ 4.005218] asoc: Bluetooth <-> omap-mcbsp-dai.0 mapping ok
[ 4.011718] asoc: Bluetooth <-> omap-mcbsp-dai.0 mapping ok
[ 4.018127] asoc: FM Digital <-> omap-mcbsp-dai.1 mapping ok
[ 4.024719] asoc: MODEM <-> omap-mcbsp-dai.1 mapping ok
[ 4.030761] asoc: dmic-hifi <-> omap-dmic-abe-dai-0 mapping ok
[ 4.037353] asoc: dmic-hifi <-> omap-dmic-abe-dai-1 mapping ok
[ 4.043975] asoc: dmic-hifi <-> omap-dmic-abe-dai-2 mapping ok
[ 4.054199] input: PandaES Headset Jack as /devices/platform/soc-audio.0/sound/card0/input0
[ 4.066925] Error: Driver 'hdmi-audio-dai' is already registered, aborting...
[ 4.074523] OMAP4 HDMI audio SoC init
[ 4.079711] asoc: omap4-hdmi-audio-codec <-> hdmi-audio-dai mapping ok
[ 4.087524] ALSA device list:
[ 4.090728] #0: TI OMAP4 Board
[ 4.094177] #1: TI OMAP4 HDMI Board
[ 4.094177] mmc1: card claims to support voltages below the defined range. These will be ignored.
[ 4.107543] u32 classifier
[ 4.110626] Actions configured
[ 4.115875] TCP cubic registered
[ 4.120208] NET: Registered protocol family 10
[ 4.128356] NET: Registered protocol family 17
[ 4.133453] lib80211: common routines for IEEE802.11 drivers
[ 4.139526] Registering the dns_resolver key type
[ 4.144592] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[ 4.152801] ThumbEE CPU extension supported.
[ 4.157379] Registering SWP/SWPB emulation handler
[ 4.166717] thermal_cooling_dev_register:Found cpu cpu
[ 4.172241] thermal_cooling_dev_register: doing deferred tdev
[ 4.178375] thermal_sensor_dev_register:Found cpu cpu
[ 4.183776] thermal_sensor_dev_register:Adding omap_ondie_sensor sensor
[ 4.190856] thermal_init_thermal_state: Getting initial temp for cpu domain
[ 4.198394] thermal_request_temp
[ 4.201904] usb 1-1.1: new high-speed USB device number 3 using ehci-omap
[ 4.209167] omap_safe_zone:hot spot temp 43629
[ 4.214080] cpufreq_apply_cooling: Unthrottle cool level 0 curr cool 125000
[ 4.221588] omap_thermal_step_freq_up: temperature reduced, stepping up to 0
[ 4.229370] thermal_request_temp got 38200
[ 4.234802] omap_sr_disable: omap_sr struct for sr_mpu not found
[ 4.241394] omap_sr_disable: omap_sr struct for sr_mpu not found
[ 4.247772] mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
[ 4.253814] Power Management for TI OMAP4.
[ 4.258422] sr_init: No PMIC hook to init smartreflex
[ 4.264007] smartreflex smartreflex.0: omap_sr_probe: SmartReflex driver initialized
[ 4.273651] smartreflex smartreflex.1: omap_sr_probe: SmartReflex driver initialized
[ 4.281890] smartreflex smartreflex.2: omap_sr_probe: SmartReflex driver initialized
[ 4.290405] mmc1: new SDIO card at address 0001
[ 4.296630] SmartReflex Class3 initialized
[ 4.310607] registered taskstats version 1
[ 4.318420] regulator_init_complete: VANA: incomplete constraints, leaving on
[ 4.326416] regulator_init_complete: CLK32KG: incomplete constraints, leaving on
[ 4.342407] regulator_init_complete: VDAC: incomplete constraints, leaving on
[ 4.350677] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[ 4.358001] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 4.366485] regulator_init_complete: VUSB: incomplete constraints, leaving on
[ 4.375274] twl_rtc twl_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
[ 4.384185] smsc95xx v1.0.4
[ 4.399322] omapdrm omapdrm.0: dvi has no driver.. skipping it
[ 4.495239] smsc95xx 1-1.1:1.0: eth0: register 'smsc95xx' at usb-ehci-omap.0-1.1, smsc95xx USB 2.0 Ethernet, 2e:60:aa:65:4e:01
[ 4.604522] Console: switching to colour frame buffer device 240x67
[ 4.647399] fb0: omapdrm frame buffer device
[ 4.647399] drm: registered panic notifier
[ 4.656280] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[ 4.663360] [drm] No driver support for vblank timestamp query.
[ 4.663360] [drm] Initialized omapdrm 1.0.0 20110403 on minor 0
[ 4.677856] EXT3-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (240)
[ 5.099609] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 5.099609] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 5.115661] devtmpfs: mounted
[ 5.115661] Freeing init memory: 400K
modprobe: FATAL: Could not load /lib/modules/3.2.0-1412-omap4/modules.dep: No such file or directory
modprobe: FATAL: Could not load /lib/modules/3.2.0-1412-omap4/modules.dep: No such file or directory
雖然 Cononical 官方網頁上沒放 Ubuntu Core 13.04 的 link, 但 download site 上確實是有 prebuilt image 可 download 的, 先抓下來吧
$ wget http://ports.ubuntu.com/ubuntu-ports/dists/raring/main/installer-armhf/current/images/omap4/netboot/MLO
$ wget http://ports.ubuntu.com/ubuntu-ports/dists/raring/main/installer-armhf/current/images/omap4/netboot/u-boot.bin
$ wget http://ports.ubuntu.com/ubuntu-ports/dists/raring/main/installer-armhf/current/images/omap4/netboot/uImage
$ wget http://ports.ubuntu.com/ubuntu-ports/dists/raring/main/installer-armhf/current/images/omap4/netboot/uInitrd
再來是 rootfs
$ wget http://cdimage.ubuntu.com/ubuntu-core/releases/13.04/release/ubuntu-core-13.04-core-armhf.tar.gz
接下來準備 sd card. 如果不清楚怎麼切分, 可用這個 script
$ wget http://git.openembedded.org/openembedded/tree/contrib/angstrom/omap3-mkcard.sh
$ chmod +x omap3-mkcard.sh
假設你的 sd card 是 /dev/sdb (細節可參考), 那就執行
$ sudo ./omap3-mkcard.sh /dev/sdb
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.569997 s, 1.8 MB/s
Disk /dev/sdb doesn't contain a valid partition table
DISK SIZE - 4026531840 bytes
CYLINDERS - 489
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 489 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sdb1 * 0+ 8 9- 72261 c W95 FAT32 (LBA)
/dev/sdb2 9 488 480 3855600 83 Linux
/dev/sdb3 0 - 0 0 0 Empty
/dev/sdb4 0 - 0 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
../12.04.2/omap3-mkcard.sh: line 37: kpartx: command not found
umount: /dev/sdb1: not mounted
mkfs.vfat 3.0.14 (23 Jan 2023)
umount: /dev/sdb2: not mounted
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=Angstrom
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
241440 inodes, 963900 blocks
48195 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=989855744
30 block groups
32768 blocks per group, 32768 fragments per group
8048 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
omap3-mkcard.sh 會將 sd card 切成兩個 partition
$ sudo blkid
/dev/sdb1: LABEL="boot" UUID="5D4E-BD61" TYPE="vfat"
/dev/sdb2: LABEL="Angstrom" UUID="efc5ca01-44b3-4225-8a75-1c3d383e78bd" SEC_TYPE="ext2" TYPE="ext3"
Document 上說如果 format 好的 file system 要用在不同的 distro 上, 你可能要將 /dev/sdb2 的 lable 改一下 (以我們的例子改不改都沒差, 只是順帶提一下)
$ sudo tune2fs -L rootfs /dev/sdb2
接下來準備 sd card 上的內容
$ mkdir boot
$ sudo mount /dev/sdb1 /boot
$ sudo cp MLO u-boot.bin uImage uInitrd boot
還少一個 boot.scr, 這個是供 u-boot 看的 script, 編輯 boot.script, 貼上以下內容 (參考)
fatload mmc 0:1 0x80000000 uImage
fatload mmc 0:1 0x81600000 uInitrd
setenv bootargs rw vram=32M fixrtc [email protected] root=/dev/mmcblk0p2 console=ttyO2,115200n8 rootwait
bootm 0x80000000 0x81600000
以 mkimage (請安裝 u-boot-tools) 產生 boot.scr (不知怎麼用可以 man 一下, 很直觀的)
$ mkimage -A arm -T script -C none -n "boot.scr" -d boot.script boot.scr
$ sudo cp boot.scr boot
$ sudo umount boot
接下來準備 rootfs
$ mkdir rootfs
$ sudo mount /dev/sdb2 rootfs
$ sudo tar -zxvpf ubuntu-core-13.04-core-armhf.tar.gz -C rootfs
記得, 執行 tar 時一定要用 root 身份, 這樣解出來的檔案才會有正確的權限. 現在來為 panda es 啟動 serial console, 編輯 rootfs/etc/init/serial-auto-detect-console.conf, 內容如下
serial-auto-detect-console - starts getty on serial console
This service starts a getty on the serial port given in the 'console' kernel argument.
start on runlevel [23]
stop on runlevel [!23]
respawn
exec /bin/sh /bin/serial-console
然後是 rootfs/bin/serial-console
for arg in $(cat /proc/cmdline)
do
case $arg in
console=*)
tty=${arg#console=}
tty=${tty#/dev/}
case $tty in
tty[a-zA-Z]* )
PORT=${tty%%,*}
check for service which do something on this port
if [ -f /etc/init/$PORT.conf ];then continue;fi
tmp=${tty##$PORT,}
SPEED=${tmp%%n*}
BITS=${tmp##${SPEED}n}
8bit serial is default
[ -z $BITS ] && BITS=8
[ 8 -eq $BITS ] && GETTY_ARGS="$GETTY_ARGS -8 "
[ -z $SPEED ] && SPEED='115200,57600,38400,19200,9600'
GETTY_ARGS="$GETTY_ARGS $SPEED $PORT"
exec /sbin/getty $GETTY_ARGS
esac
esac
done
記得改成 executable
$ sudo chmod +x rootfs/bin/serial-console
$ sudo umount rootfs
$ sync