ubuntu开发环境搭建----dm365

ubuntu开发环境搭建----dm365

ubuntu开发环境搭建
minicom配置
安装命令:sudo apt-get install minicom
配置:
1 . 在终端中输入minicom以启动minicom;
2. 先按下Ctrl + a, 放开, 再按o, 出现配置菜单.
3. 选择 Serial port setup, 此时所示图标在“Change which setting”中,键入“A”,此时光标移到第A项对应处:串口COM1对应ttyS0, COM2对应ttyS1. (注意选择)
具体的配置信息如下所示:
Serial port setup [Enter]
+-------------------------------------------------------------+
| A -    Serial Device      : /dev/ttyUSB0      |
| B - Lockfile Location     : /var/lock          |
| C -   Callin Program      :             |
| D - Callout Program      -:              |
| E -    Bps/Par/Bits       : 115200 8N1       |
| F - Hardware Flow Control : No               |
| G - Software Flow Control : No               |
|                               |
|    Change which setting?                 |
+-------------------------------------------------------------+
注意: 如果没有使用USB转串口,而是直接使用串口,那么Serial Device要配置为/dev/ttyS0(如果使用USB转串口,则需要查看dev下是否存在ttyUSB0,若没有,则创建一个:mknod /dev/ttyUSB0 c 188 0) 
对波特率,数据位和停止位进行配置,键入“E”,波特率选为115200 8N1 (奇偶校验无, 停止位1),
硬/软件流控制分别键入“F”“G”并且都选NO.
在确认配置正确之后,可键入回车返回上级配置界面,并将其保存为默认配置。(即save setup as   dfl),之后重启minicom是刚才配置生效,在连上开发板的串口线后,就可在minicom中打印正确的串口信息了。

这时候可以打印串口的信息了,但是在通过串口用xmodem协议烧写内核时会提示没有xmodem协议。
所以还必须安装软件包:lrzsz
sudo apt-get install lrzsz
这时候就可以正常地用minicom通过串口烧写内核了。 
下次在输入minicon 即可直接进入。
命令minicom是进入串口超级终端画面,而minicom -s为配置minicom。
说明/dev/ttyS0 对应为串口0 为你连接开发板的端口。
注意:非正常关闭minicom,会在/var/lock下创建几个文件LCK*,这几个文件阻止了minicom的运行,将它们删除后即可恢复
组合键的用法是:先按Ctrl+A组合键,然后松开这两个键,再按Z键。另外还有一些常用的组合键。
(1)S键:发送文件到目标系统中;
(2)W键:自动卷屏。当显示的内容超过一行之后,自动将后面的内容换行。这个功能在查看内核的启动信息时很有用。
(3)C键:清除屏幕的显示内容;
(4)B键:浏览minicom的历史显示;
(5)X键:退出mInicom,会提示确认退出。
3、配置文件所在目录
Ctrl + A --> O
+-----[configuration]------+
| Filenames and paths   |
| File transfer protocols -|
| Serial port setup    |
| Modem and dialing    |
| Screen and keyboard   |
| Save setup as dfl    |
| Save setup as..     |
| Exit          |
+--------------------------+
选择"Filenames and paths"
+-----------------------------------------------------------------------+
| A - Download directory : /home/crliu                 |
| B - Upload directory   : /tmp                    |
| C - Script directory   :                      |
| D - Script program     : runscript                |
| E - Kermit program     :                     |
| F - Logging options                          |
|                                   |
|    Change which setting?                     |
+-----------------------------------------------------------------------+
(1)A - download 下载文件的存放位置(开发板 ---> PC)
开发板上的文件将被传输到PC机上的/home/crliu目录下。
(2)B - upload 从此处读取上传的文件(PC ---> 开发板)
PC机向开发板发送文件,需要发送的文件在/tmp目录下(PC机上的目录)。做了此项配置后,每次向开发板发送文件时,只需输入文件名即可,无需输入文件所在目录的绝对路径。
、NFS配置
按这个主要是为了linux之间的文件共享,我们可以在电脑上的linux直接看读写嵌入式开发板里面linux 的文件
1   安装NFS
Debian/Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:
$ sudo apt-get install nfs-kernel-server
(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)
2   配置/etc/exports
NFS挂载目录及权限由/etc/exports文件定义
将我的home目录中的/home/xxx/share目录让192.168.1.*的IP共享, 则在该文件末尾添加下列语句:
/home/xxx/share    192.168.1.*(rw,sync,no_root_squash)
或者:/home/xxx/share    192.168.1.0/24(rw,sync,no_root_squash)
运行 $ sudo exportfs -r 更新
3  运行 $ sudo /etc/init.d/nfs-kernel-server restart($ sudo nfs-kernel-server restart) 重启nfs服务
4  测试NFS
可以尝试一下挂载本地磁盘(假设本地主机IP地址为:192.128.1.1,将/home/xxx/share挂载到/mnt)
$ sudo mount -t nfs 192.168.1.1:/home/xxx/share /mnt
运行 $ df 看看结果
$ sudo umount /mnt
 可以使用一定的参数:
mount -o nolock,rsize=1024,wsize=1024,timeo=15 192.168.1.130:/tmp/ /tmp/
5  客户端挂载远程共享
mount -t nfs 192.168.0.***:/home/***/share /mnt/share
、FTP配置
ftp的软件有好多种:google一下:各种的一些大致特点:
wu-ftp:比较老牌,但针对它的攻击比较多,设置比较麻烦,但功能比较强大。
proftpd:能实现wu-ftp以及server-U的所有功能。安全性也较高,但比起vcftpd配置稍显复杂。
vsftpd:功能强大,配置也比较简单
ftp也可以
选vsftod是因为它安全、速度快
选proftpd偶尔看到webmin支持他,所以就用了,因为方便。
选Serv-U理由windows普遍,Serv-U方便,但最大问题是盗版,所以现在不大用了

vsftpd是大多是linux系统下自带的ftp软件,而且像FREEBSD等网站都是采用,而且配置起来简单很多,所以我们也采用了vsftpd

安装:
sudo apt-get install vsftpd
配置:
备份一下源文件:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup

然后修改
sudo vi /etc/vsftpd.conf

anonymous_enable=yes (允许匿名登陆)
dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
local_umask=022 (FTP上本地的文件权限,默认是077)
connect_form_port_20=yes (启用FTP数据端口的数据连接)*
xferlog_enable=yes (激活上传和下传的日志)
xferlog_std_format=yes (使用标准的日志格式)
ftpd_banner=XXXXX (欢迎信息)
pam_service_name=vsftpd (验证方式)*
listen=yes (独立的VSFTPD服务器)*
功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项 

开启匿名FTP服务器上传权限
在配置文件中添加以下的信息即可:

Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)
开启匿名服务器下传的权限
Anon_world_readable_only=no
注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限
(R)读-----下传 (W)写----上传 (X)执行----如果不开FTP的目录都进不去 
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)
功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传 

用户登陆限制进其它的目录,只能进它的主目录
设置所有的本地用户都执行chroot


Chroot_local_user=yes (本地所有帐户都只能在自家目录)
设置指定用户执行chroot


Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list
注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可 

限制本地用户访问FTP
Userlist_enable=yes (用userlistlai 来限制用户访问)
Userlist_deny=no (名单中的人不允许访问)
Userlist_file=/指定文件存放的路径/ (文件放置的路径)
注:开启userlist_enable=yes匿名帐号不能登陆 

安全选项
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)
查看谁登陆了FTP,并杀死它的进程
ps –xf |grep ftp
kill 进程号

配置的时候注意文件权限的问题,开启匿名和本地后,关键是文件权限的设置,为了给不同的用户分配不同的权限,可以生成一个组,例如ftpuser,然后赋予它何时的权限例如755,chroot()设置可以使得本地用户限制在登录时的目录,这对于安全很重要,可以这是local_root指定本地用户登录时的目录,负责为/home下相应目录。
、交叉编译工具链、gdb等配置
1安装交叉编译工具链,这里使用的Ti提供的mvltools5_0_0801921_update.tar.gz
  在目录/opt下建一文件夹mv_pro_5.0;命令如下:sudo mkdir mv_pro_5.0;然后进入此文件夹cd mv_pro_5.0把压缩包复制到该文件夹中,执行命令 sudo tar xzvf mvltools5_0_0801921_update.tar.gz解压。
解压后会生成montavista以及子文件夹,montavista及其子文件夹添加执行权限,执行如下命令:sudo chmod 777 montavista
2将编译器的路径加入环境变量
  具体做法是追加到/etc/profile中如下内容:
 export PATH="$PATH:/opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/bin" 	
 export PATH="$PATH:/opt/mv_pro_5.0/CodeSourcery/Sourcery_G++_Lite/bin  (32)
3测试交叉编译器
  输入命令 arm_v5t_le-gcc -v执行即可查看交叉编译器的版本。
                   arm-none-linux-gnueabi-gcc -v(32)
 另外还需要安装库的支持
安裝build-essential:
sudo apt-get install build-essential
安裝头文件和库:
sudo apt-get install libc6-dev
安装gdb 调试器:
sudo apt-get install gdb
安装安装图形界面调试器 ddd:
sudo apt-get install ddd
sudo apt-get install insight
安装 automake 工具
sudo apt-get install automake
sudo apt-get install autoconf
sudo apt-get install autogen
安装 indent
sudo apt-get install indent
调整 C 原始代码文件的格式。
sudo apt-get install libtool
GNU libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中。
(这些是为了将来写驱动和应用程序准备的)
sudo  apt-get install build-essential kernel-package  libncurses5-dev
、tftp服务器
安装:sudo apt-get install tftpd-hpa (tftp服务器)
  sudo apt-get install tftp-hpa (tftp客户端)
  sudo apt-get install xinetd (tftp客户端)
配置:
在/etc/xinetd.d/下建立一个配置文件tftp
sudo vi tftp
在文件中输入以下内容:
service tftp
{socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4}
保存退出

3、建立Ubuntu tftp服务文件目录(上传文件与下载文件的位置),并且更改其权限
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot -R

4、重新启动服务
sudo /etc/init.d/xinetd restart
至此Ubuntu tftp服务已经安装完成了,下面可以对其进行一下测试。


tftp服务器测试:
测试情况:

安装过程中出现的问题及原因
现象一:
tftp> get test.log
Transfer timed out.
原因:
tftpd服务没有启动


现象二:
tftp> get test.log
Error code 2: Only absolute filenames allowed
原因:
在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpa
cat /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="no"
OPTIONS="-s /home/tftpd -c -p -U 077 -u tftpd"
设置的时候只要将server_args=改为你自己设定的服务器文件夹就行了

现象三:
tftp> put ex070416.log
Error code 1: File not found
原因:
指定的文件不存在;或tftpd启动参数中没有指定-c选项,允许上传文件

现象四(最经常出现的问题):
tftp> put test2.txt
Error code 2: Access violation
原因:tftp服务器默认情况下,是可以下载文件的,当要上传文件时,需要在服务器文件夹下有相同名称,并且需要相应的读写权限,如果现在使用的是root用话,那么需要root的读写需要上传的文件的权限,同时在服务器文件夹下也需要读写权限,文件权限至少为666才可以.

正确做法例子:

文件下载
tftp服务器文件夹路径为:/tftproot
服务器下文夹为:
在tftproot下新建一个文件:
在其他文件夹下(如/opt)下载名叫test1.txt的文件,下载用的用户均为doyoo:

出现Permission denied的提示,说明doyoo这个用户对于/opt/没有写如文件的权限,那么需要root用户赋予这个权限,或者进入doyoo专用空间进行我们的测试
进入doyoo的用户空间:
这是发现我们可以进行tftp服务器的下载任务了

文件上传:
新建了一个名为:sendfile.txt的文件:

显然文件的权限属性为644

现在在tftp服务器中也同样新建一个名为sendfile.txt的文件,当然这里需要root用户赋予doyoo用户相应的写入权限,因为上传文件就是利用tftp覆盖住原来服务器就有的文件,

那么需要上传的文件在服务器中的映像对于用户doyoo来说当然也需要能写入的权限,所以同样的使用root改写sendfile.txt的权限,将其该为666.

可以看到上面已经完成了:

1.使用root用户修改doyoo用户对于tftproot文件夹的读写权限

2.tftproot文件夹下新建了一个名为sendfile.txt的文件。

3.sendfile.txt权限改为了666,不样的话,同样会出现Error code 2: Access violation的情况

完成上面的关键三步后,就可以上传文件了:

至此,tftp服务器的配置和测试完成了!
、其他一些工具
Vim安装:sudo apt-get install vim
sudo apt-get install libncurses5-dev
sudo apt-get install libasound2-dev


你可能感兴趣的:(ubuntu开发环境搭建----dm365)