分类: 嵌入式
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文件夹,可先建一个):
CODE:
sudo mv 2.95.3/ /usr/local/arm
3.把交叉编译器的路径加入到PATH
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.使新的环境变量生效
CODE:
# source /etc/profile
5.检查是否将路径加入PATH的方法:
CODE:
echo $PATH
如果显示的内容中有/usr/local/arm/2.95.3/bin,说明已经将交叉编译器的路径加入PATH
自此,交叉编译环境安装完成。
下面我们就来测试一个简单的例子。
/*Hello.c*/
#include
main()
{
printf("hello
ubuntu!\n");
}
CODE:
arm-linux-gcc hello.c –o hello
arm-
linux-gcc是第一次出现,有人可能会问这个哪里来的,不妨打开刚才安装的交叉编译工具目录/usr/local/arm/2.95.3/bin
/可以发现里面有一个arm-linux-gcc文件,这个就是针对arm的CPU
的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_squash是NFS客户端分享目录使用者的权限,如果客户端使用的是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
首先介绍我们接下来要安装的三个包:
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安装配置
Minicom是linux下串口通信的软件,他的使用完全依靠键盘的操作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到他的高效与便利。下面将讲解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中打印正确的串口信息了。
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屏