EDN首页   博客首页

1

关于投票
终于搞定在skyeye里面运行uclinux

很早就成功安装了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的接上去

系统分类: 自由话题
用户分类: 其他OS
标签: 无标签
来源: 原创
发表评论 阅读全文(536) | 回复(2)

1

关于投票
关于cygwin
cygwin是什么?

  cygwin是一个在windows平台上运行的 linux模拟环境,是cygnus solutions公司开发的自由软件。 

  cygwin的工作机制:cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写了一个共享库(就是cygwin dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于 win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在 windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。关于cygwin实现的更详细描述,请参考http://cygwin.com/cygwin-ug-net/highlights.html

一、cygwin的安装。 

  step1. 下载后,点击安装文件(setup.exe)进行安装,第一个画面是GNU版权说明,点"下一步(N)—>",进入安装模式选择画面。

  step2. 安装模式有"Install from Internet"、"Download form Internet"、

"Install from Local Directory" 三种。"Install form Internet"就是直接从internet上装,适用于网速较快的情况。如果网速不是很快,或者说装过之后想把下载的安装文件保存起来,下次不再下载了直接安装,就应该选择"Download form Internet",下载安装的文件(大约400M左右)。我选择了"Install from Internet"(我等得好可怜啊: )

  step3. 接下来是选择安装目的路径和安装源文件所在的路径,之后就进入了选择安装包所在的路径。

注意了啊,这里可是重头戏。我第一次安装的时候就是没有看清这一步,结果没有把gcc装进去,导致没法编译文件。(费了千辛万苦的耐心,最后却运行不了,郁闷死我了)

   + All  Default

      + Admin Default

       ....

      + Devel   Default

      + Editors Default

      ....

如上所示,你在这个TreeView的某个节点上双击,就可以改变它的状态,如Default、Install、Uninstall、Reinstall四种状态。默认的都是Default状态,很多工具的默认状态都是不安装。

在这里我选择了在All这一行上后面的Default上点Install,全部安装,以免后患。(注意:这里的树形控件和win下面的不同,你试试点在All上点 和 在All这一行后面的Default上点,会有不同的响应)

  step4. 点下一步,安装成功。它会自动在你的桌面上建立一个快捷方式。

 二、常用的命令

  好了,下面就开始我的linux旅程了。双击cygwin的快捷方式进入系统。

首先介绍几个简单的linux命令。

pwd   显示当前的路径

cd    改变当前路径,无参数时进入对应用户的home目录

ls    列出当前目录下的文件。此命令有N多参数,比如ls -al

ps    列出当前系统进程

kill  杀死某个进程

mkdir 建立目录

rmdir 删除目录

rm    删除文件

mv    文件改名或目录改名

man   联机帮助

less  显示文件的最末几行

由于linux下面的命令大多都有很多参数,可以组合使用。所以,每当你不会或者记不清楚改用那个参数,那个开关的时候,可以用man来查找,比如,我想查找ls怎么使用,可以键入

$  man ls

系统回显信息如下:

LS(1)                          FSF                          LS(1)

NAME

       ls - list directory contents

SYNOPSIS

       ls [OPTION]... [FILE]...

DESCRIPTION

       List information about the FILEs (the current directory by

       default).  Sort entries alphabetically if none of -cftuSUX

       nor --sort.

       -a, --all

             do not hide entries starting with .

       -A, --almost-all

             do not list implied . and ..

       -b, --escape

             print octal escapes for nongraphic characters

       --block-size=SIZE

             use SIZE-byte blocks

:

三、 第一个C和C++程序

好了,多说无意,让我们来写一个hello world程序。

# cd

  进入了/home/administrator目录,我当前的登陆帐号是administrator

# mkdir source

  建立一个叫做source的子目录

# cd source

  进入 /home/administrator/source

# vim hello.c

   启动vim编辑器,来编写程序。好了,现在有必要简要介绍一下vim。

在linux界,有两大编辑器最有历史。其一是vi,其二是emacs。vi现在已经演化成了vim,比当前的vi更为强大。vim和emacs是两种截然不同的东西,vim强调用简洁的命令来完成功能,无论是查找、替换、

正则表达式匹配、编译、链接、排错、函数间跳转等等等等都在命令行中完成,并且它把方向键也集成在了hjkl四个键之上,可以说,用了vim基本上可以不用鼠标了:p  emacs则是在功能强大上做文章,版本控制、模拟多种编辑环境、对文本进行各种操作,可谓之一个强大的文本处理系统。emacs是用诸如Ctrl+ Alt+K 之类的组合键来控制的;vim则是用se(set 的缩写)等简洁命令来控制的。

   由于cygwin中只提供了vim(能不能自己装emacs我还没有试过),我们就先体验一下vim吧:p

vim加载文本文件后分为命令模式和插入模式两种。插入模式,顾名思义就是输入编辑文本;命令模式,则是输入各种vim的控制命令,常用的有:

   i  进入编辑模式

   h  左移

   j  下移

   k  上移

   l  右移

   w  存盘

   q  退出

   ! 强调执行

有些命令是可以组合使用的,如果你修改了某个文件,想存盘退出,则可以使用wq;如果你想放弃存盘,直接退出则可以使用q!  好了大家体验一下吧,记住:从编辑模式退回命令模式按"Esc",再按":",在输入指令,从命令模式进入编辑模式用i,初次使用vim肯定很难受,嘿嘿,不过用多了就习惯了,确实很省劲。

我们编辑hello.c文件,输入:

#include

int main(void) {

  printf( "Hello World!");

}

然后,输入wq命令退到命令行。

输入编译指令:

# gcc hello.c -o hello

编译成功后可以看一下

# ls

看到hello.exe了吧,嘿嘿。

好,让我们运行看看。

# ./hello

效果如何?不错吧? :)

okey,现在玩一个C++的hello world,

# vim world.cpp

输入:

#include

using namespace std;

void main() {

  cout << "Hello World!";

}

编译C++程序要用g++

# g++ world.cpp -o world

运行一下哈,

# ./world

系统分类: 嵌入式
用户分类: 其他OS
标签: 无标签
来源: 无分类
发表评论 阅读全文(624) | 回复(1)
总共 , 当前 /