原创 终于搞定在skyeye里面运行uclinux

2008-5-30 22:07 4309 9 11 分类: 工程师职场

很早就成功安装了skyeye,但是一直没有正确的编译uclinux,今天终于把它搞定了


贴出来庆祝下:


编译uclinux的步骤:


make menuconfig (选择GDB,linux-2.4.x uclibc)


make dep   //进行编译链接


make lib_only  //编译uClibc。以后我们编译用户程序的时候需要这个运行库


make user_only  //编译用户的应用程序,包括初始化进程init,和用户交互的bash,以及集成了很多程序的busybox,还有一些服务,如boa(一个在嵌入式领域用的很多的Web 服务器)和telnetd(telnet 服务器,我们可以通过网络来登录我们的uClinux 而不一定使用串口)。


make romfs


make image//报错了这里,说没有linux的东西,先不管


make linux //出现error:cannot open romfs.o


解决办法:cp ./linux-2.4.x/fs/romfs/romfs.o ./linux-2.4.x/


再编译下make linux


发现还有错误    arm-elf-ld -p -X -T arch/armnommu/vmlinux.lds arch/armnommu/kernel/head-armv.o arch/armnommu/kernel/init_task.o init/main.o init/version.o init/do_mounts.o
    --start-group
    arch/armnommu/kernel/kernel.o arch/armnommu/mm/mm.o arch/armnommu/mach-S3C44B0X/S3C44B0X.o kernel/kernel.o mmnommu/mmnommu.o fs/fs.o ipc/ipc.o
    drivers/serial/serial.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/net/appletalk/appletalk.o drivers/media/media.o
    net/network.o
    arch/armnommu/lib/lib.a /root/uClinux-dist/linux-2.4.x/lib/lib.a /usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a
    --end-group
    -o linux
    fs/fs.o(.data+0x1378): multiple definition of `romfs_file_operations'
    romfs.o(.data+0x80): first defined here
    make[1]: *** [linux] Error 1
    make[1]: Leaving directory `/root/uClinux-dist/linux-2.4.x'
    make: *** [linux] Error 1


解决办法:vi ~/uClinux-dist/linux-2.4.x/fs/romfs/inode.c
    /* Mapping from our types to the kernel */

    static struct address_space_operations romfs_aops = {
    readpage: romfs_readpage
    };

    static struct file_operations romfs_dir_operations = {
    read: generic_read_dir,
    readdir: romfs_readdir,
    };

    static struct file_operations romfs_file_operations = {
    read: generic_file_read,
    mmap: generic_file_mmap,
    #ifdef MAGIC_ROM_PTR
    romptr: romfs_romptr,
    #endif
再进行make linux


这一次ok了


再来make image下,这下是ok的了


这下是ok的


在uc-linux-dist目录下新建一个skyeye.conf


cpu: arm7tdmi
 mach: at91
 mem_bank: map="M", type="RW", addr="0x00000000", size="0x00004000"
 mem_bank: map="M", type="RW", addr="0x01000000", size="0x00400000"
 mem_bank: map="M", type="R", addr="0x01400000", size="0x00400000", file="images/romfs".img
 mem_bank: map="M", type="RW", addr="0x02000000", size="0x00400000"
 mem_bank: map="M", type="RW", addr="0x02400000", size="0x00008000"
 mem_bank: map="M", type="RW", addr="0x04000000", size="0x00400000"
 mem_bank: map="I", type="RW", addr="0xf0000000", size="0x10000000"


然后在uclinux目录下运行


skyeye linux-2.4.x/linux


(skyeye)target sim


(skyeye)load


(skyeye)run


____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
| ___\____|_||_|_| |_|\____|\_/\_/
| |
|_|
这个东西就出来了


后期把lcd的接上去

文章评论2条评论)

登录后参与讨论

用户665335 2008-7-24 19:22

兄弟,你解决fs/fs.o(.data+0x1378): multiple definition of `romfs_file_operations' romfs.o(.data+0x80): first defined here make[1]: *** [linux] Error 1 make[1]: Leaving directory `/root/uClinux-dist/linux-2.4.x' make: *** [linux] Error 1 得方法是什么呀?!你贴得这段代码跟源文件得一样,改动那个地方呢?请赐教

用户161280 2008-7-24 19:21

兄弟,你解决fs/fs.o(.data+0x1378): multiple definition of `romfs_file_operations' romfs.o(.data+0x80): first defined here make[1]: *** [linux] Error 1 make[1]: Leaving directory `/root/uClinux-dist/linux-2.4.x' make: *** [linux] Error 1 得方法是什么呀?!你贴得这段代码跟源文件得一样,改动那个地方呢?请赐教
相关推荐阅读
用户1578577 2008-07-24 17:00
视频解码优化[转]
视频解码优化以下通过剖析一些经验来了解视频解码优化1  在嵌入式系统中实现MPEG4的视频解码有两种方法可行(1)采用ffmpeg(mplayer 的核心就是采用ffmpeg),然后对ffmpeg m...
用户1578577 2008-07-24 09:20
xvid的学习
xvid有两种编码方式:single pass和twopass single pass模式编码简单,速度也快,但最终效果不如twopass。 twopass就是视频压制需要经过两次编码,分别为twop...
用户1578577 2008-07-03 20:07
linux下面编程的几个数据结构
1、获取磁盘信息                              struct   statfs   {                                       long...
用户1578577 2008-06-20 10:40
Linux 下串口编程入门
Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍。串口简介串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是...
用户1578577 2008-06-20 10:06
va_list、va_start、va_arg、va_end的原理与使用
 概述由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数...
用户1578577 2008-06-14 16:16
Linux編程中遇到的幾個函數
1.atoi函數This function converts a given string to integerint atoi(const char *sz);returns the string'...
我要评论
2
9
关闭 站长推荐上一条 /2 下一条