请问这个nand 分区信息对应nand flash地址是?
答案:4 悬赏:50 手机版
解决时间 2021-02-21 17:35
- 提问者网友:椧運幽默
- 2021-02-21 00:23
如下:static struct mtd_partition nand_partitions[] = { { .name = "bootloader", .offset = 0, .size = SZ_256K, .mask_flags = MTD_WRITEABLE, }, { .name = "params", .offset = MTDPART_OFS_APPEND, .size = SZ_128K, .mask_flags = MTD_WRITEABLE, }, { .name = "kernel", .offset = MTDPART_OFS_APPEND, .size = SZ_4M, .mask_flags = 0 }, { .name = "filesystem", .offset = MTDPART_OFS_APPEND, .size = MTDPART_SIZ_FULL, .mask_flags = 0 }}; 按道理是uboot:0-40000,参数占用20000,即40000-60000kernel:占用400000,即60000 - 460000文件系统:剩下的。不知道对不?现在想通过uboot烧写kernel和文件系统,搞不清其实地址,例如:nand erase 140000 20000nand write 80800000 140000 20000大侠请教!
最佳答案
- 五星知识达人网友:拾荒鲤
- 2021-02-21 00:56
谢谢关注。我搜索了一下,有如下解析: 这里将Flash分成3个分区,分别存放引导装载程序(Bootloader)、内核和根文件系统。mask_flags:MTD_WRITEABIE表示分区是只读的;MTDPART_OFS_APPEND表示分区位置紧挨着上一个分区;MTDPART_SIZ_FULL表示占用剩余的全部空间。文中将JFFS2文件系统的映像存放在第3个分区上,作为系统的根文件系统。我按照:MTDPART_OFS_APPEND表示分区位置紧挨着上一个分区 这句话去烧写flash,发现不对nand erase 6000 200000重启后uboot会说crc和环境变量错误,原因应该是把它们所在地址给擦除了。之后我看到它输出默认的环境变量值,nboot 80700000 0 a0000。原来kernel起始地址是a0000,这是怎么得来的?还是自己指定,并不一定要按照分区信息吗?
全部回答
- 1楼网友:底特律间谍
- 2021-02-21 03:52
少了个 0 ,应该是60000,呵呵,谢谢dglwx。
- 2楼网友:忘川信使
- 2021-02-21 03:07
{ .name = "kernel", .offset = mtdpart_ofs_append, //kernel分区的起始地址 .size = sz_4m, //kernel分区的大小 .mask_flags = 0 } nand erase mtdpart_ofs_append值 sz_4m值假设你使用tftp将uimage下载到了内存的80800000这个地址,tftp会显示传输了多少个byte( 假设为7ccee3 hex):nand write 80800000 mtdpart_ofs_append值 0x7ccee3
- 3楼网友:胯下狙击手
- 2021-02-21 02:01
其实在系统启动的过程中会在超级终端或其他的串口终端上显示分区的信息。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯