@Gentlepig
tf卡/emmc的内部固件已经做了写平衡算法,所以软件就当他们是硬盘一样操作了,直接把那些分区信息写到介质的最前面了。视同硬盘。
有一点点理解了,感谢。
]]>视同硬盘。
]]>@Gentlepig
emmc/tf卡默认是块设备 /dev/mmcblk*,
nand 最终也模拟成了块设备 /dev/mtdblock*
无论emmc还是nand,uboot部分都是放在了一个没有格式化的分区里。那么,emmc的kernel分区和rootfs分区为何不能按照偏移地址去读取?
]]>由于NAND FLASH和EMMC的 核心板,Uboot在获取设备数文件的时候不一样(EMMC是按照分区的方式访问,NAND FLASH是按照偏移地址读取数据),
https://www.cnblogs.com/topeet/p/13201977.html
结合看到的其他资料,貌似nand不需要进入linux系统后再给nand分区。而emmc和sd卡才需要先进入Linux后给emmc或sd分区,然后再向其拷贝内核、设备树、 根文件系统。
那么,为什么nand是按偏移地址读取数据,而emmc不能?
]]>可以一次性烧录整个emmc的镜像文件吗?
uuu提供了fastboot功能,是通过fastboot向emmc下载的,但是貌似没有分区功能。
---------------------------------------------------
关于编译器还有个问题,我自己独立编译的程序,需要和kernel还是rootfs的编译器版本保持一致?
-----------------------------------------------
看制作根文件的教程,为何用buildroot一般会指定交叉编译器,而debian或ubuntu却没指定?
]]>我原来想舍弃mfgtools这个工具,直接想在PC ubuntu环境下使用uuu命令给imx6ul烧录。现在看来是没法完全舍弃mfgtools。
win下mfgtools是先将uboot,kernel,特殊的rootfs下载到内存上并从内存启动,进入系统后执行分区脚本mksdcard.sh,然后再将需要烧录的uboot,kernel和rootfs烧录到纯出设备里,比如emmc。
我现在在ubuntu下编译得到的uboot、kernel,没法烧录到没有分区的emmc里。可以试用fastboot下载到内存上,但是没有分区,启动不了...
]]>参考:
用buildroot自带的genimage把tina dragon的活干完,让dragon无活可干。
https://bbs.aw-ol.com/topic/1022
bootargs或者dts 里面配置好的,
全志的bsp linux自己实现了一个分区解析。
分区只能在linux或win下用命令来实现吧?但是下载zImage,先要有分区吧?没分区的话,只能下载uboot吧,uboot又没分区功能。
比如imx6ul或nuc97x,貌似都是官方下载工具先下载个系统到设备里。是先下载uboot到设备,然后uboot加载内核及文件系统到内存,然后从内存启动,启动后再进行分区命令将存储设备分区,然后再将内核及文件系统复制到分区好的存储设备里。
那全志又是如何实现的呢?
]]>哇酷小二 说:bootargs或者dts 里面配置好的,
全志的bsp linux自己实现了一个分区解析。
像bootargs或dts里配置好分区的,那么每次linux启动时,都会再次分区一次nand或emmc吗?
当然会,只是不会破坏原来的数据而已。
]]>bootargs或者dts 里面配置好的,
全志的bsp linux自己实现了一个分区解析。
像bootargs或dts里配置好分区的,那么每次linux启动时,都会再次分区一次nand或emmc吗?
]]>#!/bin/sh
# partition size in MB
BOOT_ROM_SIZE=10
# call sfdisk to create partition table
# destroy the partition table
node=$1
dd if=/dev/zero of=${node} bs=1024 count=1
sfdisk --force -uM ${node} << EOF
${BOOT_ROM_SIZE},500,0c
600,,83
EOF
分区是从10M开始,10M-500M是fat分区,600M以后是linux分区。
好奇500M和600M之间是浪费了?