1 Linux kernel配置
1.1 dts
修改dts以支持ramdisk bootargs和ramdisk分区:
在memory项后通过chosen方式添加bootargs,添加内容如下:
/ {
model = "TI AM335x CORS";
compatible = "ti,am335x-evm", "ti,am33xx";
memory {
device_type = "memory";
reg = <0x80000000 0x8000000>; /* 128 MB */
};
chosen {
bootargs = "console=ttyO0,115200n8 root=/dev/ram0";
};
};
在[email protected],0 {内增加一个ramdisk分区(我使用8M大小):
[email protected] {
label = "NAND.kernel";
reg = <0x00200000 0x00400000>;
};
[email protected] {
label = "NAND.file-system";
reg = <0x00600000 0x02800000>;
};
[email protected] {
label = "NAND.ramdisk";
reg = <0x02E00000 0x00800000>;
};
[email protected] {
label = "NAND.types";
reg = <0x03600000 0x04200000>;
};
};
最后重新编译dts:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x-cors.dtb
1.2 Kernel
使用的dtb方式启动内核,故采取dtb的chosen方式传递bootargs给内核,需要修改内核config配置:
make ARCH=arm menuconfig
Boot options --->
按N键取消配置项
[ ] Use appended device tree blob to zImage (EXPERIMENTAL)
其次
a):General setup-->选择
Initial RAM filesystem and RAM disk......
项
b):Device Drivers-->Block devices-->选择
RAM block device support 项
并检查Optimize for size是否被选中,如果没有则选中,此项优化内核大小,根据需要进行配置。
修改Default RAM disk size kbytes选项为(8192)
ramdisk是一种内存虚拟磁盘技术,实质上并不是一种文件系统,它使用的文件系统时ext2文件系统。所以要在make menuconfig ARCH=arm的时候进入File
systems菜单,选上<*> Second extended fs support。以提供内核对ext2文件系统的支持。
最后重新编译内核:
./build.sh
最后copy:
cp arch/arm/boot/dts/am335x-cors.dtb ../../tftpboot/
cp arch/arm/boot/zImage ../../tftpboot/
2 Busybox编译
2.1 配置busybox
进入busybox目录执行#make menuconfig
进入Busybox Settings -> build Options ->不选中"Build busybox as a static binary“,即静态链接:
[ ] Build BusyBox as a static binary (no shared libs) │ │
│ │[ ] Build BusyBox as a position independent executable │ │
│ │[ ] Force NOMMU build │ │
│ │[*] Build shared libbusybox │ │
│ │[*] Produce a binary for each applet, linked against libbusybox │ │
│ │[*] Produce additional busybox binary linked against libbusybox │ │
│ │[*] Build with Large File Support (for accessing files > 2 GB) │ │
│ │(arm-linux-gnueabihf-) Cross Compiler prefix
Installation Options -> 选中"Don‘t use /usr",以免busybox不慎被安装到宿主机系统的相应目录下,破坏宿主机系统。Busybox
Installation Prefix (/xxx/rootfs),修改该选项表明编译后的busybox将安装到该位置,缺省在busybox目录下的_install下。
编辑Makefile:
CC = $(CROSS_COMPILE)gcc -march=armv7
2.2 编译安装busybox
Make menuconfig之后在:
Build Options --->
(arm-linux-gnueabihf-) Cross Compiler prefix
配置交叉编译工具
然后编译,安装:
make ARCH=arm
make install
2.3 制作ramdisk文件系统
编写如下脚本进行文件系统的生成:
#!/bin/sh
echo "Start make ramdisk rootfs !"
BUSYBOX_PATH=/home/fanyl/work/wnlbs/work/targetfs/busybox-1.24.2
ROOTFS_PATH=/home/fanyl/work/wnlbs/work/targetfs/mkOSrtfs/busybox
cur_dir=$(cd "$(dirname "$0")"; pwd)
echo $cur_dir
mkdir mkOSrtfs
cd mkOSrtfs
if [ ! -d "$ROOTFS_PATH" ]
then
mkdir busybox
cd busybox
mkdir dev etc lib proc tmp usr var
chmod 777 tmp
mkdir usr/lib
mkdir var/lib var/lock var/log var/run var/tmp
chmod 777 var/tmp
cp -dpR $BUSYBOX_PATH/_install/* .
cd dev
sudo mknod console c 5 1
sudo mknod null c 1 3
sudo mknod tty c 5 0
sudo mknod tty0 c 4 0
sudo mknod tty1 c 4 1
sudo mknod tty2 c 4 2
sudo mknod tty3 c 4 3
sudo mknod tty4 c 4 4
sudo mknod tty5 c 4 5
sudo mknod tty6 c 4 6
cd ../
cp -R $BUSYBOX_PATH/examples/bootfloppy/etc/* etc/
OBJ_LIB_PATH=/home/fanyl/work/wnlbs/work/arm_bsp/cross-tools/linux-devkit/sysroots/cortexa8t2hf-vfp-neon-oe-linux-gnueabi/
cd ${OBJ_LIB_PATH}/lib
echo $OBJ_LIB_PATH
#如果你对ramdisk的大小没有太多的限制的话,可以采用下面的方法将so库全部拷过来,如果要求很高使用:arm_v5t_le-readelf
-d busybox | grep NEEDED
# 0x00000001 (NEEDED) Shared library: [libm.so.6]
# 0x00000001 (NEEDED) Shared library: [libc.so.6]
#获取指定的so库
#for file in ` ls $1 `
# do
# cp *.so.* $ROOTFS_PATH/lib
# #cp -d *.so.* $ROOTFS_PATH/lib
# done
#cp -d ld*.so* $ROOTFS_PATH/lib
fi
cd $ROOTFS_PATH
cd ../
mkdir rootfs
#sudo dd if=/dev/zero of=ramdisk bs=1k count=4096
#sudo dd if=/dev/zero of=ramdisk.img bs=1k count=8192
#/sbin/mke2fs -F -v -m0 ramdisk.img
#sudo mount -o loop ramdisk.img rootfs
cp -av busybox/* rootfs
#sudo umount rootfs
genext2fs -b 8192 -d busybox/ ramdisk
gzip -9 ramdisk
mkimage -A arm -O linux -T ramdisk -C none -a 0x88080000 -n "ramdisk" -d ramdisk.gz ramdisk.img
echo "End make ramdisk rootfs!"
查看最终需要的so:
cd lib/
[email protected]:~/work/wnlbs/work/targetfs/rootfs-so/lib$
[email protected]:~/work/wnlbs/work/targetfs/rootfs-so/lib$
[email protected]:~/work/wnlbs/work/targetfs/rootfs-so/lib$ ls
ld-2.15.so libgudev-1.0.so.0 libpam_misc.so.0.82.0
ld-linux-armhf.so.3 libgudev-1.0.so.0.1.1 libpam.so
ld-linux.so.3 libm-2.15.so libpam.so.0
libacl.so libm-2.19.so libpam.so.0.83.1
libacl.so.1 libmount.so.1 libpthread-2.15.so
libacl.so.1.1.0 libmount.so.1.1.0 libpthread-2.19.so
libanl-2.15.so libm.so.6 libpthread.so.0
libanl.so.1 libncurses.so.5 libresolv-2.15.so
libattr.so libncurses.so.5.9 libresolv.so.2
libattr.so.1 libncursesw.so.5 librt-2.15.so
libattr.so.1.1.0 libncursesw.so.5.9 librt-2.19.so
libblkid.so.1 libnsl-2.15.so librt.so.1
libblkid.so.1.1.0 libnsl.so.1 libSegFault.so
libBrokenLocale-2.15.so libnss_compat-2.15.so libsupc++.a
libBrokenLocale.so.1 libnss_compat.so.2 libsysfs.so
libbusybox.so.1.24.2 libnss_dns-2.15.so libsysfs.so.2
libc-2.15.so libnss_dns.so.2 libsysfs.so.2.0.1
libc-2.19.so libnss_files-2.15.so libthread_db-1.0.so
libcap.so libnss_files.so.2 libthread_db.so.1
libcap.so.2 libnss_hesiod-2.15.so libtinfo.so.5
libcap.so.2.22 libnss_hesiod.so.2 libtinfo.so.5.9
libcidn-2.15.so libnss_mdns4_minimal.so.2 libudev.so.0
libcidn.so.1 libnss_mdns4.so.2 libudev.so.0.13.1
libcrack.so libnss_mdns6_minimal.so.2 libusb-0.1.so.4
libcrack.so.2 libnss_mdns6.so.2 libusb-0.1.so.4.4.4
libcrack.so.2.9.0 libnss_mdns_minimal.so.2 libusb-1.0.so
libcrypt-2.15.so libnss_mdns.so.2 libusb-1.0.so.0
libcrypt-2.19.so libnss_nis-2.15.so libusb-1.0.so.0.1.0
libcrypto.so libnss_nisplus-2.15.so libusb.so
libcrypto.so.1.0.0 libnss_nisplus.so.2 libutil-2.15.so
libcrypt.so.1 libnss_nis.so.2 libutil.so.1
libc.so.6 libpamc.so libuuid.so.1
libdl-2.15.so libpamc.so.0 libuuid.so.1.3.0
libdl.so.2 libpamc.so.0.82.1 libz.so.1
libgcc_s.so libpam_misc.so libz.so.1.2.8
libgcc_s.so.1 libpam_misc.so.0
3 u-boot验证
在u-boot下输入:
其中${rdaddr}为ramdisk制作时指定的内存地址,要和u-boot配置一致
tftp ${rdaddr} ramdisk.img
nand read ${fdtaddr} NAND.u-boot-spl-os; nand read ${loadaddr} NAND.kernel; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
其中kernel,dtb已经烧写到nandflash之中,才有nandflash启动:
然后看到启动信息:
U-wnlbs# tftp ${rdaddr} ramdisk.img
link up on port 0, speed 100, full duplex
Using cpsw device
TFTP from server 192.168.255.130; our IP address is 192.168.255.110
Filename ‘ramdisk.img‘.
Load address: 0x88080000
Loading: #################################################################
#################################################################
########################################################
182.6 KiB/s
done
Bytes transferred = 950459 (e80bb hex)
U-wnlbs# nand read ${fdtaddr} NAND.u-boot-spl-os; nand read ${loadaddr} NAND.kernel; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
NAND read: device 0 offset 0x80000, size 0x40000
262144 bytes read: OK
NAND read: device 0 offset 0x200000, size 0x400000
4194304 bytes read: OK
Kernel image @ 0x82000000 [ 0x000000 - 0x332308 ]
## Loading init Ramdisk from Legacy Image at 88080000 ...
Image Name: ramdisk
Created: 2016-04-29 2:25:21 UTC
Image Type: ARM Linux RAMDisk Image (uncompressed)
Data Size: 950395 Bytes = 928.1 KiB
Load Address: 88080000
Entry Point: 88080000
Verifying Checksum ... OK
## Flattened Device Tree blob at 88000000
Booting using the fdt blob at 0x88000000
Loading Ramdisk to 8e636000, end 8e71e07b ... OK
Loading Device Tree to 8e62b000, end 8e6359c3 ... OK
test by flex.fan 20160426 Starting kernel ...
[ 0.000000] test by flex.fan Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 3.14.26-g07d13c6-dirty (svn:Unversioned directory) ([email protected]) (gcc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) ) #4 Fri Apr 29 10:11:14 CST 2016
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine model: TI AM335x CORS
[ 0.000000] cma: CMA: reserved 24 MiB at 8c800000
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] CPU: All CPU(s) started in SVC mode.
[ 0.000000] AM335X ES2.1 (neon )
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 64512
[ 0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/ram0
[ 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: 225440K/260096K available (4515K kernel code, 254K rwdata, 1512K rodata, 225K init, 177K bss, 34656K 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] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
[ 0.000000] .text : 0xc0008000 - 0xc05eafe4 (6028 kB)
[ 0.000000] .init : 0xc05eb000 - 0xc0623504 ( 226 kB)
[ 0.000000] .data : 0xc0624000 - 0xc0663880 ( 255 kB)
[ 0.000000] .bss : 0xc0663880 - 0xc068ffa0 ( 178 kB)
[ 0.000000] NR_IRQS:16 nr_irqs:16 16
[ 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: timer2 at 24000000 Hz
[ 0.000014] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns
[ 0.000033] OMAP clocksource: timer1 at 24000000 Hz
[ 0.000315] Console: colour dummy device 80x30
[ 0.000347] Calibrating delay loop... 795.44 BogoMIPS (lpj=3977216)
[ 0.089478] pid_max: default: 32768 minimum: 301
[ 0.089572] Security Framework initialized
[ 0.089626] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.089637] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.096029] CPU: Testing write buffer coherency: ok
[ 0.096419] Setting up static identity map for 0x8046ec60 - 0x8046ecb8
[ 0.097380] devtmpfs: initialized
[ 0.099033] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[ 0.105766] omap_hwmod: tptc0 using broken dt data from edma
[ 0.105847] omap_hwmod: tptc1 using broken dt data from edma
[ 0.105918] omap_hwmod: tptc2 using broken dt data from edma
[ 0.110038] omap_hwmod: debugss: _wait_target_disable failed
[ 0.166255] pinctrl core: initialized pinctrl subsystem
[ 0.167278] regulator-dummy: no parameters
[ 0.169729] NET: Registered protocol family 16
[ 0.171665] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.173578] cpuidle: using governor ladder
[ 0.173592] cpuidle: using governor menu
[ 0.181436] platform 49000000.edma: alias fck already exists
[ 0.181465] platform 49000000.edma: alias fck already exists
[ 0.181480] platform 49000000.edma: alias fck already exists
[ 0.182669] OMAP GPIO hardware version 0.1
[ 0.193024] omap-gpmc 50000000.gpmc: could not find pctldev for node /[email protected]/nandflash_pins_default, deferring probe
[ 0.193056] platform 50000000.gpmc: Driver omap-gpmc requests probe deferral
[ 0.194852] No ATAGs?
[ 0.194870] hw-breakpoint: debug architecture 0x4 unsupported.
[ 0.212713] bio: create slab <bio-0> at 0
[ 0.227082] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
[ 0.228956] SCSI subsystem initialized
[ 0.229990] usbcore: registered new interface driver usbfs
[ 0.230182] usbcore: registered new interface driver hub
[ 0.230401] usbcore: registered new device driver usb
[ 0.231490] pps_core: LinuxPPS API ver. 1 registered
[ 0.231502] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
[ 0.231634] PTP clock support registered
[ 0.233532] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
[ 0.235311] cfg80211: Calling CRDA to update world regulatory domain
[ 0.236102] Switched to clocksource timer1
[ 0.254729] NET: Registered protocol family 2
[ 0.255575] TCP established hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.255609] TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.255638] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.255725] TCP: reno registered
[ 0.255738] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.255758] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.255951] NET: Registered protocol family 1
[ 0.256427] RPC: Registered named UNIX socket transport module.
[ 0.256442] RPC: Registered udp transport module.
[ 0.256448] RPC: Registered tcp transport module.
[ 0.256454] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.256734] Trying to unpack rootfs image as initramfs...
[ 0.257508] rootfs image is not initramfs (no cpio magic); looks like an initrd
[ 0.262416] Freeing initrd memory: 928K (ce636000 - ce71e000)
[ 0.262664] hw perfevents: enabled with ARMv7 Cortex-A8 PMU driver, 5 counters available
[ 0.265788] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.400750] VFS: Disk quotas dquot_6.5.2
[ 0.400817] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.401283] NFS: Registering the id_resolver key type
[ 0.401367] Key type id_resolver registered
[ 0.401376] Key type id_legacy registered
[ 0.401431] msgmni has been set to 490
[ 0.402889] NET: Registered protocol family 38
[ 0.402931] io scheduler noop registered
[ 0.402939] io scheduler deadline registered
[ 0.402963] io scheduler cfq registered (default)
[ 0.404583] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[ 0.406063] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 0.409117] omap_uart 44e09000.serial: no wakeirq for uart0
[ 0.409281] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88, base_baud = 3000000) is a OMAP UART0
[ 1.032302] console [ttyO0] enabled
[ 1.036656] omap_uart 48022000.serial: no wakeirq for uart0
[ 1.042607] 48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 89, base_baud = 3000000) is a OMAP UART1
[ 1.052941] omap_uart 48024000.serial: no wakeirq for uart0
[ 1.058973] 48024000.serial: ttyO2 at MMIO 0x48024000 (irq = 90, base_baud = 3000000) is a OMAP UART2
[ 1.069185] omap_uart 481a6000.serial: no wakeirq for uart0
[ 1.075118] 481a6000.serial: ttyO3 at MMIO 0x481a6000 (irq = 60, base_baud = 3000000) is a OMAP UART3
[ 1.086177] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
[ 1.103817] brd: module loaded
[ 1.112710] loop: module loaded
[ 1.116435] (hci_tty): inside hci_tty_init
[ 1.121156] (hci_tty): allocated 249, 0
[ 1.126445] mtdoops: mtd device (mtddev=name/number) must be supplied
[ 1.134531] usbcore: registered new interface driver zd1201
[ 1.140923] ehci_hcd: USB 2.0 ‘Enhanced‘ Host Controller (EHCI) Driver
[ 1.147785] ehci-pci: EHCI PCI platform driver
[ 1.152642] ehci-omap: OMAP-EHCI Host Controller driver
[ 1.158550] usbcore: registered new interface driver cdc_wdm
[ 1.164685] usbcore: registered new interface driver usb-storage
[ 1.171529] i2c-core: driver [rtc-ds1307] using legacy suspend method
[ 1.178294] i2c-core: driver [rtc-ds1307] using legacy resume method
[ 1.185727] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
[ 1.194913] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[ 1.203175] pinctrl-single 44e10800.pinmux: pin 44e10960.0 already requested by 481a6000.serial; cannot claim for 48060000.mmc
[ 1.215139] pinctrl-single 44e10800.pinmux: pin-88 (48060000.mmc) status -22
[ 1.222532] pinctrl-single 44e10800.pinmux: could not request pin 88 (44e10960.0) from group pinmux_mmc1_pins on device pinctrl-single
[ 1.235282] omap_hsmmc 48060000.mmc: Error applying setting, reverse things back
[ 1.243535] 48060000.mmc supply vmmc not found, using dummy regulator
[ 1.250485] pinctrl-single 44e10800.pinmux: pin 44e10960.0 already requested by 481a6000.serial; cannot claim for 48060000.mmc
[ 1.262435] pinctrl-single 44e10800.pinmux: pin-88 (48060000.mmc) status -22
[ 1.269826] pinctrl-single 44e10800.pinmux: could not request pin 88 (44e10960.0) from group pinmux_mmc1_pins on device pinctrl-single
[ 1.282574] omap_hsmmc 48060000.mmc: Error applying setting, reverse things back
[ 1.290333] omap_hsmmc 48060000.mmc: pins are not configured from the driver
[ 1.298044] omap_hsmmc 48060000.mmc: could not set regulator OCR (-22)
[ 1.336887] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
[ 1.347326] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
[ 1.354546] platform 44d00000.wkup_m3: Driver wkup_m3 requests probe deferral
[ 1.362905] oprofile: using arm/armv7
[ 1.367188] TCP: cubic registered
[ 1.370695] Initializing XFRM netlink socket
[ 1.375186] NET: Registered protocol family 17
[ 1.379958] NET: Registered protocol family 15
[ 1.384631] omap_hsmmc 48060000.mmc: exceeding card‘s volts
[ 1.390599] Key type dns_resolver registered
[ 1.399306] PM: bootloader does not support rtc-only!
[ 1.404606] ThumbEE CPU extension supported.
[ 1.409221] Registering SWP/SWPB emulation handler
[ 1.415784] regulator-dummy: disabling
[ 1.420188] omap-gpmc 50000000.gpmc: GPMC revision 6.0
[ 1.425572] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
[ 1.433191] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xa1
[ 1.439893] nand: Micron MT29F1G08ABBDAH4
[ 1.444086] nand: 128MiB, SLC, page size: 2048, OOB size: 64
[ 1.450021] nand: using OMAP_ECC_BCH8_CODE_HW ECC scheme
[ 1.455781] 12 ofpart partitions found on MTD device omap2-nand.0
[ 1.462188] Creating 12 MTD partitions on "omap2-nand.0":
[ 1.467864] 0x000000000000-0x000000020000 : "NAND.SPL"
[ 1.475067] 0x000000020000-0x000000040000 : "NAND.SPL.backup1"
[ 1.482805] 0x000000040000-0x000000060000 : "NAND.SPL.backup2"
[ 1.490600] 0x000000060000-0x000000080000 : "NAND.SPL.backup3"
[ 1.498291] 0x000000080000-0x0000000c0000 : "NAND.u-boot-spl-os"
[ 1.506221] 0x0000000c0000-0x0000001c0000 : "NAND.u-boot"
[ 1.514141] 0x0000001c0000-0x0000001e0000 : "NAND.u-boot-env"
[ 1.521725] 0x0000001e0000-0x000000200000 : "NAND.u-boot-env.backup1"
[ 1.530057] 0x000000200000-0x000000600000 : "NAND.kernel"
[ 1.540459] 0x000000600000-0x000002e00000 : "NAND.file-system"
[ 1.580805] 0x000002e00000-0x000003600000 : "NAND.ramdisk"
[ 1.594582] 0x000003600000-0x000007800000 : "NAND.types"
[ 1.656214] remoteproc0: wkup_m3 is available
[ 1.660874] remoteproc0: Note: remoteproc is still under development and considered experimental.
[ 1.670272] remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn‘t yet guaranteed.
[ 1.681350] remoteproc0: Direct firmware load failed with error -2
[ 1.687944] remoteproc0: Falling back to user helper
[ 1.756125] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[ 1.762517] davinci_mdio 4a101000.mdio: detected phy mask fffffffc
[ 1.770269] libphy: 4a101000.mdio: probed
[ 1.774476] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver unknown
[ 1.782885] davinci_mdio 4a101000.mdio: phy[1]: device 4a101000.mdio:01, driver unknown
[ 1.791965] cpsw 4a100000.ethernet: Detected MACID = d0:ff:50:06:b6:99
[ 1.800317] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
[ 1.813188] RAMDISK: gzip image found at block 0
[ 1.920158] mmc0: BKOPS_EN bit is not set
[ 1.937958] mmc0: Voltage range not supported for power class.
[ 1.944084] mmc0: power class selection to bus width 8 failed
[ 1.967596] mmc0: Voltage range not supported for power class.
[ 1.973723] mmc0: power class selection to bus width 4 failed
[ 1.998098] mmc0: new high speed MMC card at address 0001
[ 2.016835] mmcblk0: mmc0:0001 MMC32G 29.5 GiB
[ 2.021747] mmcblk0boot0: mmc0:0001 MMC32G partition 1 8.00 MiB
[ 2.036540] mmcblk0boot1: mmc0:0001 MMC32G partition 2 8.00 MiB
[ 2.047382] EXT4-fs (ram0): couldn‘t mount as ext3 due to feature incompatibilities
[ 2.055559] mmcblk0: p1
[ 2.060086] EXT4-fs (ram0): mounted filesystem without journal. Opts: (null)
[ 2.068749] VFS: Mounted root (ext4 filesystem) readonly on device 1:0.
[ 2.076231] devtmpfs: mounted
[ 2.079456] mmcblk0boot1: unknown partition table
[ 2.085094] Freeing unused kernel memory: 224K (c05eb000 - c0623000)
[ 2.093789] mmcblk0boot0: unknown partition table
Processing /etc/profile... Done
/ #
说明制作成功。