Ubuntu下搭建嵌入式环境

时间:2020-12-24 22:29:08

 

Ubuntu下搭建嵌入式环境

.minicom的安装

(1)打开终端,输入:

sudo apt-get install minicom

(2)然后进行配置,输入

sudo minicom -s

(3)进入Serial port setup,需要修改两处:

1>A/dev/tty8改为/dev/ttyS0

注意:如果为笔记本没有串口,可以用usb转串口工具,此时要

改为/dev/ttyUSB0

(也许你的不一样,可以在/dev下查看)

2>波特率设备为115200,硬件流和控制流端口设为No

3>回车退回到刚进入时的界面,选择save setup as dfl

(4)启动minicom

在终端输入命令:minicom,进入到minicom界面,如果主机跟开发板连接,这时如果按下板子的启动键,则在minicom界面中会看到整个加载的过程。系统启动完成后,minicom就相当与板子的一个终端,它可以对板子进行一些命令操作。

<!--@page { margin: 2cm }P { margin-bottom: 0.21cm }-->

(5)正常关闭minicom的方法是在终端里面输入:CTRL+A,然后再输入Q,这样才可以做到正常关闭minicom

:

非正常关闭minicom,会在/var/lock下创建几个文件LCK*,这几个文件阻止了minicom的运行,将它们删除后即可恢复

.tftp的安装:

(1)进入终端,输入:

sudo apt-get install tftp-hpa tftpd-hpa

第一个是客户端,第二个是服务器端

(2)sudo apt-get install xinetd

这是一个tftp传输所基于的协议

(3)配置

1>cd /etc/xinetd.d/

修改配置tftp,如果没有就新建一个

2>输入:sudo gedit tftp

将内容修该如下:

service tftp

{

socket_type = dgram

wait = yes

disable = no

user = root

protocol = udp

server = /usr/sbin/in.tftpd

server_args = -s/home/tftpboot

log_on_success += PID HOST DURATION

log_on_failure +=HOST

}

3> 安装完成后,默认的服务器路径是 /var/lib/tftpboot/,以后目标机需要通过tftp获取文件时,都是从这个目录中获得

(4)重新启动服务器

sudo /etc/init.d/xinetd reload

sudo /etc/init.d/xinetd restart

(in 3.2.0 linux kernel, change from above two instructions to  "sudo  service xinetd reload ;  sudo service xinetd restart" instead of above )

(5)测试:

1>首先在tftp服务器目录下随便新建一个文件

touch tiger.c

2>然后随便进入到其他目录下,输入命令:

sudo tftp localhost.

3>这时会出现tftp命令行,输入命令

get tiger.c

该意思是在localhost下,也就是访问本机中tftp服务器,获取文件tiger.c,若服务器没问题,则在该目录下会多出来一个刚才获得的文件a.c,这时就说明我们所安装的tftp服务器可以正常使用。

注意:

如果出现超时提示,一般都是防火墙的原因,所以要把防火墙关闭,或者直接卸载防火墙。输入:

sudo apt-get remove iptables
nfs的安装:

(1)安装软件,输入:

sudo apt-get install nfs-kernel-server

(2)进入/etc目录下,修改配置文件exports

1>如果没有就新建一个:

sudo gedit exports

2>添加一句话:

# /etc/exports: the access control list for filesystems which may be exported

# to NFS clients. See exports(5).

#

# Example for NFSv2 and NFSv3:

# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)

#

# Example for NFSv4:

# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)

# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)

/home/think/test *(rw,sync,no_root_squash)

-------------------------------------------------------------------------------------

说明:

a.前面的目录是设置你想要共享的主机里的某个目录,此处将/home/think/test共享出现,

b.后面的*是设置允许那一段IP访问,这里的*代表任意ip,也可以改为下面

/home/think/test 192.168.0.*(rw,sync,no_root_squash)

c.括号里面的参数

第一个参数:读写

第二个参数:同步

第三个参数:权限

a.no_root_squash: 登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有root 的权限!这个项目极不安全,不建议使用!

b.root_squash: 在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个身份。

 c.all_squash: 不论登入 NFS 的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是 nobody

d. anonuid: 前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody,但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中!

e.anongid: 同 anonuid ,但是变成 group ID 就是了。

(3)重新启动服务器

1>sudo exportfs -rv

重新导入配置文件

2>重新启动portmap服务(端口映射):sudo /etc/init.d/portmap restart

3>sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务

(4)使用nfs

a.使用mount指令,让共享的文件夹挂载到一个指定目录下。

b.在使用nfs服务之前,还需要启动portmap服务,就是在你想要挂载东西的平台上,输入 portmap&,启动portmap服务。

c.自测

输入:

mount -t nfs 192.168.1.100:/home/think/test /mnt

如果没有提示就说明挂在成功。如果想要与开发板进行nfs传输,则在开发板的Linux系统下的终端中输入: mount -t nfs 192.168.1.100:/home/think/test /mnt -o nolock 完成挂载,进入/mnt目录会发现在PC机中/home/think/test中的东西显示出来了。

.交叉工具链和安装:

1.安装:

每个开发板配套的都不一样,所以建议安装开发板中的交叉工具。

2.为了方便使用,还需要将交叉编译器路径添加到系统路径中

(1)在~/目录下新建一个文件.bash_profile(注意:.a文件是一个隐藏文件)

在文件中添加一句话:

PATH=$PATH:/home/think/4.3.3/bin

这句话添加了交叉编译器安装路径。

(2)要使编译器能用,必须运行。

运行.bash_profile文件的方法是:

a. cd~/

b .输入命令:. .bash_proble(+空格.bash_profile)

运行命令后,在终端输入命令:arm-vfp-linux-gnu-并按两下tab键如果能看到很多arm-vfp-linux-gnu-前缀的命令,则说明安装正确。

注意:每次打开一个新的终端,都要运行一次.bash_profile文件


上面的方法每开一个新的终端都要运行一次.bash_profile过于麻烦:

我们可以直接在

用户主目录下有一个.bashrc文件,可以在此文件中加入PATH 的设置如下:

export PATH=$PATH:/home/think/4.3.3/bin

编写好后,注销以下我们就把交叉编译环境写入了环境变量中

(可以用echo $PATH来查看是否加入成功),这样以后每次都不用运行就可以直接使用交叉编译环境了

 

在编译程序时就不能在用gcc而要用arm-linux-gcc

c.每次都要用arm-linux-gcc命令过于麻烦,因此我们写一个Makefile

以后只要用make命令就OK

1 EXEC=xxx

2 OBJS=xxx.o

3 SRC=xxx.c

4

5 CC=arm-linux-gcc

6 CFLAGS +=-O2 -Wall

7 LDFLAGS +=

8

9

10 all:$(EXEC)

11

12 $(EXEC):$(OBJS)

13 $(CC) $(LDFLAGS) -o $@ $(OBJS)

14

15 %.o:%.c

16 $(CC) $(CFLAGS) -c $< -o $@

17 clean:

18 @rm -vf $(EXEC) *.o *~