20171025_jeffrey - silenceuncrio/diary GitHub Wiki
review
่ๆฒๆฒ็ๆนๅฏซไบไธ้ป ucl2.xml
<UCL>
<CFG>
<STATE name="BootStrap" dev="MX6UL" vid="15A2" pid="007D"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
<LIST name="SDCard" desc="Choose SD Card as media">
<CMD state="BootStrap" type="boot"
body="BootStrap" file ="firmware/u-boot-imx6ul%6uluboot%_sd.imx">Loading U-boot</CMD>
<CMD state="BootStrap" type="load"
file="firmware/zImage" address="0x80800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE">Loading Kernel.</CMD>
<CMD state="BootStrap" type="load" file="firmware/%initramfs%" address="0x83800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE">Loading Initramfs.</CMD>
<CMD state="BootStrap" type="load" file="firmware/zImage-imx6ul-%6uldtb%%ldo%.dtb" address="0x83000000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE">Loading device tree.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
<!-- create partition -->
<CMD state="Updater" type="push"
body="send" file="mksdcard.sh.tar">Sending partition shell</CMD>
<CMD state="Updater" type="push"
body="$ tar xf $FILE "> Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ sh mksdcard.sh /dev/mmcblk%mmc%"> Partitioning...</CMD>
<!-- Dual Image Layout
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 20480 102399 81920 40M c W95 FAT32 (LBA)
/dev/mmcblk1p2 102400 184319 81920 40M c W95 FAT32 (LBA)
/dev/mmcblk1p3 184320 7520255 7335936 3.5G 5 Extended
/dev/mmcblk1p5 204800 1023999 819200 400M 83 Linux
/dev/mmcblk1p6 1024000 1843199 819200 400M 83 Linux
/dev/mmcblk1p7 1843201 1925119 81919 40M 83 Linux
/dev/mmcblk1p8 1925121 2007039 81919 40M 83 Linux
/dev/mmcblk1p9 2097152 7520255 5423104 2.6G 83 Linux
/dev/mmcblk1p1 - 40M - kenel_a & dtb_a
/dev/mmcblk1p2 - 40M - kenel_b & dtb_b
/dev/mmcblk1p5 - 400M - rootfs_a
/dev/mmcblk1p6 - 400M - rootfs_b
/dev/mmcblk1p7 - 40M - config_a
/dev/mmcblk1p8 - 40M - config_b
/dev/mmcblk1p9 - others - user_data
-->
<!-- burn uboot -->
<CMD state="Updater" type="push"
body="$ dd if=/dev/zero of=/dev/mmcblk%mmc% bs=1k seek=384 conv=fsync count=129">clear u-boot arg</CMD>
<CMD state="Updater" type="push" body="$ echo 0 > /sys/block/mmcblk%mmc%boot0/force_ro">access boot partition 1</CMD>
<CMD state="Updater" type="push"
body="send" file="files/u-boot-imx6ul%6uluboot%_sd.imx">Sending u-boot.bin</CMD>
<CMD state="Updater" type="push"
body="$ dd if=$FILE of=/dev/mmcblk1boot0 bs=512 seek=2">write U-Boot to sd card</CMD>
<CMD state="Updater" type="push"
body="$ echo 1 > /sys/block/mmcblk%mmc%boot0/force_ro"> re-enable read-only access </CMD>
<CMD state="Updater" type="push"
body="$ mmc bootpart enable 1 1 /dev/mmcblk%mmc%">enable boot partion 1 to boot</CMD>
<CMD state="Updater" type="push"
body="$ while [ ! -e /dev/mmcblk%mmc%p1 ]; do sleep 1; echo \"waiting...\"; done ">Waiting for the partition ready - kernel_a and dtb_a</CMD>
<CMD state="Updater" type="push"
body="$ while [ ! -e /dev/mmcblk%mmc%p2 ]; do sleep 1; echo \"waiting...\"; done ">Waiting for the partition ready - kernel_b and dtb_b</CMD>
<CMD state="Updater"
type="push" body="$ mkfs.vfat /dev/mmcblk%mmc%p1">Formatting partition - kernel_a and dtb_a</CMD>
<CMD state="Updater"
type="push" body="$ mkfs.vfat /dev/mmcblk%mmc%p2">Formatting partition - kernel_a and dtb_a</CMD>
<CMD state="Updater"
type="push" body="$ mkdir -p /mnt/mmcblk%mmc%p1"/>
<CMD state="Updater"
type="push" body="$ mkdir -p /mnt/mmcblk%mmc%p2"/>
<CMD state="Updater"
type="push" body="$ mount -t vfat /dev/mmcblk%mmc%p1 /mnt/mmcblk%mmc%p1"/>
<CMD state="Updater"
type="push" body="$ mount -t vfat /dev/mmcblk%mmc%p2 /mnt/mmcblk%mmc%p2"/>
<!-- burn dual zImage -->
<CMD state="Updater" type="push"
body="send" file="files/zImage">Sending kernel</CMD>
<CMD state="Updater" type="push"
body="$ cp $FILE /mnt/mmcblk%mmc%p1/zImage">write kernel image to partition - kernel_a and dtb_a</CMD>
<CMD state="Updater" type="push"
body="$ cp $FILE /mnt/mmcblk%mmc%p2/zImage">write kernel image to partition - kernel_b and dtb_b</CMD>
<!-- burn dual dtb -->
<CMD state="Updater" type="push"
body="send" file="files/imx6ul-%6uldtb%%ldo%.dtb">Sending Device Tree file</CMD>
<CMD state="Updater" type="push"
body="$ cp $FILE /mnt/mmcblk%mmc%p1/imx6ul-%6uldtb%.dtb">write device tree to partition - kernel_a and dtb_a</CMD>
<CMD state="Updater" type="push"
body="$ cp $FILE /mnt/mmcblk%mmc%p2/imx6ul-%6uldtb%.dtb">write device tree to partition - kernel_b and dtb_b</CMD>
<CMD state="Updater" type="push" body="$ umount /mnt/mmcblk%mmc%p1">Unmounting vfat partition - kernel_a and dtb_a</CMD>
<CMD state="Updater" type="push" body="$ umount /mnt/mmcblk%mmc%p2">Unmounting vfat partition - kernel_b and dtb_b</CMD>
<!-- burn dual rootfs -->
<CMD state="Updater" type="push"
body="$ mkfs.ext3 -j /dev/mmcblk%mmc%p5">Formatting partition - rootfs_a</CMD>
<CMD state="Updater" type="push"
body="$ mkfs.ext3 -j /dev/mmcblk%mmc%p6">Formatting partition - rootfs_b</CMD>
<CMD state="Updater" type="push"
body="$ mkdir -p /mnt/mmcblk%mmc%p5"/>
<CMD state="Updater" type="push"
body="$ mkdir -p /mnt/mmcblk%mmc%p6"/>
<CMD state="Updater" type="push"
body="$ mount -t ext3 /dev/mmcblk%mmc%p5 /mnt/mmcblk%mmc%p5"/>
<CMD state="Updater" type="push"
body="$ mount -t ext3 /dev/mmcblk%mmc%p6 /mnt/mmcblk%mmc%p6"/>
<CMD state="Updater" type="push"
body="pipe tar -jxv -C /mnt/mmcblk%mmc%p5" file="files/rootfs_nogpu.tar.bz2">Sending and writting rootfs to partition - rootfs_a</CMD>
<CMD state="Updater" type="push"
body="frf">Finishing rootfs write to partition - rootfs_a</CMD>
<CMD state="Updater" type="push"
body="pipe tar -jxv -C /mnt/mmcblk%mmc%p6" file="files/rootfs_nogpu.tar.bz2">Sending and writting rootfs to partition - rootfs_b</CMD>
<CMD state="Updater" type="push"
body="frf">Finishing rootfs write to partition - rootfs_b</CMD>
<CMD state="Updater" type="push"
body="$ umount /mnt/mmcblk%mmc%p5">Unmounting rootfs partition - rootfs_a</CMD>
<CMD state="Updater" type="push"
body="$ umount /mnt/mmcblk%mmc%p6">Unmounting rootfs partition - rootfs_b</CMD>
<!-- prepare dual configurations -->
<CMD state="Updater" type="push"
body="$ mkfs.ext3 -j /dev/mmcblk%mmc%p7">Formatting partition - config_a</CMD>
<CMD state="Updater" type="push"
body="$ mkfs.ext3 -j /dev/mmcblk%mmc%p8">Formatting partition - config_b</CMD>
<!-- prepare user data -->
<CMD state="Updater" type="push"
body="$ mkfs.ext3 -j /dev/mmcblk%mmc%p9">Formatting partition - user_data</CMD>
<CMD state="Updater" type="push" body="$ echo Update Complete!">Done</CMD>
</LIST>
</UCL>
็กๅฅ uboot ๅช่ชๅพ 4 ๅ
=> mmc part
Partition Map for MMC device 1 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 20480 81920 d217c27e-01 0c
2 102400 81920 d217c27e-02 0c
3 184320 7335936 d217c27e-03 05 Extd
5 204800 819200 d217c27e-05 83
bad MBR sector signature 0x2d70
ไฟฎๆน mmcroot
่ฉฆ่ๅพ part 5 ้ๆฉ
=> printenv mmcroot
mmcroot=/dev/mmcblk1p2 rootwait rw
=> setenv mmcroot /dev/mmcblk1p5 rootwait rw
=> printenv mmcroot
mmcroot=/dev/mmcblk1p5 rootwait rw
้็ถ้ ๅฉ้ฒๅ ฅไบ rootfs (ๆ่ฉฒๆฏ rootfs_a)
ไธ้ linux ไนๅช่ชๅพ 4 ๅ
root@m300e:~# ls /dev/mmc* -al
brw-rw---- 1 root disk 179, 0 Sep 29 01:36 /dev/mmcblk1
brw-rw---- 1 root disk 179, 8 Sep 29 01:36 /dev/mmcblk1boot0
brw-rw---- 1 root disk 179, 16 Sep 29 01:36 /dev/mmcblk1boot1
brw-rw---- 1 root disk 179, 1 Sep 29 01:36 /dev/mmcblk1p1
brw-rw---- 1 root disk 179, 2 Sep 29 01:36 /dev/mmcblk1p2
brw-rw---- 1 root disk 179, 3 Sep 29 01:36 /dev/mmcblk1p3
brw-rw---- 1 root disk 179, 5 Sep 29 01:36 /dev/mmcblk1p5
brw-rw---- 1 root disk 179, 24 Sep 29 01:36 /dev/mmcblk1rpmb
root@m300e:~#
ๅๅๅ ariel ่ไบไธไธ็ฎๅ้ๅฐ็ๅฐ้ฃ
ๆๆๅฐไธๅๆณๆณ
ๆ้บผไพๅฉ็จ้ๅๅ partitions
- partition 1
- ่ตทๅงไฝ็ฝฎไฝไบ่จฑ shift ๅฏไฟ็็ตฆ uboot ็จ
- zImage_a
- zImage_b
- dtb_a
- dtb_b
- partition 2
- rootfs_a
- partition 3
- rootfs_b
- partition 4
- config_a
- config_b
- log
- user_data
ไธ้้ไบๆณๆณ้ฝ้่ฆๅฏฆไฝไพ้ฉ่ญๅ ถๅฏ่กๆง
้ๆฐๅๅพ mksdcard.sh
ๅบ็ผ
#!/bin/sh
# partition size in MB
BOOT_ROM_SIZE=10
# wait for the SD/MMC device node ready
while [ ! -e $1 ]
do
sleep 1
echo โwait for $1 appearโ
done
# call sfdisk to create partition table
# destroy the partition table
node=$1
dd if=/dev/zero of=${node} bs=1024 count=1
sfdisk --force ${node} << EOF
${BOOT_ROM_SIZE}M,100M,C
100M,400M,L
500M,400M,L
900M,,L
EOF
้ๆจฃๅๅบไพ็ partition ๅฆไธ
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 20480 184319 163840 80M c W95 FAT32 (LBA)
/dev/mmcblk1p2 204800 1023999 819200 400M 83 Linux
/dev/mmcblk1p3 1024000 1843199 819200 400M 83 Linux
/dev/mmcblk1p4 1843200 7520255 5677056 2.7G 83 Linux
ไฟฎๆน ucl2.xml
ไพ่ฉฆ่ฉฆ
<UCL>
<CFG>
<STATE name="BootStrap" dev="MX6UL" vid="15A2" pid="007D"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
<LIST name="SDCard" desc="Choose SD Card as media">
<CMD state="BootStrap" type="boot"
body="BootStrap" file ="firmware/u-boot-imx6ul%6uluboot%_sd.imx">Loading U-boot</CMD>
<CMD state="BootStrap" type="load"
file="firmware/zImage" address="0x80800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE">Loading Kernel.</CMD>
<CMD state="BootStrap" type="load" file="firmware/%initramfs%" address="0x83800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE">Loading Initramfs.</CMD>
<CMD state="BootStrap" type="load" file="firmware/zImage-imx6ul-%6uldtb%%ldo%.dtb" address="0x83000000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE">Loading device tree.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
<!-- create partition -->
<CMD state="Updater" type="push"
body="send" file="mksdcard.sh.tar">Sending partition shell</CMD>
<CMD state="Updater" type="push"
body="$ tar xf $FILE "> Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ sh mksdcard.sh /dev/mmcblk%mmc%"> Partitioning...</CMD>
<!-- Dual Image Layout
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 20480 184319 163840 80M c W95 FAT32 (LBA)
/dev/mmcblk1p2 204800 1023999 819200 400M 83 Linux
/dev/mmcblk1p3 1024000 1843199 819200 400M 83 Linux
/dev/mmcblk1p4 1843200 7520255 5677056 2.7G 83 Linux
/dev/mmcblk1p1 - 80M
- zImage_a
- dtb_a
- zImage_b
- dtb_b
/dev/mmcblk1p2 - 400M
- rootfs_a
/dev/mmcblk1p3 - 400M
- rootfs_b
/dev/mmcblk1p4 - 2.7G
- config_a
- config_b
- log
- user_data
-->
<!-- burn uboot -->
<CMD state="Updater" type="push"
body="$ dd if=/dev/zero of=/dev/mmcblk%mmc% bs=1k seek=384 conv=fsync count=129">clear u-boot arg</CMD>
<CMD state="Updater" type="push" body="$ echo 0 > /sys/block/mmcblk%mmc%boot0/force_ro">access boot partition 1</CMD>
<CMD state="Updater" type="push"
body="send" file="files/u-boot-imx6ul%6uluboot%_sd.imx">Sending u-boot.bin</CMD>
<CMD state="Updater" type="push"
body="$ dd if=$FILE of=/dev/mmcblk1boot0 bs=512 seek=2">write U-Boot to sd card</CMD>
<CMD state="Updater" type="push"
body="$ echo 1 > /sys/block/mmcblk%mmc%boot0/force_ro"> re-enable read-only access </CMD>
<CMD state="Updater" type="push"
body="$ mmc bootpart enable 1 1 /dev/mmcblk%mmc%">enable boot partion 1 to boot</CMD>
<CMD state="Updater" type="push"
body="$ while [ ! -e /dev/mmcblk%mmc%p1 ]; do sleep 1; echo \"waiting...\"; done ">Waiting for the partition 1 ready</CMD>
<CMD state="Updater"
type="push" body="$ mkfs.vfat /dev/mmcblk%mmc%p1">Formatting partition 1</CMD>
<CMD state="Updater"
type="push" body="$ mkdir -p /mnt/mmcblk%mmc%p1"/>
<CMD state="Updater"
type="push" body="$ mount -t vfat /dev/mmcblk%mmc%p1 /mnt/mmcblk%mmc%p1"/>
<!-- burn dual zImage -->
<CMD state="Updater" type="push"
body="send" file="files/zImage">Sending kernel</CMD>
<CMD state="Updater" type="push"
body="$ cp $FILE /mnt/mmcblk%mmc%p1/zImage_a">write kernel image to partition 1 - zImage_a</CMD>
<CMD state="Updater" type="push"
body="$ cp $FILE /mnt/mmcblk%mmc%p1/zImage_b">write kernel image to partition 1 - zImage_b</CMD>
<!-- burn dual dtb -->
<CMD state="Updater" type="push"
body="send" file="files/imx6ul-%6uldtb%%ldo%.dtb">Sending Device Tree file</CMD>
<CMD state="Updater" type="push"
body="$ cp $FILE /mnt/mmcblk%mmc%p1/imx6ul-%6uldtb%_a.dtb">write device tree to partition - dtb_a</CMD>
<CMD state="Updater" type="push"
body="$ cp $FILE /mnt/mmcblk%mmc%p1/imx6ul-%6uldtb%_b.dtb">write device tree to partition - dtb_b</CMD>
<CMD state="Updater" type="push" body="$ umount /mnt/mmcblk%mmc%p1">Unmounting vfat partition 1</CMD>
<!-- burn dual rootfs -->
<CMD state="Updater" type="push"
body="$ mkfs.ext3 -j /dev/mmcblk%mmc%p2">Formatting partition 2 - rootfs_a</CMD>
<CMD state="Updater" type="push"
body="$ mkfs.ext3 -j /dev/mmcblk%mmc%p3">Formatting partition 3 - rootfs_b</CMD>
<CMD state="Updater" type="push"
body="$ mkdir -p /mnt/mmcblk%mmc%p2"/>
<CMD state="Updater" type="push"
body="$ mkdir -p /mnt/mmcblk%mmc%p3"/>
<CMD state="Updater" type="push"
body="$ mount -t ext3 /dev/mmcblk%mmc%p2 /mnt/mmcblk%mmc%p2"/>
<CMD state="Updater" type="push"
body="$ mount -t ext3 /dev/mmcblk%mmc%p3 /mnt/mmcblk%mmc%p3"/>
<CMD state="Updater" type="push"
body="pipe tar -jxv -C /mnt/mmcblk%mmc%p2" file="files/rootfs_nogpu.tar.bz2">Sending and writting rootfs to partition 2</CMD>
<CMD state="Updater" type="push"
body="frf">Finishing rootfs write to partition 2</CMD>
<CMD state="Updater" type="push"
body="pipe tar -jxv -C /mnt/mmcblk%mmc%p3" file="files/rootfs_nogpu.tar.bz2">Sending and writting rootfs to partition 3</CMD>
<CMD state="Updater" type="push"
body="frf">Finishing rootfs write to partition 3</CMD>
<CMD state="Updater" type="push"
body="$ umount /mnt/mmcblk%mmc%p2">Unmounting partition 2</CMD>
<CMD state="Updater" type="push"
body="$ umount /mnt/mmcblk%mmc%p3">Unmounting partition 3</CMD>
<CMD state="Updater" type="push"
body="$ mkfs.ext3 -j /dev/mmcblk%mmc%p4">Formatting partition 4</CMD>
<CMD state="Updater" type="push"
body="$ mkdir -p /mnt/mmcblk%mmc%p4"/>
<CMD state="Updater" type="push"
body="$ mount -t ext3 /dev/mmcblk%mmc%p4 /mnt/mmcblk%mmc%p4"/>
<!-- prepare dual configurations -->
<CMD state="Updater" type="push"
body="$ mkdir -p /mnt/mmcblk%mmc%p4/config_a"/>
<CMD state="Updater" type="push"
body="$ mkdir -p /mnt/mmcblk%mmc%p4/config_b"/>
<!-- prepare user data -->
<CMD state="Updater" type="push"
body="$ mkdir -p /mnt/mmcblk%mmc%p4/user_data"/>
<CMD state="Updater" type="push"
body="$ umount /mnt/mmcblk%mmc%p4">Unmounting partition 4</CMD>
<CMD state="Updater" type="push" body="$ echo Update Complete!">Done</CMD>
</LIST>
</UCL>
้ๆฉ้ฒ uboot
็ไธไธ mmc ็ partition ่จๆฏ
=> mmc part
Partition Map for MMC device 1 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 20480 163840 0cd81875-01 0c
2 204800 819200 0cd81875-02 83
3 1024000 819200 0cd81875-03 83
4 1843200 5677056 0cd81875-04 83
ๅ ่ฉฆ่ๆ p2 ็ rootfs_a ๅธถ่ตทไพ
ๅ่ๆจๅคฉ็ๆ ๅ ฑ
emmc ่ฃก็ uboot ๅไบไธ่ฟฐ้ไบไบ
- mmc dev ${mmcdev};
- mmc dev ${mmcdev};
- mmc rescan;
- setenv bootargs console=${console},${baudrate} root=${mmcroot}
- fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
- fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
- bootz ${loadaddr} - ${fdt_addr};
็คไธไธๆฏๅ่ฎๆธ็ฎๅ็ๅผ
-
${mmcdev}
= 1 -
${console}
= ttymxc0 -
${baudrate}
= 115200 -
${mmcroot}
= /dev/mmcblk1p2 rootwait rw -
${mmcpart}
= 1 -
${loadaddr}
= 0x80800000 -
${image}
= zImage -
${fdt_addr}
= 0x83000000 -
${fdt_file}
= imx6ul-14x14-evk.dtb
ๅ ๆ็ฎๅ็็ๆณ
ๆๅฆๆ่ฆๆ dual image a ๅธถ่ตทไพ็่ฉฑ
ๆ้่ฆ็ๆๅกๅฆไธ
-
/dev/mmcblk1p1
- zImage_a
- dtb_a
-
/dev/mmcblk1p2
- rootfs_a
ๆไปฅๆ้่ฆไฟฎๆน็ uboot env ่ฎๆธๅฆไธ
-
${image}
= zImage_a -
${fdt_file}
= imx6ul-14x14-evk.dtb
่ฉฆ่ฉฆ็ๅง
=> setenv image zImage_a
=> setenv fdt_file imx6ul-14x14-evk_a.dtb
=> printenv image
image=zImage_a
=> printenv fdt_file
fdt_file=imx6ul-14x14-evk_a.dtb
่ฉฆ่้ๆฉ่ฉฆ่ฉฆ - run bootcmd
rootfs ๆ่ผๆๅ
ไธ้ไธ็ฅ้ๆ้บผๅพ็ฅ็ฎๅ rootfs ๅฐๅบๆฏๅพๅชๅ partition ้ๆฉ
df
็ไธๅบไพ
root@m300e:~# df
Filesystem 1024-blocks Used Available Use% Mounted on
/dev/root 388480 68542 299458 19% /
devtmpfs 90860 0 90860 0% /dev
tmpfs 254892 172 254720 0% /run
tmpfs 254892 32 254860 0% /var/volatile
mount
ไน็ไธๅบไพ
root@m300e:~# mount
/dev/root on / type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=90860k,nr_inodes=22715,mode=755)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /var/volatile type tmpfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620)
ๅๅ่จ่ๅ
root@m300e:/# echo rootfs_a > /.lable
root@m300e:/# cat /.lable
rootfs_a
้้ๆฉ้ฒ uboot
่ฉฆ่ๆ dual image b ๅธถ่ตทไพ
ๆ้่ฆ็ๆๅกๅฆไธ
-
/dev/mmcblk1p1
- zImage_b
- dtb_b
-
/dev/mmcblk1p3
- rootfs_b
ๆไปฅๆ้่ฆไฟฎๆน็ uboot env ่ฎๆธๅฆไธ
-
${mmcroot}
= /dev/mmcblk1p3 rootwait rw -
${image}
= zImage_b -
${fdt_file}
= imx6ul-14x14-evk_b.dtb
่ฉฆ่ฉฆ็ๅง
=> setenv mmcroot /dev/mmcblk1p3 rootwait rw
=> setenv image zImage_b
=> setenv fdt_file imx6ul-14x14-evk_b.dtb
=> printenv mmcroot
mmcroot=/dev/mmcblk1p3 rootwait rw
=> printenv image
image=zImage_b
=> printenv fdt_file
fdt_file=imx6ul-14x14-evk_b.dtb
=>
่ฉฆ่้ๆฉ่ฉฆ่ฉฆ - run bootcmd
df
root@m300e:~# df
Filesystem 1024-blocks Used Available Use% Mounted on
/dev/root 388480 68538 299462 19% /
devtmpfs 90860 0 90860 0% /dev
tmpfs 254892 172 254720 0% /run
tmpfs 254892 32 254860 0% /var/volatile
mount
root@m300e:~# mount
/dev/root on / type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=90860k,nr_inodes=22715,mode=755)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /var/volatile type tmpfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620)
็็ /.lable
root@m300e:~# cat /.lable
cat: can't open '/.lable': No such file or directory
ไนๅนซ rootfs_b
ๅๅๅ่จ่
root@m300e:/# echo rootfs_b > /.lable
root@m300e:/# cat /.lable
rootfs_b
ๅพ dual image a ้ๆฉ
-
${mmcroot}
= /dev/mmcblk1p2 rootwait rw -
${image}
= zImage_a -
${fdt_file}
= imx6ul-14x14-evk_a.dtb
setenv mmcroot /dev/mmcblk1p2 rootwait rw
setenv image zImage_a
setenv fdt_file imx6ul-14x14-evk_a.dtb
็ขบ่ช lable ็ก่ชค
root@m300e:~# cat /.lable
rootfs_a
ๅพ dual image b ้ๆฉ
-
${mmcroot}
= /dev/mmcblk1p3 rootwait rw -
${image}
= zImage_b -
${fdt_file}
= imx6ul-14x14-evk_b.dtb
setenv mmcroot /dev/mmcblk1p3 rootwait rw
setenv image zImage_b
setenv fdt_file imx6ul-14x14-evk_b.dtb
็ขบ่ช lable ็ก่ชค
root@m300e:~# cat /.lable
rootfs_b
็ฎๅๅจ linux ไฝฟ็จ fw_printenv
ๆๆๆๅ้ก
root@m300e:~# fw_printenv
Cannot open /dev/mtd1: No such file or directory
ๆด็ไธไธ้ๅปๅฐๆผ fw_printenv
็ๅชๅ
็ฎๅ่ฉฆๅบไพไฝฟ็จไปฅไธ็ /etc/fw_env.config
root@m300e:~# cat /etc/fw_env.config
# Configuration file for fw_(printenv/setenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
# Notice, that the "Number of sectors" is not required on NOR and SPI-dataflash.
# Futhermore, if the Flash sector size is ommitted, this value is assumed to
# be the same as the Environment size, which is valid for NOR and SPI-dataflash
# MTD device name Device offset Env. size Flash sector size
/dev/mmcblk1 0x00080000 0x00002000 0x00000200
ๅฏ่ฎ fw_printenv
ๅ fw_setenv
ๆญฃๅธธ้ไฝ
Device offset
็ๆ
ๅ ฑไพๆบๅฆไธ
mx6ul_14x14_evk.h
#define CONFIG_ENV_OFFSET (8 * SZ_64K)
8641024 = 524288 = 0x00080000
Env. size
ๆฏๅพ uboot ็ๅฐ็
=> printenv
baudrate=115200
...
script=boot.scr
Environment size: 2063/8188 bytes
=>
ๅพ Environment size: 2063/8188 bytes
ๆจๅพ 8*1024 = 8192 = 0x00002000
่ณๆผ Flash sector size
emmc ็ไธๅ sector ็บ 512 bytes = 0x00000200
ๆ็ตๅฐฑๅพๅฐไธๅๅฏไปฅๅทฅไฝ็ /etc/fw_env.config
ๅ
็ฎๅๆๅ make menuconfig
ไธ้ฒๅปๅฐฑ้ข่จ profile ็้ธๆ
โโโโโโโโโโโโโโโโโโโโโโโโโโ Products/Vendor โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Use the arrow keys to navigate this window or press the hotkey of โ
โ the item you wish to select followed by the <SPACE BAR>. Press โ
โ <?> for additional information about this option. โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ( ) Azuretec/0_LTR-101 โ โ
โ โ ( ) Azuretec/1_LTRG-101 โ โ
โ โ ( ) M300/0_GENERIC โ โ
โ โ (X) M300/1_GPS โ โ
โ โ ( ) M300/2_PLANET โ โ
โ โ ( ) M300/3_GPS_PLANET โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ <Select> < Help > โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๅๅๅ ariel ่ไบไธไธ
emmc ็ๆฏๆดๅฐฑๅ
base on M300/0_GENERIC
M300/1_GPS
ๅฐฑๅฅฝ
็ฎๅ็ๆณๆณๆฏๆ้ท็ๅไธ้ข้ๆจฃ
โโโโโโโโโโโโโโโโโโโโโโโโโโ Products/Vendor โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Use the arrow keys to navigate this window or press the hotkey of โ
โ the item you wish to select followed by the <SPACE BAR>. Press โ
โ <?> for additional information about this option. โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ( ) Azuretec/0_LTR-101 โ โ
โ โ ( ) Azuretec/1_LTRG-101 โ โ
โ โ ( ) M300/0_GENERIC โ โ
โ โ (X) M300/1_GPS โ โ
โ โ ( ) M300/2_PLANET โ โ
โ โ ( ) M300/3_GPS_PLANET โ โ
โ โ ( ) M300E/0_GENERIC โ โ
โ โ ( ) M300E/1_GPS โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ <Select> < Help > โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๅคไบ M300E/0_GENERIC
ๅ M300E/1_GPS
้ๅ
ฉๅ profile