第一章 建立开发环境
嵌入式开发一般使用交叉开发环境,即上位机开发软件然后下载到在下位机运行。
1.1.上位机软件开发环境的构建
我主要使用Ubuntu 8.04进行开发,该版本是长期支持版,稳定性比较好,所以就选择
该版本了。
Ubuntu安装方式有很多种,比如硬盘安装、光盘安装等等。具体的安装方法这里就不
介绍了,网上多的很。但是要指明的是我用的是Ubuntu 8.04版的。
1.1.1.配置Ubuntu
1. 安装drcom客户端
本人之所以喜欢使用ubuntu,很大程度上是由于它强大的包管理工具apt-get。由于本
人所处的环境是学校,学校上网认证使用的是drcom客户端,所以想要上网必须得安装该客
户端。庆幸的是该客户端网上已经有开源项目支持Linux操作系统。大家可以到sourceforge
上去下载,我使用的是drcom-1.4.8版的。
因为ubuntu8.04是一个精简的Linux发行版,它缺乏一些开发所要使用的工具、文件,
比如标准C库的头文件、g++编译器等。缺乏这些drcom-1.4.8是没有办法编译安装的。
1.打开/etc/apt/source.list,在该文件中到下面一行,再将行头的“#”去掉。
# deb cdrom:[Ubuntu 8.04.1 _Hardy Heron_ - Release i386 (20080702.1)]/
hardy main restricted
再删除其它的内容,因为其它源太慢了。
2.更新可用的程序列表
bigtree@just:~$sudo apt-get update
3.安uild-essential。
将ubuntu8.04安装光盘放入光驱中,再执行以下命令。
bigtree@just:~$sudo apt-get build-essential
4.编译安装drcom
bigtree@just:~$tar xvzf drcom.1.4.
bigtree@just:~$make
bigtree@just:~$sudo make install
5.打开/f,按照如下内容配置客户端。
username=用户名
password=密码
#mac地址由于我在不同的机子上使用同一账号
mac=00:e0:4c:01:6d:85
device=eth0
except=10.0.0.0/255.0.0.0, 192.168.0.0/255.255.0.0, 172.16.0.0/255.240.0.0, 127.0.0.0/255.0.0.0
dnsp=218.2.135.1
dnss=202.102.4.141
dhcp=
hostip= 192.168.6.197
servip= 202.195.192.197
hostport=
servport=
hostname=
winver=
winbuild=
servicepack=
autologout=0
6.由于学校局域网arp攻击比较厉害,所以我设置了arp和mac地址绑定。包括客户端登
入和绑定的过程我写了一个脚本。
#!/bin/sh
ping -c 3 192.168.6.1
sudo arp -s 192.168.6.1 00:D0:F8:8A:91:C2
ping -c 3 192.168.6.1
sudo drcomd
drcomc login
好了电脑可以上网了,呵呵。
7.再次打开/etc/apt/source.list,注释掉光盘的源,加入以下的源,该源是常州源,速
度比较快。
deb ubuntu99/ubuntu/ hardy main restricted universe multiverse deb ubuntu99/ubuntu/ hardy-security main restricted universe multiverse
deb ubuntu99/ubuntu/ hardy-updates main restricted universe multiverse
deb ubuntu99/ubuntu/ hardy-proposed main restricted universe multiverse
deb ubuntu99/ubuntu/ hardy-backports main restricted universe multiverse
deb-src ubuntu99/ubuntu/ hardy main restricted universe multiverse deb-src ubuntu99/ubuntu/ hardy-security main restricted universe multiverse
deb-src ubuntu99/ubuntu/ hardy-updates main restricted universe multiverse
deb-src ubuntu99/ubuntu/ hardy-proposed main restricted universe multiverse
deb-src ubuntu99/ubuntu/ hardy-backports main restricted universe multiverse
保存退出
执行命令:bigtree@just:~$sudo apt-get update
2. 交叉工具链的制作
交叉工具链可以使用开发板商提供的,或者使用第三方公司提供的,比如DENX 公司的ELDK。这里我选择了自己制作工具链。
工具链的制作比较便捷和保险的方法是使用自动化的工具来搞定。如果要基于gcc和glibc来制作工具链,可以使用crosstool来编译;如果要基于gcc和uClibc来制作工具链,可以使用buildroot来制作。这里我使用的是crosstool来搞定这一切。
Crosstool的是:www.kegel/crosstool/,再制作工具前强烈建议先阅读crosstool-howto.html。在该网站上下载crosstool-0.。
由于制作工具链的工具要使用bison、flex,这两个语法和词法分析器。所以要安装。
bigtree@just:~$sudo apt-get install bison flex
嵌入式linux开发书籍(1)修改crosstool
bigtree@just:~$tar xvzf crosstool-0.
bigtree@just:~$cd crosstools-0.43
bigtree@just:~$vim demo-arm-softfloat.sh
取它的部分内容:
#红的部分表明我做了修改
TARBALLS_DIR=$HOME/embedded/tools/crosstools
RESULT_TOP=$HOME/embedded/tools/crosstools
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"
eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh –notest
TARBALLS_DIR表示源码存放的位置
RESULT_TOP表示编译结果存放的位置
GCC_LANGUAGES表示制作出来的工具链支持C/C++语言。你也可以添加其他语言的支持比如java。
上面列出的最后一行是我们制作工具链使用的。它将根据arm-softfloat.dat、gcc-3.4.5-glibc-2.3.6.dat这两个文件定义的环境变量调用all.sh脚本进行编译。
bigtree@just:~$vim gcc-3.4.5-glibc-2.3.6.dat
BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.4.5
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.24#我改成了linux-2.6.24了
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0 GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
上面的内容指明了要下载的文件。
binutils-2.15.tar.bz2
gcc-3.4.5.tar.bz2
glibc-2.3.6.tar.bz2
glibc-linuxthreads-2.3.6.tar.bz2
linux-2.6.24.tar.bz2
linux-libc-headers-2.6.12.0.tar.bz2
将上面的下载的文件放在$HOME/embedded/tools/crosstools目录下。
bigtree@just:~$vim arm-softfloat.dat
KERNELCONFIG=`pwd`/fig
#红的部分我做了修改,改成了常用的格式
TARGET=arm-linux
TARGET_CFLAGS="-O"
GCC_EXTRA_CONFIG="--with-float=soft"
GLIBC_EXTRA_CONFIG="--without-fp"
到目前为止编译工具链还是不能成功的,因为glibc-2.3.6/csu/Makefile里面有个小错误。下
面是修改过程。
bigtree@just:~$tar xvjf glibc-2.3.6.tar.bz2
bigtree@just:~$vim glibc-2.3.6/csu/Makefile
echo "\"Available extensions:\\n\"";  \
改为
echo "\"Available extensions:\\\\n\"";  \
bigtree@just:~$tar cvjf glibc-2.3.6.tar.bz2 glibc-2.3.6/
这样就可以开始编译了。
bigtree@just:~$cd crosstool-0.43
bigtree@just:~$./demo-arm-softfloat.sh
编译好后会在$HOME/embedded/tools/crosstools目录下生成gcc-3.4.5-glibc-2.3.6 的子目录,交叉编译器、库、头文件都包含在里面。下面是设置PATH环境变量:
bigtree@just:~$sudo vim /etc/environment
在PATH变量下添加如下值:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bi n:/usr/games:/home/bigtree/embedded/tools/crosstools/gcc-3.4.5-gl ibc-2.3.6/arm/bin"
测试一下arm-linux-gcc
bigtree@just:~$arm-linux-gcc –v
至此交叉工具链就算是建好了,下面还要安装一些辅助的工具。
3. 辅助工具的安装
1.ubuntu设置vim语法高亮显示和自动缩进
bigtree@just:~$sudo apt-get install vim-full
/etc/vimrc文件,这是系统中公共的vim配置文件,对所有用户都有效。下面便是修改该文件。
bigtree@just:~$sudo vim /etc/vimrc
开启语法高亮显示:将syntax on前面的“#”去掉
设置Windows风格的C/C++自动缩进:
1)设置(软)制表符宽度为4:
set tabstop=4
set softtabstop=4
2)设置缩进的空格数为4
set shiftwidth=4
3)设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:set autoindent
4)设置使用 C/C++ 语言的自动缩进方式:
set cindent
5)设置C/C++语言的具体缩进方式:
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
6)如果想在左侧显示文本的行号,可以用以下语句:
set nu
7)最后,如果没有下列语句,就加上:
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif
2.剩余开发环境的设置
安装C/C++man的手册
bigtree@just:~$ sudo apt-get install manpages-dev
安装头文件和库
bigtree@just:~$ sudo apt-get libc6-dev libstdc++6-4.1-dev
安装libncurses5-dev,主要用于make emnuconfig绘图。
bigtree@just:~$ sudo apt-get install libncurses5-dev
安装gdb调试器
bigtree@just:~$ sudo apt-get install gdb
安装图形界面ddd调试器
bigtree@just:~$ sudo apt-get install ddd
安装automake工具
bigtree@just:~$ sudo apt-get install automake
bigtree@just:~$ sudo apt-get install autoconf
bigtree@just:~$ sudo apt-get install autogen
安装indent,调整C源码的格式
bigtree@just:~$ sudo apt-get install indent
安装libtool,它是一个通用库支持脚本,将动态库的复杂性隐藏在同一可移植的接口中。bigtree@just:~$ sudo apt-get install libtool
3.网络环境配置
<1> openssh安装
bigtree@just:~$ sudo apt-get install openssh-server
安装好后openssh服务便可以使用了。
下面介绍一下windows下secureCRT的使用配置。
安装好secureCRT后会出现下图:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。