Ubuntu下搭建嵌入式环境_嵌入式ubuntu-程序员宅基地

技术标签: path  set up environment  linux  终端  服务器  filesystems  

 

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 *~ 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tigerjb/article/details/6418022

智能推荐

九、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-聊天会话管理的实现_腾讯im实现长按发送语音_智密科技的博客-程序员宅基地

基于uni-app技术开发的仿微信界面IM实例项目,开源Vue版本源码,对于要求高的开发者我们也开发了NVUE版本,实现了文本消息、图文消息、表情(gif动画),图片预览,图片编辑,视频预览,视频编辑,仿微信的图片选择、编辑、长按菜单等功能_腾讯im实现长按发送语音

pppoe-server + ipv6_pppoe-server-options ipv6-程序员宅基地

pppoe-server + ipv6安装pppoe 服务yum install rp-pppoe dibbler-server radvd -y开启ipv6转发echo 'net.ipv6.conf.all.forwarding = 1' >> /etc/sysctl.confsysctl -p配置pppoe服务vi /etc/ppp/pppoe.confETH..._pppoe-server-options ipv6

Spring的IoC/DI的理解_springioc di-程序员宅基地

在对《Spring技术内幕》通读之后,终于对Spring IoC及AOP有了一点理解,以下为个人理解,如有不妥,欢迎大家指正,谢谢!一、Spring IoC也称控制反转或依赖注入理解:将对象的创建交给IoC容器进行管理(IoC容器也就是我们俗称的BeanFactory或者是ApplicationContext),由IoC容器负责引用对象的创建传统的方法:由于Demo类中包含Us_springioc di

Textview的左边图片设置-程序员宅基地

tv_radaritem_name.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { isShow = !isShow; if(isShow) { Drawable img = getResources().getDrawabl..._textview设置图片在左边

英文版Vista系统 运行魔兽争霸III_Andy_Issta_新浪博客-程序员宅基地

如果你的电脑是英文版的Vista,那玩中文版魔兽争霸时就会出现:"此魔兽争霸III需要特定语言版本之Windows",无法进入游戏界面。问题如何解决呢?经上网查找,测试,总结出以下二种方法(必定可行):1、用 UltraEdit等编辑软件打开魔兽争霸安装目录下的“game.dll”文件,查找到16进制串"00006b30h04080000742A3D04",将其中的...

MySQL数据库的高级使用-程序员宅基地

将查询结果插入到其它表中1. 思考目前只有一个goods表,我们想要增加一个商品分类信息,比如:移动设备这个分类信息,只通过goods表无法完成商品分类的添加,那么如何实现添加商品分类信息的操作?答案:创建一个商品分类表,把goods表中的商品分类信息添加到该表中。 将goods表中的分类名称更改成商品分类表中对应的分类id2. 创建商品分类表-- 创建商品分类表create table good_cates( id int not null primary key au

随便推点

AlertDialog弹出消息后,背景色透明,不影响Activity的事件触发-程序员宅基地

背景色透明:// 背景色 dialog.getWindow().setDimAmount(0f);不抢占Activity焦点:// dialog不去抢占焦点 dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManage...

为什么我们做分布式使用Redis?-程序员宅基地

点击上方“后端技术精选”,选择“置顶公众号”技术文章第一时间送达!作者:姚登晏www.cnblogs.com/yaodengyan/绝大部分写业务的程序员,在实际开发中使用 Redis..._java 异步长轮询 分布式 放入redis会生效吗

mysql 操作工具-程序员宅基地

mysql 连接工具:SQLyog-8.32 还有一种连接数据库工具DBeaver DBeaver是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼容 JDBC 的数据库...

UESToj 64 CD Making ( 水题-程序员宅基地

CD Making DescriptionTom has NN songs and he would like to record them into CDs. A single CD can contain at most KK songs. In addition, Tom is very superstitious and he believes the number 13 would bri

问题账户需求分析-程序员宅基地

1.我在进行需求分析的时候首先会做的是仔细分析导致现有问题,用户需要我们的系统来为她解决什么问题,因为只有你找对了问题所在,你才能在为用户解决问题的事情中作对第一步,才能开始解决用户的问题。2.欠缺系统操作人员的具体操作流程。整个业务办理下来,业务员的具体流程等。3.开发系统的原型:  (1).功能:快速查询客户账户;分析一个客户是否为问题账户;给出一个问题账户的三..._登出账号太难找 你如何分析这个需求

CentOS7 关闭防火墙-程序员宅基地

CentOS6关闭防火墙使用以下命令,//临时关闭service iptables stop//禁止开机启动chkconfig iptables offCentOS7中若使用同样的命令会报错,stop iptables.serviceFailed to stop iptables.service: Unit iptables.service not loaded.这是因为Ce...