报价
HOME
报价
正文内容
u-boot nand 嵌入式Linux论坛问题精选以及解决方法
发布时间 : 2024-11-27
作者 : 小编
访问数量 : 23
扫码分享至微信

嵌入式Linux论坛问题精选以及解决方法

天韦东山老师花了半天时间在交流社区答疑,这不小编马上送来热腾腾的9个问题以及解决方法,答案全部出自韦老师一人之手,全是精华。可能只有区区20字,但里面包含了珍贵的经验和情怀。对了,之前发的问题对你有启发吗,或者正好解决了你问题?麻烦给我们反馈一下,还有,只有论坛版主以上级别才能更改问题状态,我们回答问题,问你是否解决,等回复,假设解决了,我们更改问题状态,这样一来一去,沟通成本太大,希望你的问题被回复后能及时通过帖子反馈结果给我们。方便我们及时更改问题状态,给遇到类似相关问题者更好的参考。

1、u-boot烧写根文件系统超出了分区大小咋办?

##### 100ask Bootloader for OpenJTAG #####

[n] Download u-boot to Nand Flash

[o] Download u-boot to Nor Flash

[k] Download Linux kernel uImage

[j] Download root_jffs2 image

[y] Download root_yaffs image

[d] Download to SDRAM & Run

[z] Download zImage into RAM

[g] Boot linux from RAM

[f] Format the Nand Flash

[s] Set the boot parameters

[b] Boot the system

[r] Reboot u-boot

[q] Quit from menu

Enter your selection: y

USB host is connected. Waiting a download.

Length of file is too big : 88564608 > 66183036

NAND erase: device 0 offset 0x260000, size 0xfda0000

答: Length of file is too big : 88564608 > 66183036

这个文件系统并没有超过分区,只是超过了内存大小。

因为我们的UBOOT是先把文件系统下载到内存,再烧写的。

对于这种情况,只有这样:

1.使用NFS启动

2.擦除root分区(当然可以在UBOOT里先擦除ROOT分区)

3.mount -t yaffs /dev/mtdblock3 /mnt

4. 把文件复制到 /mnt上:

a. 事先把根文件系统放在NFS里某个目录,比如mydir里,

b. 执行:cd mydir; cp * -rfd /mnt

注意,必须加-rfd,其中的d表示原来的链接文件继续作为链接文件,不加d的话链接文件就会作为实体文件复制了,占空间太大

2、fops_get与fops_put怎么理解?

答: 内核源码有段:

#define fops_get(fops) \

(((fops) && try_module_get((fops)->owner) ? (fops) : NULL))

#define fops_put(fops) \

do { if (fops) module_put((fops)->owner); } while(0)

一看即知,

fops_get: 如果fops存在,先增加它的使用计数,再返回。

fops_put: 如果fops存在,减小它的使用计数。

3、两次设置堆栈,C语言初始化SDRAM拷贝程序失败了

启动文件:

initSDRAM和copyToSDRAM函数:

main.c:

答:

思路没问题,

第1次设置sp弄错了,NOR启动时,片内内存从0x40000000开始,所以应该这样:

ldr sp, =1024*4

改为:

ldr sp, =1024*4 + 0x40000000

4、不知道为什么开发板启动突然出现这个问题:

答:

贴出烧写内核时的串口信息,这样才能确定问题。

肯定是烧写出了问题:要么没烧成功,要么是uImage超过2M了

5、busybox1.7.0制作yaffs2重启时,出现:

答:

修改busybox下的 .config,添加这2行:

CONFIG_ASH=y

CONFIG_ASH_BASH_COMPAT=y

6、指针和数组的问题

volatile unsigned long*p=(volatile unsigned long *)0x48000000;

不是应该是p=mem_cfg_val[i];

p++;吗

怎么MMU那课讲的是p[i]=mem_cfg_val[i];

答:p=mem_cfg_val[i]; 是错的;

volatile unsigned long*p

p = val ? 必错

应该是 *p = val; 或 p[0] = val

7、想玩一下JZ2440 pwm控制舵机但是找不到引脚

答: JZ2440没引出PWM引脚

8、jz2440怎样挂载SD卡?

512MB的SD卡,插入开发板后用fdisk -l 命令没有东西显示出来,提示如下:

# s3c2440-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz).

s3c2440-sdi s3c2440-sdi: running at 196kHz (requested: 195kHz).

s3c2440-sdi s3c2440-sdi: running at 196kHz (requested: 195kHz).

s3c2440-sdi s3c2440-sdi: running at 196kHz (requested: 195kHz).

s3c2440-sdi s3c2440-sdi: running at 196kHz (requested: 195kHz).

s3c2440-sdi s3c2440-sdi: running at 196kHz (requested: 195kHz).

s3c2440-sdi s3c2440-sdi: running at 196kHz (requested: 195kHz).

s3c2440-sdi s3c2440-sdi: running at 196kHz (requested: 195kHz).

s3c2440-sdi s3c2440-sdi: running at 25000kHz (requested: 25000kHz).

s3c2440-sdi s3c2440-sdi: running at 25000kHz (requested: 25000kHz).

mmcblk0: mmc0:59b4 NCard 7851008KiB

mmcblk0:<7>mmc0: starting CMD18 arg 00000000 flags 00000035

p1

# mount mmc0 mnt/usb/

mount: mounting mmc0 on mnt/usb/ failed: No such file or directory

答:

mount -tvfat /dev/mmcblk0p1 /mnt

UBIFS 根文件系统制作

1. UBIFS 文件系统简介

传统的flash文件系统如jffs2, yaffs2等是工作在MTD 设备上,而UBIFS则建立在UBI卷层之上,UBI卷层工作在MTD设备层之上,也可以说,UBIFS涉及三个子系统:

MTD 子系统,提供对flash芯片Raw的访问接口。MTD子系统提供了MTD device的概念,比如/dev/mtdX(字符设备)和/dev/mtdblockX(块设备);l UBI Subsystem, 它工作在MTD设备之上,提供了UBI逻辑卷,对上层屏蔽了一些直接使用MTD设备需要处理的问题,如wear-leveling(磨损平衡)和volume management(坏块管理)功能等;l UBIFS 文件系统,工作于UBI之上。它提供文件的open, read, write等操作;

系统之间的层级关系

2.根文件系统镜像文件制作

l mkfs.ubifs 参数说明

-x lzo 指定使用lzo压缩方法,默认是lzo, 还支持zlib, zlib的压缩率高,但是lzo压缩解压速度快。

-m 2048 Nand Flash的最小读写单元,一般为page size.

-r ./rootfs 指定根文件系统目录树的路径

-o rootfs.ubifs 指定制作出的根文件系统镜像文件名

-e 126976 指定LEB(Logical Erase Block, 逻辑擦除块)大小。Nandflash 读写单位为页,擦除单位为块,以ESMT F59L1G81MB 为例:一个PEB(Physical EraseBlockSize, 物理擦除块)大小就是2048*64=131072,-e 的算法是物理擦除块大小-2*页大小,这里就是131072-2*2048=126976(注:这里的擦除块大小都不包含oob, 有包含子页和不包含子页之分。 )

-c xxx 指定该分区最大逻辑擦除块数量,该值随着根文件系统分区的大小和该分区的坏块数调整。

l ubinize 参数说明

-o rootfs-ubifs.bin 指定ubinize处理后输出的image文件名,该文件可以由u-boot的nand write命令直接烧录;

-m 2048 指定minimum input/output unit 大小,为Nandflash的页大小;

-p 131072 指定物理擦除块大小:64 Pages * 2048 Byte/Page = 131072(不包含oob的大小)

-s 512/2048 指定sub-page-szie大小,如果有sub-page, 则配置为512;如果没有sub-page,则配置为2048

n 关于配置文件说明:

image=rootfs-ubifs.img 指定mkfs.ubifs 制作成的根文件系统镜像文件路径;

vol_id=0 指定根文件系统树的卷标为0,u-boot的bootargs参数需要根据它来设置;

vol_size=xxx 指定该UBI逻辑卷的大小,该值计算公式一般为 逻辑擦除块大小*逻辑擦除块个数。该值一般不用写,默认值是image大小。写了这个作用是帮助检查image是否超过了分区限制,制作时候就会提示,否则mount会出错。逻辑擦除块个数的值是经过计算的最大值(前面mkfs.ubifs -c 指定的值),不过volume flag autoresize 参数会自适应大小,不会浪费空间,后面Linux 系统内核启动过程中可以看到这个现象。

vol_type=dynamic

vol_name=xxx 指定UBI Volume的名称,u-boot的bootargs参数需要根据它来设置;

vol_flags=autoresize UBI Subsystem 在系统启动时自动调整逻辑擦除块的个数;

经过ubinize 命令处理过后的根文件系统镜像rootfs-ubifs.bin就可以直接在u-boot使用

nand write 命令烧录到相应的根文件系统分区上去了。

关于Minim Flash input/output, sub-pages, UBI Header的说明:

http://www.linux-mtd.infradead.org/doc/ubi.html#L_min_io_unit

相关问答

u-boot 是什么?

DasU-Boot是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一...

惠普笔记本出现BOOTMGR IS MISSIM-ZOL问答

这个问题是因为在windows7下将C盘设置为活动分区导致,C盘设置为活动分区后原win7下100MB的空间变为非活动分区,导致系统启动时候,无法在C盘下找到相应的引导文件...

uboot 由哪四个部分组成?

1.U-Boot由四个部分组成。2.首先是启动阶段的SPL(SecondaryProgramLoader),它是一个小型的引导程序,负责初始化硬件和加载U-Boot。其次是U-Boot的主体...

BOOT 怎么读?最好用拼音帮我拼下.写汉字也可以】作业帮

[最佳回答]BOOTboot[简明英汉词典][bu:t]n.1长统靴,高统鞋2后备箱,行李箱3踢vt.踢boot[英汉体育词典]1双层高山靴2潜水靴3球鞋4保护罩5护腿6...

BIOS中的UEFI Boot 什么意思-ZOL问答

9人讨论5408次围观关注问题写回答讨论回答(9)Z_XShan你好,现在很多主板已经不是以前的BIOS启动,已经换成UEFI启动,这个是适应新主板的启动方式。UEFI版PE...

boot 这样双o的单词发音有什么规则?

两个oo一般发长音的u:,就行book,look是一样的。两个oo一般发长音的u:,就行book,look是一样的。

uboot 启动时在nor 还是在内存?

U-Boot启动时通常从Nor闪存中加载到内存中运行,因为Nor闪存具有快速读取和执行代码的能力,能够快速启动系统。在Nor闪存中存储的U-Boot二进制代码可以被CPU通...

在元音中 |U|和|u|都对应的有oo和ou 在什么情况下发音|U|或...

哦~字母组合oo多数读长音,少数读短音可以参考下这个口诀oo发[u:]最常见,非重音中要短念。字母k前不能长,好脚站木羊毛短。血与水灾真特殊,oo读...

我的电脑出现BOOTMGR is missing并且不可以进Bios和不能U盘...

设置光驱启动,把VISTA安装盘放入光驱,按提示修复电脑即可具体步骤参见:www.mydigitallife.info/2007/08/23/bootmgr-is-missing-during-v...

几个英语单词的区别other,others,theothers,another之间的区...

[回答]1辨与析]theother,another,others,theotherstheother意为thesecondofthetwo,指两者中的另一个,系特指,常与one连用.例如:...

 365游戏  michael myers 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部