- 论坛徽章:
- 0
|
VFS: Mounted root (cramfs filesystem,read only).
Freeing init memory: 68K
然后跟进去,
static int init(void * unused)
{
................
if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
................
}
--->
asmlinkage long sys_open(const char __user * filename, int flags, int mode)
{
................
if (fd >= 0) {
struct file *f = filp_open(tmp, flags, mode);
................
}
--->
struct file *filp_open(const char * filename, int flags, int mode)
{
................
if (!error)
return dentry_open(nd.dentry, nd.mnt, flags);
................
}
--->
struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags)
{
................
if (f->f_op && f->f_op->open) {
error = f->f_op->open(inode,f);
if (error)
goto cleanup_all;
}
................
}
最后就停在了error = f->f_op->open(inode,f);
不知为何是这样的?
系统配置是:KS8695X(CPU)+SST39VF6401B(Flash),但是同样的内核文件,如果把flash替换为AM29LV640就没有这个问题了,后来我发现,如果用的是 AM29LV640,内核(主要体现在MTD层上)用的是CFI接口来访问的,如果用SST39VF6401B,内核是用jedec接口模拟cfi访问的,难道这两者有什么区别吗? |
|