Chinaunix首页 | 论坛 | 博客
  • 博客访问: 153080
  • 博文数量: 116
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2017-08-21 15:04
文章分类

全部博文(116)

文章存档

2014年(1)

2013年(13)

2012年(27)

2011年(49)

2010年(26)

分类: 嵌入式

2010-03-24 18:20:13

安装交叉编译环境(arm-linux-gcc)

1. 安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:

sudo apt-get install gcc g++ libgcc1 libg++ make gdb


2.
安装交叉编译器
下载交叉编译器cross的包,然后解压s

udo tar jxvf cross-2.95.3.tar.bz2


(
根据版本不同解压文件不同),然后将解压后的文件都转移到/usr/local/arm下(若/usr/local/下没有arm文件夹,可先建一个):

[Copy to clipboard]

CODE:

sudo mv 2.95.3/ /usr/local/arm


3.
把交叉编译器的路径加入到PATH

[Copy to clipboard]

CODE:

sudo vim /etc/bash.bashrc


在后面加入如下代码:

QUOTE:

if [ -d /usr/local/arm/2.95.3 ] ; then
PATH=/usr/local/arm/2.95.3/bin:"${PATH}"
fi


4.
使新的环境变量生效

[Copy to clipboard]

CODE:

# source /etc/profile


5.
检查是否将路径加入PATH的方法:

[Copy to clipboard]

CODE:

echo $PATH


如果显示的内容中有/usr/local/arm/2.95.3/bin,说明已经将交叉编译器的路径加入PATH
自此,交叉编译环境安装完成。
下面我们就来测试一个简单的例子。
/*Hello.c*/
#include

main()
{
printf("hello ubuntu!\n");
}
程序输好以后确认无误,保存。进入程序文件所在目录执行:

[Copy to clipboard]

CODE:

arm-linux-gcc hello.c –o hello


arm- linux-gcc
是第一次出现,有人可能会问这个哪里来的,不妨打开刚才安装的交叉编译工具目录/usr/local/arm/2.95.3/bin /可以发现里面有一个arm-linux-gcc文件,这个就是针对armCPU gcc编译器了。以后用其它编译工具链式也可以通过这种方法看看其编译器是什么了。编译好了以后就可以下载到目标机进行测试了。当然也可以先在PC机上 测试正误。用gcc hello.c –o hello就可以生成PC机上程序了,在运行./hello 就可以发现终端显示hello!字样。用arm-linux-gcc编译的程序在PC机上是不能运行的,运行后给出错误报告:无法执行二进制文件。说明经 过交叉编译环境编译出的文件是硬件可执行的二进制代码文件。

ubuntu下搭建NFS

1.安装nfs服务器端和客户端
服务器端:sudo apt-get install portmap nfs-kernel-server
客户机端:sudo apt-get install portmap nfs-common
2.
配置共享文件
编辑/etc/exports,在其中增加要共享的目录
sudo gedit /etc/exports
配置
/ubuntu *(rw,sync,no_root_squash)
/ubuntu
是要共享的目录,*代表允许所有的网络段访问,rw是可读写权限,sync是资料同步写入内存和硬盘,no_root_squashNFS客户端分享目录使用者的权限,如果客户端使用的是root用户,那么对于该共享目录而言,该客户端就具有root权限
保存。
sudo exportfs -ra
(它可以重新扫描/etc/exports,使用户修改/etc/exports配置文件不必重启NFS服务 )
3.
重启服务
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-kernel-server restart

4.
服务器安装完之后可以这样测试。
$showmount -e hostname
(显示hostname/etc/exports里设定的共享目录)
如果看到这样的信息就说明成功了。
abc@abc-desktop:/$ showmount -e
Export list for abc-desktop:
/ubuntu *

4.
在客户机端创建用于挂载的目录。
客户机设置的挂载目录必须已经存在
sudo mkdir /mnt/share
sudo chmod 777 /mnt/share/
6.
客户就可以加载了
sudo mount 192.168.0.58:/ubuntu /mnt/share



tftp

首先介绍我们接下来要安装的三个包:
1.xinetd:xinetd
是一 个守护进程,用于处理对各种服务的请求,xinetd监控的服务请求出现时,xinetd会使用/etc/xinetd.conf文件 读取/etc/xinetd.d目录中的配置文件,然后,根据所请求服务的xinetd.conf文件内容,启动相应的程序.

2.tftpd :服务端
3.tftp:
客户端

第一步:安装相关软件包

sudo apt-get install tftpd (服务端)
sudo apt-get install tftp
(客户端)
sudo apt-get install xinetd

第二步:建立配置文件

cd /etc/xinetd.d/
vim tftp
输入

QUOTE:
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、建立tftp服务文件目录
mkdir /tftpboot
4
、从新启动服务
/etc/init.d/xinetd restart

提示:在执行了这个命令后,可能显示一些信息,但是不会影响使用(具体什么原因我也不太清楚),下面的步骤顺利通过就可以了。

安装完成!测试方法:
/tftpboot 目录下随便放个文件abc

然后 运行tftp 服务器ip(比如tftp 192.168.1.1), 进入tftp命令行

输入get abc 看看是不是能把文件下下来,如果可以就可以了,也可以put 文件上去。


1. sudo apt-get install tftp-hpa tftpd-hpa

2. cd /
      sudo mkdir /tftpboot
       sudo chmod 777 /tftpboot

3. sudo in.tftpd -l /tftpboot
   
这样tftp服务器就启动了,下面可以做一个测试

4. cd /tftpboot
    touch test
   
建立一个文件

5. cd /home/usrname
   
登录另一个目录

6.
tftp 192.168.0.59
   
换成自己的ip

   >
get /tftpboot/test

如果能够得到文件,那么就成功了。

PS
:不要忘了 sudo apt-get install xinetd
       // sudo apt-get install  netkit-inetd


关于不能上传(put)的解决

打开目录 /etc/xinetd.d/
新建文件tftp
tftp
内容:

service
tftp
{
    disable = no
    socket_type     = dgram
    protocol            = udp
    wait                    = yes
    user             = root
    server          = /usr/sbin/in.tftpd
    server_args     = -s /tftpboot -c
    per_source      = 11
    cps         = 100 2
}

重新启动服务:

sudo /etc/init.d/xinetd restart

sudo in.tftpd -l /tftpboot

可能出现的问题:

 (1)  tftp> get zImage
      Error:
Access denied

   解决:  chmod 777 -r /tftpboot/

           sudo /etc/init.d/xinetd restart

 (2)tftp> get aaa
Error code 1: File not found

  解决:  修改配置文件/etc/inetd.conf:

     将该行的“tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /var/lib/tftpboot”中的/var/libtftpboot 改成 /tftpboot

     然后sudo /etc/init.d/xinetd restart

 

minicom安装配置

Minicomlinux下串口通信的软件,他的使用完全依靠键盘的操作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到他的高效与便利。下面将讲解Minicom的安装和配置。
安装:
sudo apt
get install minicom

配置:
在使用minicom之前, 首先要保证你对串口有读/写的权限. 我们知道, Linux的设备对应于/dev/目录中的某个文件. 串口COM1对应ttyS0, COM2对应ttyS1. 使用这个命令来看你对COM1的权限:   

$ ls -l /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 2006-05-04 06:52 /dev/ttyS0   

可以看到, 它的属主是root.

正如在WINDOWS中要配置超级终端, 在使用minicom之前, 先要对串口进行配置.

   1.
运行$ sudo minicom
   2.
先按下Ctrl + a, 放开, 再按o, 出现配置菜单.
   3.
选择 Serial port setup, 此时所示图标在“Change which setting”中,键入“A”,此时光标移到第A项对应处:串口COM1对应ttyS0, COM2对应ttyS1. (注意选择)
      
对波特率,数据位和停止位进行配置,键入“E”,波特率选为115200 8N1 (奇偶校验无, 停止位1),
      
/软件流控制分别键入“F”“G”并且都选NO.
        
在确认配置正确之后,可键入回车返回上级配置界面,并将其保存为默认配置。(即save setup as dfl),之后重启minicom是刚才配置生效,在连上开发板的串口线后,就可在minicom中打印正确的串口信息了。

kermit

1、安装

 到下载C-Kermit最新版本,cku211.tar.gz
 习惯把程序放在/opt下,在root状态下:
 
 mkdir /opt/kermit
 cp cku211.tar.gz /opt/kermit
 cd /opt/kermit
 tar zxvf cku211.tar.gz            //解压
 rm -rf cku211.tar.gz              //用完就可以删了,节约空间     

 make linux                         //编译链接
 cp wermit /usr/local/bin/kermit
 which kermit
->/usr/local/bin 安装完成了;

2、设置

 kermit                           //启动

 set line /dev/ttyS0              //目标com1

 set speed 115200                 //波特率115200

 set carrier-watch off

 set handshake none

 set flow-control none

 robust

 set file type bin

 set file name lit

 set rec pack 1000

 set send pack 1000

 set window 5

或者:

 建立或修改存在的 ~/.kermrc


#----- kermrc for /dev/ttySn -------------------
# ADI blackfin bf533 ezkit U_boot kermit setting
 
set line /dev/ttyS0
define sz !sz \%0 > /dev/ttyS0 < /dev/ttyS0
set speed 57600
set carrier-watch off
set prefixing all
set parity none
set stop-bits 1
set modem none
set file type bin
set file name lit
set flow-control none
set prompt "Linux Kermit> "

#---------end------------------------------------

设置完成,连接

 connect

就可以使用了.

   或直接使用命令: kermit -c   //这样就省去了再次输入connect

上面的配置文件是网上的,我的是:

set line /dev/ttyS0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
c

3、切换:

回到kermit:Ctrl + \ ,再按c

跳回串口控:输入c,即connect命令。


4、发送文件:

kermit中输入connect后,跳到u-boot串口界面。

输入loadb 0xAddress 回车

按下 ctrl + \ ,再按c,切换到kermit。

输入命令:send /home/zImage

kermit开始传送数据了,并可以看到传送进度,发送完后,输入c,再回到u-boot界面,然后,再输入:

go 0xAddress

内核开始运行.



烧写的准备工作



1
:命令 print
   
可以用上面的命令查看 服务器ip 子网掩码等信息

2
:命令 setenv  serverip  [ip地址]
   
假如服务器本身的ip地址为192.168.0.100 而你通过敲入上面的print命令查看到服务器ip地址为192.168.0.178这时就需要用  setenv  serverip  192.168.0.100进行设置


烧写内核

首先,从服务器把文件下载到终端上
命令:tftp  30008000  zImage
(30008000
为文件存储在终端上的起始地址)
其次:烧写内核
命令:bon write 30008000 文件大小  kernel
(文件大小会显示在上步下载过程中的打印信息中)


烧写文件系统



(
烧写步骤和上面烧写内核的步骤非常相似)

首先,从服务器把文件下载到终端上
命令:tftp  30008000  root_mic.cramfs
(30008000
为文件存储在终端上的起始地址)
其次:烧写文件系统
命令:bon write 30008000 文件大小 fs
(文件大小会显示在上步下载过程中的打印信息中)

烧写uboot

(烧写步骤和上面烧写内核及文件系统的步骤非常相似)

首先,从服务器把文件下载到终端上
命令:tftp  30008000  [文件名]
例如:tftp  30008000  boot.bin
(30008000
为文件存储在终端上的起始地址)
其次:烧写uboot
命令:bon write 30008000 文件大小 uboot

注意:此处的文件大小必须是4000的整数倍

如何识别各种版本的uboot

根据超级终端上的以下信息,我们可以识别各种版本的uboot

R... T... (h)#         
代表: 黑白4.2

R... T... (TC)#         
代表: 真彩 5.6

R...T... #            
代表: 伪彩 5.7




阅读(2039) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~