zoukankan      html  css  js  c++  java
  • linux移植问题汇总(一)

    linux移植问题汇总(一)

    在此记录移植linux过程中出现的问题以及解决方法。

    项目GitHub地址

    linux3.0.80:https://github.com/numbqq/linux-3.0.80_for_tiny210
    linux3.3.5:https://github.com/numbqq/linux-3.3.5_for_tiny210
    uboot2014.04:https://github.com/numbqq/uboot201404_for_tiny210

    1、移植linux kernel碰到的问题
    ①、kernel配置好后启动时发现卡在“Starting kernel ...”,最后发现是linux的bug,由于u-boot2014.04串口配置默认开启FIFO,linux内核在早期串口打印时也用到了FIFO,但是却有两个变量fifo_mask、fifo_max没被赋值,
    导致死在了一个while循环里面(arch/arm/plat-samsung/include/plat/uncompress.h -> static void putc(int ch))。
    解决方法:
    一: 修改linux内核,给未初始化的变量赋值:arch/arm/mach-s5pv210/include/mach/uncompress.h arch_detect_cpu()
    static void arch_detect_cpu(void)
    {
    /* we do not need to do any cpu detection here at the moment. */
    fifo_mask = S5PV210_UFSTAT_TXMASK; //add by Nick
    fifo_max = 255 << S5PV210_UFSTAT_TXSHIFT; //add by Nick.
    }
    二: 修改uboot,关闭串口FIFO。

    最终我采用关闭uboot串口FIFO的方法。参考博文:http://www.arm9home.net/read.php?tid=86329


    ②、linux3.3.5增加tiny210板级文件支持是碰到的问题,很奇怪我仅仅是重命名了一下函数的名字,就出现编译错误,能确定命名是没有错误的。错误如下:
    CALL scripts/checksyscalls.sh
    CHK include/generated/compile.h
    CC [M] drivers/scsi/scsi_wait_scan.o
    KSYM .tmp_kallsyms1.S
    AS .tmp_kallsyms1.o
    LD .tmp_vmlinux2
    KSYM .tmp_kallsyms2.S
    AS .tmp_kallsyms2.o
    LD vmlinux
    SYSMAP System.map
    SYSMAP .tmp_System.map
    Inconsistent kallsyms data
    This is a bug - please report about it
    Try make KALLSYMS_EXTRA_PASS=1 as a workaround
    make: *** [vmlinux] Error 1

    用下面提示的做法make KALLSYMS_EXTRA_PASS=1编译可以通过,生成的镜像文件也可以正常运行,但不知道为什么会报这个错误,仅仅只是重命名了函数名,很奇怪,貌似是bug,为了避免我更换了一个版本linux3.0.80,
    用这个版本没有任何问题,以后也先用这个版本移植。

    2、移植根文件系统碰到的问题
    ①、制作根文件系统参考http://blog.csdn.net/xie0812/article/details/11366137,通过nfs挂载文件系统,没什么大问题。

    ②、由于linux3.0.80不支持yaffs2,所以要自己下载打补丁,yaffs2下载地址git clone git://www.aleph1.co.uk/yaffs2,下载完后打补丁编译发现有很多错误,
    最终参考博文http://blog.csdn.net/flfihpv259/article/details/52102050 解决。

    ③、配置内核支持yaffs2,同时还要使uboot支持yaffs文件系统烧写命令,开始由于不知道烧写yaffs文件系统要用nand.yaffs命令,导致一直报错。配置内核时要关闭nand flash HWECC,使用yaffs自己的ECC校验。



  • 相关阅读:
    SoC嵌入式软件架构设计II:否MMU的CPU虚拟内存管理的设计与实现方法
    Fckeditor用法
    BZOJ 2120 色彩数 暴力
    精灵菜单
    Java JDK 8 安装和环境变量的配置(Linux and Windows)
    专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路
    [Unity3D]Unity3D游戏开发Android内嵌视图Unity查看
    hdu 4472 dp
    hdu1848 Fibonacci again and again(SG游戏功能)
    孙陪你,了解它的力量——unity3d流程暂停
  • 原文地址:https://www.cnblogs.com/numbqq/p/6031594.html
Copyright © 2011-2022 走看看