1. 编译内核:
>cp mini210_linux_deconfig .config
>make zImage -j4
>mkimage -n 'linux-2.6.32' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage
2. 格式化mmc
//分成三个区,第一个为FAT(存放40new_uimage文件等,测试用),第二个为linux区,第三个为rootfs区
fdisk -c /dev/sdb
sudo mkfs.vfat -F 32 /dev/sdb1 //或者mkdosfs -F32 -v -n "" /dev/sdb1
sudo mkfs.ext2 /dev/sd2
sudo mkfs.ext3 /dev/sd3
成功后显示:
sudo fdisk -l /dev/sdb
[sudo] password for rlk:
Disk /dev/sdb: 7.37 GiB, 7902068736 bytes, 15433728 sectors
Disk model: Storage Device
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6791577f
Device Boot Start End Sectors Size Id Type
//注意sudo mkfs.vfat -F 32 /dev/sd1并没有成功显示为FAT16 ,这里是我插卡到windows,手动格式化为FAT后再到linux里显示的样子
/dev/sdb1 2048 1026047 1024000 500M e W95 FAT16 (LBA)
/dev/sdb2 1026048 1128447 102400 50M 83 Linux
/dev/sdb3 1128448 15433727 14305280 6.8G 83 Linux
3. 制作文件系统(最终会把roofs.img烧写到mmc的第三个分区)
1)方法一
>dd if=/dev/zero of=rootfs bs=1k count=8192
>mkfs.ext2 -F rootfs
>sudo mount -t ext2 -o loop rootfs mnt
>cp ~/news5pv210/nfs/* mnt
>sudo umount mnt
>gzip --best -c rootfs > rootfs.gz
//虽然这里是ramdisk类型,但是会烧写到mmc的第三个分区,并不是把它加载到内存的文件系统
>mkimage -n "rootfs" -A arm -O linux -T ramdisk -C gzip -d rootfs.gz rootfs.img
>dd if= rootfs.img of=/dev/sdb3 seek=1128448
2)方法二:
mount /dev/sdb3 mnt
>cp ~/news5pv210/nfs/* mnt
>sudo umount mnt
4.uboot启动
>setenv bootargs "noinitrd console=ttySAC0,115200 root=/dev/mmcblk0p3 rw init=/linuxrc rootfstype=ext3"
//这里我没有烧写Linux到/dev/sdb2,而是先从dev/sdb1里加载到内存再启动
[Friendlyjimmy-TINY210]# fatload mmc 0:1 20008000 40new_uimage
[Friendlyjimmy-TINY210]# bootm 20008000
输出如下:
## Booting kernel from Legacy Image at 20008000 ...
Image Name: linux-3.0.8
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4825000 Bytes = 4.6 MiB
Load Address: 20008000
Entry Point: 20008040
Verifying Checksum ... OK
XIP Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.0.8-FriendlyARM (rlk@rlk) (gcc version 4.5.1 (ctn g-1.8.1-FA) ) #2 PREEMPT Thu Jan 19 00:20:06 CST 2023
[ 0.000000] CPU: ARMv7 Processor [412fc082] revision 2 (ARMv7), cr=10c53c7f
[ 0.000000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: MINI210
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] CPU S5PV210/S5PC110 (id 0x43110220)
[ 0.000000] S3C24XX Clocks, Copyright 2004 Simtec Electronics
[ 0.000000] S5PV210: PLL settings, A=1000000000, M=667000000, E=80000000 V=54 000000
[ 0.000000] S5PV210: ARMCLK=1000000000, HCLKM=200000000, HCLKD=166750000
[ 0.000000] HCLKP=133400000, PCLKM=100000000, PCLKD=83375000, PCLKP=66700000
。。。
0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] DMA : 0xff000000 - 0xffe00000 ( 14 MB)
[ 0.000000] vmalloc : 0xe0800000 - 0xfd000000 ( 456 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xe0000000 ( 512 MB)
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
[ 0.000000] .init : 0xc0008000 - 0xc0174000 (1456 kB)
[ 0.000000] .text : 0xc0174000 - 0xc08d10c8 (7541 kB)
[ 0.000000] .data : 0xc08d2000 - 0xc092a300 ( 353 kB)
[ 0.000000] .bss : 0xc092a324 - 0xc096f820 ( 278 kB)
0.989021] s5pv210-uart.0: ttySAC0 at MMIO 0xe2900000 (irq = 16) is a S3C640 0/10
[ 0.996099] s5pv210-uart.1: ttySAC1 at MMIO 0xe2900400 (irq = 20) is a S3C640 0/10
[ 1.006031] s5pv210-uart.2: ttySAC2 at MMIO 0xe2900800 (irq = 24) is a S3C640 0/10
[ 1.016019] s5pv210-uart.3: ttySAC3 at MMIO 0xe2900c00 (irq = 28) is a S3C640 0/10