天天看点

assertion failed怎么解决_嵌入式Linux论坛问题精选以及解决方法1、u-boot烧写根文件系统超出了分区大小咋办?2、fops_get与fops_put怎么理解?3、两次设置堆栈,C语言初始化SDRAM拷贝程序失败了4、不知道为什么开发板启动突然出现这个问题:5、busybox1.7.0制作yaffs2重启时,出现:6、指针和数组的问题7、想玩一下JZ2440 pwm控制舵机但是找不到引脚 8、jz2440怎样挂载SD卡?

天韦东山老师花了半天时间在交流社区答疑,这不小编马上送来热腾腾的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函数:

assertion failed怎么解决_嵌入式Linux论坛问题精选以及解决方法1、u-boot烧写根文件系统超出了分区大小咋办?2、fops_get与fops_put怎么理解?3、两次设置堆栈,C语言初始化SDRAM拷贝程序失败了4、不知道为什么开发板启动突然出现这个问题:5、busybox1.7.0制作yaffs2重启时,出现:6、指针和数组的问题7、想玩一下JZ2440 pwm控制舵机但是找不到引脚 8、jz2440怎样挂载SD卡?

main.c:

assertion failed怎么解决_嵌入式Linux论坛问题精选以及解决方法1、u-boot烧写根文件系统超出了分区大小咋办?2、fops_get与fops_put怎么理解?3、两次设置堆栈,C语言初始化SDRAM拷贝程序失败了4、不知道为什么开发板启动突然出现这个问题:5、busybox1.7.0制作yaffs2重启时,出现:6、指针和数组的问题7、想玩一下JZ2440 pwm控制舵机但是找不到引脚 8、jz2440怎样挂载SD卡?

答:

思路没问题,

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

ldr sp, =1024*4

改为:

ldr sp, =1024*4 + 0x40000000

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

assertion failed怎么解决_嵌入式Linux论坛问题精选以及解决方法1、u-boot烧写根文件系统超出了分区大小咋办?2、fops_get与fops_put怎么理解?3、两次设置堆栈,C语言初始化SDRAM拷贝程序失败了4、不知道为什么开发板启动突然出现这个问题:5、busybox1.7.0制作yaffs2重启时,出现:6、指针和数组的问题7、想玩一下JZ2440 pwm控制舵机但是找不到引脚 8、jz2440怎样挂载SD卡?

答:

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

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

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

assertion failed怎么解决_嵌入式Linux论坛问题精选以及解决方法1、u-boot烧写根文件系统超出了分区大小咋办?2、fops_get与fops_put怎么理解?3、两次设置堆栈,C语言初始化SDRAM拷贝程序失败了4、不知道为什么开发板启动突然出现这个问题:5、busybox1.7.0制作yaffs2重启时,出现:6、指针和数组的问题7、想玩一下JZ2440 pwm控制舵机但是找不到引脚 8、jz2440怎样挂载SD卡?

答:

修改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