视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
AT91SAM9260开发环境搭建大全(tftp_nfs_编译器安装等)
2025-09-25 17:58:36 责编:小OO
文档
================( 可以在ubuntu11.10中成功进行安装配置)=============

1、tftp服务器的安装

注意:

如果在apt-get install过程中,出现找不到一大堆的东西,一般是源有问题。到新立得下面操作,标记安装,一般就可以,还不行的话,换个源。在新立得下如果卸载出现什么子进程的什么什么东东。要到/var/lib/dpkg/info/下删除相应的tftp-hpa和tftpd_hpa文件。然后到/var/cache/apt/archives下删除相应的tftp-hpa和tftpd_hpa文件。                                      

在ubuntu11.10中,在终端中输入如下命令进行安装:(使用root用户)

1.apt-get install tftp-hpa tftpd-hpa(或者在新立得中标记安装)前者为客户程序,后者为服务程序

2. mkdir /home/tang/tmp  (可根据需要建立相应的目录,此目录为tftp的共享目录)

chmod  777 /home/tang/tmp

cd /home/tang/tmp

vi test.txt

随便输入数据保存

cd /home/tang  

vi test1.txt   (需要用root权限进行创建,否则无法进行保存退出)

随便输入数据保存

3.vi /etc/default/tftpd-hpa

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/home/tang/tmp" //这里是你的tftpd-hpa的服务目录,这个想建立在哪里都行

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l -c -s"        //这里是选项,-c是可以上传文件的参数,-s是指定tftpd-hpa服务目录,上面已经指定

4. service tftpd-hpa restart 启动服务,这里要注意,采用的服务形式。而不是采用超级服务xinetd启动tftpd的方式。在网上有人说用tftpd-hpa和tftp- hpa再加上在/etc/xinetd.d下编写tftp服务文件的方式,经过我的反复测试,并不能用service xinetd restart来启动tftpd服务。至于用较老的版本tftpd和tftp再加上xinetd能否成功,我没有测试过。既然新版本能成功,我也就不再测试了。

5.测试

cd /home/tang  root

tftp 127.0.0.1

tftp>get test.txt (if not root ,will warning permission denied)

tftp>put test1.txt

tftp>quit

$ls

会看见test.txt

cd tmp

ls

test.txt,test1.txt都存在

如果成功,会没有任何提示,而且基本上看不见任何延时。注意严格按照以上操作,不要动xinetd的配置。只需要修改/etc/default/tfptd-hpa即可。

安装过程整理总结:

1、前期按照其他方法来进行安装配置,但是系统提示tftp无法进行文件传输。

2、卸载掉原来安装的版本,重新上面的安装方法进行安装配置

3、在安装过程中可以不安装守护进程xinetd,配置完成后可以在本机下进行测试。

[备注:]

验证tftp是否生效(先在本机下进行测试)

上传文件:

切换到/home/用户/ 下并创建test.txt文件

tftp 127.0.0.1

tftp> put test.txt

tftp>quit

 

此时/home/tang/tmp目录下应该有test.txt文件了

下载文件:

到其他的目录下(当前目录不要与创建文件的目录一样)

tftp 127.0.0.1

tftp> get test.txt

tftp>quit

就可以把test.txt下载到当前目录

与开发板的文件传输过程:

tftp服务器的使用:

1>在主机(也就是服务器端)开启tftp服务器

service tftpd-hpa restart 启动服务(由于没有安装守护程序,可直接重启服务器)

2>打开终端,用minicom进入到uclinux

3>修改AT91SAM9260开发板的IP地址跟主机在同一个网段

ifconfig eth0 192.168.9.100

4>进入其中的一个下载目录:如/mnt

5>在开发板的终端中 

输入:tftp 192.168.9.103(假设我这台主机的IP是这个)

注意这里的ARM开发板板要跟主机在同一个网段,若ARM板不是跟主机在同一个网段,则会出现无法登录的情况,修改方法是:在ARM(9260)上输入ifconfig eth0 192.168.9.*(这里假设主机的网关是192.168.9.1)若成功登录则会有如下的提示:tftp >

6>输入:get <你要下载的文件名> //注意这个文件名必须是在tftp的工作目录下,如前面我设置为

/home/tang/tmp

7>如果下载成功则会提示用了多少秒

8>接下来我们就可以直接运行这个文件了(有时候会出现不能运行的情况,如badcommand等,此时可以用以下的命令:chmod 777 文件名)。 

====================在ubuntu11.10中可以成功安装===============

2、安装NFS

嵌入式开发时,nfs(网络文件系统)可以实现主机和开发板共享文件

(1)安装所需软件包

apt-get install nfs-common nfs-kernel-server portmap

(2)配置

vim /etc/exports

增加下面这一行内容:

/home/alextang *(rw,sync,no_root_squash)   #(注意:在共享目录后面要留有一个空格!) 

ps:/home/alextang: 表示共享的目录(同时需要在/home目录下新建alextang做为共享目录)

  * :允许所有的网段访问,也可以设置成某一个ip段,如192.168.0.*

  rw :读写权限

  sync:资料同步写入内在和硬盘

  no_root_squash:nfs 允许客户端共享目录所有者权限

(3)启动服务

/etc/init.d/nfs-kernel-server restart  --重启nfs服务器

/etc/init.d/nfs-kernel-server status   --查看nfs状态

也可以使用:netstat -a | grep nfs 查看

 

查看nfs的设置:

showmount -e 192.168.1.130

检验一下设置是否有问题

(4)测试NFS

在本机环境下进行NFS测试:

在/mnt下创建nfs目录

 sudo mkdir /mnt/nfs 

将主机/home/alextang目录挂载到/mnt/nfs下                       

sudo mount -t nfs 127.0.0.1:/home/alextang /mnt/nfs

查看/mnt/nfs目录下所有的文件,跟/home/alextang目录下的文件一样

 ls -l /mnt/nfs/  

卸载:

 sudo umount /mnt/nfs/

在开发板进行NFS测试可能会出现的一些问题:

1、提示NFS服务器的权限拒绝时,可能是主机的/etc/exports文件的网段设置与mount的网段不一致,或者是文件中的共享目录设置与mount的目录不一致。

2、启动目标板并连通网络后,首先查看kernel自身是否支持nfs,

cat /proc/filesystems

查看其中是否有nfs一行,若没有则表示内核不支持nfs,就需要重新编译和烧录内核;有则OK,接下来就可以直接mount操作。

3、提示NFS服务器没有回应,超时,应该在mount 命令后面添加nolock,命令格式:

mount  -o nolock 192.168.9.103:/home/alextang /mnt

原因是连接到旧版本的NFS服务器时需要用到禁止文件锁。也有可能是因为在其他的终端中已经mount了别的目录,需要将已挂载的目录umount。

4、主机防火墙有设置时,也可能导致目标板无法正常访问。(一般ubuntu系统会默认把防火墙关掉,如果打开的话就得先关掉防火墙后再测试。

【备注:】

通过NFS挂接远程主机的文件系统时,使用一些不同的选现可以使得mount比较简单易用。这些选项可以在mount命令中使用,也可以在/etc/fstab和autofs中设定。 

以下是NFS mount常用的一些选现: 

hard or soft -- 指定当程序无法通过NFS连接使用服务器输出的文件系统上的文件时,是否需要等待服务器重新在线。如果是soft情况,它将报错。如果指定hard,用户 无法不能终止程序等待NFS通讯恢复,除非同时指定了intr选项。如果指定了soft,用户可以设置附加选项timeo=指定了错误报告之前的秒数。 

intr -- 当服务器宕机或者无法到达时,允许中断NFS请求。 

nfsvers=2或者nfsvers=3 -- 指定使用那个版本的NFS协议。 

nolock -- 禁用文件锁。这个设置在连接到一个旧版本的NFS服务器时偶尔会用到。 

noexec -- 防止执行被挂接的系统上的二进制文件。这在系统通过NFS挂接一个包含有不兼容的二进制文件的非linux系统时是很有用的。 

nosuid -- 禁用"设置用户标志位"(set-user-identifier)或者"设置组标志位"(set-group-identifier)。这样防止远程用户运行setuid程序获得更高权限。 

rsize=8192和wsize=8192 -- 通过设定大的同时传输的数据块大小(bytes),以提高NFS读写的速度。改变这些值时要当心,一些旧的linux内核和网卡在大的块大小不能正常工作。 

tcp -- 指定NFS使用TCP协议mount,替换UDP。 

成功把测试文件传到NFS服务器的共享目录后,从开发板终端将开发板共享目录挂载到某个目录下,就可以进行相关的测试:

1、进行串口测试:

./uart_test

然后出现选择端口的命令Select a port to test (0-6) 

输入一个数字如:0。选择好端口后,就可以进行串口的测试

即在开发板终端中输入字符会自动返回显示出来

===================================== ======================================

此处以下以后再进行详细过程整理总结

====================================================== =====================

嵌入式Linux实战篇--交叉编译环境的建立(基于ubuntu 11.10)

在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。本文具体说明了嵌入式交叉编译环境的建立过程和具体的操作步骤,希望能够对各位朋友搭建对应的交叉编译环境有所帮助。

一、所需软硬件环境

■ 主机环境

建立交叉编译工具链的主机环境:

Ubuntu 11.10,gcc-4.3.2

■ Ubuntu 11.10软件环境

保证你的 Ubuntu 11.10 安装了如下的软件:

Bison flex build-essential patch libncurses5-dev

安装这些软件包:

sudo apt-get install Bison flex build-essential patch libncurese5-dev

或直接下载下列deb软件包

bison_13a2.3.dfsg-4build1_i386.deb

build-essential_11.4_i386.deb

flex_2.5.33-10build1_i386.deb

libncurses5-dev_5.6+20071124-1ubuntu2_i386.deb

m4_1.4.8-1build1_i386.deb

patch_2.5.9-5_i386.deb

然后 sudo dpkg –i *.deb 安装这些软件包。

■ 相关软件包

本方案所选软件包如下:

gcc-3.4.5.tar.gz

glibc-2.3.6.tar.gz 

linux-2.6.26.5.tar.gz 

crosstool-0.43.tar.gz 

binutils-2.15.tar.gz 

glibc-linuxthreads-2.3.3.tar.gz 

linux-libc-headers-2.6.12.0.tar.bz2

二、具体工作步骤

1、修改系统配置

1.1、Ubuntu 8.10 默认安装的 gcc 版本为4.3.2,这个版本对于语法要求较高,编译会出错,目前不宜选用,于是选择了 gcc-4.1.1 ,但并不需要卸载 gcc-4.3.2。

(1)第一种方法:直接在终端输入安装gcc-4.1

sudo apt-get install gcc-4.1

(2)第二种方法:下载下列软件包:

gcc-4.1_4.1.2-23ubuntu3_i386.deb

gcc-4.1-base_4.1.2-23ubuntu3_i386.deb

cpp-4.1_4.1.2-23ubuntu3_i386.deb

然后sudo dpkg –i *.deb

安装就可以了

sudo rm /usr/bin/gcc (删除GCC,它只是个到gcc-4.3.2的软链接文件)

sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (建立GCC到gcc-4.1的软链接)

1.2、修改sh版本

如果运行

ls -la /bin/sh

看到链接的是 dash ,则请运行以下命令

sudo dpkg-reconfigure dash

选择 no 以删除 dash 

此处如果不改好的话,编译时会出现错误

2.解压软件包,并进入该目录,查看重要的脚本文件。

$cd downloads 

$tar –zxvf crosstool-0.43.tar.gz 

$cd crosstool-0.43

在此目录下可以看到有很多.sh脚本和.dat配置文件,每一个支持的处理器都有它所相应的脚本。假如选用demo-arm-softfloat.sh 就是建立目标为支持软浮点的arm交叉编译工具链。 

3.修改demo-arm-softfloat.sh

$vim demo-arm-softfloat.sh

修改下面两句

TARBALLS_DIR=$HOME/downloads //表示下载的源码的存放目录

RESULT_TOP=/opt/crosstools //表示生成的工具链的存放目录

为:

TARBALLS_DIR=/home/linux/downloads(源码存放目录)

RESULT_TOP=/home/linux/crosstools(生成工具链目录)

4.修改 gcc-3.4.5-glibc-2.3.6.dat

$ 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.26.5

LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0

GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6

5.$ ./ demo-arm-softfloat.sh 

这个过程较长(半个小时左右)

6.修改环境变量

修改环境变量有多种方法我们介绍两种

(1)第一种方法:在当前用户目录的.bashrc中添加如下内容

$export PATH=$PATH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:

(2)第二种方法:或直接修改/home/linux/.bashrc

cd /home/linux

vim .bashrc

添加如下内容:

PATH=$PATH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:

然后

source .bashrc

7.执行如下命令

$ arm-softfloat-linux-gnu-gcc -v

显示

Reading specs from /home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/lib/gcc/arm-softfloat-linux-gnu/3.4.5/specs

Configured with: /home/david/downloads/crosstool-0.43/build/arm-softfloat-linux-gnu/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure --target=arm-softfloat-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu --with-float=soft --with-headers=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu/include --with-local-prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long

Thread model: posix

gcc version 3.4.5

ok交叉编译环境创建成功!

8.恢复我们修改的系统配置:

恢复gcc为4.3

sudo rm /usr/bin/gcc 

sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc

重新安装dash

sudo dpkg-reconfigure dash

选择 yes 以重新安装 dash

000000000000000000000000000000000000000000000000000

内核编译的安装

000000000000000000000000000000000000000000000000000

开发板附带的安装过程参考:

如果还没有安装armv5-linux-gcc这个编译器,按如下方法安装。

从光盘中拷贝armv5-linux-gcc.tar.bz2 文件到linux PC 的/opt/timesys/toolchains文件夹下面,用如下命令进安装。

[root@localhost opt]$ tar –jxvf armv5-linux-gcc.tar.bz2

这时在/opt/timesys/toolchains这个文件夹下面可看到文件,这里面就是安装的编译器

1.1.编译Linux内核

从光盘中拷贝linux-2.6.19.tar.bz2文件PC机某个目录下面并解压,然后进入内核源码的根目录。

[root@localhost 9260s]$ ls

linux-2.6.19.tar.bz2

[root@localhost 9260s]$ tar -xjvf linux-2.6.19

[root@localhost 9260s]$ ls

linux-2.6.19      linux-2.6.19.tar.bz2

[root@localhost 9260s]$ cd linux-2.6.19

[root@localhost linux-2.6.19]$ make menuconfig

按照开发板附带的安装Linux编译文件,执行以下步骤后发现,执行make menuconfig命令后,提示如下错误信息:

 HOSTCC  scripts/kconfig/lxdialog/checklist.o 

In file included from scripts/kconfig/lxdialog/checklist.c:24:0: 

scripts/kconfig/lxdialog/dialog.h:32:20: 致命错误: curses.h:没有那个文件或目录 

编译中断。 

make[1]: *** [scripts/kconfig/lxdialog/checklist.o] 错误 1 

make: *** [menuconfig] 错误 2 

解决办法:ubuntu系统中缺少一个套件 ncurses devel ,把此套件安装下即可

$ sudo apt-get install libncurses5-dev

然后可以进行编译内核的配置。

[注:]

配置文件的保存可以采用默认的名字,编译时会自动选择默认的名字。也可以在Makefile中进行更改,gedit xxx.cfg 进行查看内核的配置,文件中的内容与用Make menuconfig打开的界面内容选项对应。

0000000000000000000000000000000000000000000000

 一、交叉编译环境 arm-linux-gcc-2.95.3 的建立

1.下载cross-2.95.3.tar.bz2 

2.建目录,复制,解压

# cd /usr/local

# mkdir arm

# cd arm

复制cross-2.95.3.tar.bz2 到当前目录

# tar jxvf cross-2.95.3.tar.bz2

3.导出/usr/local/arm/2.95.3/bin 到环境变量

在/etc/profile 最后添加  PATH=$PATH:/usr/local/arm/2.95.3/bin 

二、交叉编译环境 arm-linux-gcc-3.4.1的建立

书中介绍的crosstool制作工具的链的方法很好,但是很浪费时间,因为编译一次要数个小时,很是麻烦,也不适合初学这,这里的方法是书中3.2节提 到的第一种方法,很简单,但是正如书中所说,不是自己定制的受到局限不是很理想,但对我们的开发这已经足够用了。建议大家还是先选用这种方法

1.下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下。

  arm-linux-gcc-3.4.1.tar.bz2 的下载地址如下:

http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

2.解压 arm-linux-gcc-3.4.1.tar.bz2

  #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2

  解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹,进入该文件夹,将arm文件夹拷贝到/usr/local/下

  # cd usr/local/

  #cp -rv arm /usr/local/

  现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了

3.  修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,强烈推荐使用方法一)

  方法一:修改/etc/bash.bashrc文件

     #vim /etc/bash.bashrc

            在最后加上:

   export PATH=$PATH:/usr/local/arm/3.4.1/bin export PATH     (注意:“=”前后不能有空格)

    (如果不能编辑,先修改相关文件的权限使用chmod命令。)

方法二:修改/etc/profile文件:

# vim /etc/profile 

增加路径设置,在末尾添加如下,保存/etc/profile文件:

export PATH=$PATH:/usr/local/arm/3.4.1/bin

  方法三:#export PATH=$PATH:/usr/local/arm/3.4.1/bin

  注:(这只能在当前的终端下才是有效的!)

4. 立即使新的环境变量生效,不用重启电脑:

 对应方法一:#source /root/.bashrc

 对应方法二:# source /etc/profile

5. 检查是否将路径加入到PATH:

   # echo $PATH

  显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。

 6.测试是否安装成功

  # arm-linux-gcc -v

上面的命令会显示arm-linux-gcc信息和版本,这是我显示的信息:

 Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs

 Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc- 3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu

 --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm

 -linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable

 -nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable- languages=c,c++ --enable-shared --enable-c99 --enable-long-long

 Thread model: posix

 gcc version 3.4.1

7.编译Hello World程序,测试交叉工具链

   写下下面的Hello World程序,保存为 hello.c

#include

int main()

{

printf("Hello World!\\n");

return 0;

}

   执行下面的命令:

# arm-linux-gcc -o hello hello.c

    源程序有错误的话会有提示,没有任何提示的话,就是通过了,就可以下载到ARM目标板上运行了!

接着可以输入file hello的命令,查看生成的hello文件的类型,要注意的是生成的可执行文件只能在ARM体系下运行,不能在其于X86的PC机上运行。

有时会有如下的警告:

warning: no newline at end of file

英文的意思就是说文末没有换行符。Unix文档的回车换行符是一个字符\\n,Windows的是分别的两个\\n\\r,所以你在Windows下编辑的最后一个字符是\\r不是\\n,所以编译器以为有错误。在文件最后补一个新行即可。

源程序有错误的话会有提示,没有任何提示的话,就是通过了,就可以下载到ARM目标板上运行了!

接着可以输入file hello的命令,查看生成的hello文件的类型,要注意的是生成的可执行文件只能在ARM体系下运行,不能在其于X86的PC机上运行。

想要在PC机linux上运行,只需执行如下命令:

gcc hello.c -o hello

    ./hello

显示打印结果

至此嵌入式的开发环境搭建完毕下载本文

显示全文
专题