一.关于开发板的连接以及连接等线路的功能
1.在windows下面的连接
1)所需的连线
.usb线
其中的一端连接USB
Slave,另一端接电脑的USB接口。
.窜口的连接
在我们的笔记本上面没有窜口所以就用USB转窜口
2)超级终端
超级终端提供了一个操作嵌入式系统的接口,所以我们安装了超级终端后就可以对系统进行一些配置。
.windows下面的超级终端
首先下载一个超级终端软件(Hypertrm)
其次是配置超级终端:
(1).打开超级终端
(2).为超级终端命名
(3).选择COM接口
(4).设置超级终端的通讯参数:
.每秒位数在这里选择:
115200
.数据流控制选择:
无
.数据位:8
.奇偶效验位:无
.停止位:1
2.linux下面的连接
1)所需的连线
.窜口连接
在我们的笔记本上面没有窜口所以就用USB转窜口
.网线的连接
交*网线
2)linux下面超级终端的设置(minicom)
(1)
首先在Linux终端输入lsusb命令查到设备信息:
[root@localhost ~]# lsusb
Bus 002 Device 001:
ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001
Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux
Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0
root hub
Bus 004 Device 005: ID 067b:2303 Prolific Technology, Inc. PL2303
Serial
(2)检查是否存在设备/dev/ttyUSB0,如果没有就建立一个:
mknod /dev/ttyUSB0 c 188
0
(3)进入终端输入minicom –s,进入minicom的设置模式。
a)
选择串口:在选择菜单中的“Serial port
setup”,按回车,再按“A”以设置 “Serial
Device”/dev/ttyUSB0(注意其中的USB是大写),按回车返回。
b)设置波特率:按“E”键进入设置“bps/par/Bits”(波特率)界面,如果按“I”以设置波特率为115200,按回车返回。(我使用的是2440的板子)
c)数据流控制:按“F”键设置“Hardware
Flow Control”为“NO”.
d)按Save setup as df1,保存设置。 按Exit from
Minicom退出Minicom.
(4)由于我们使用minicom作为超级终端控制路由器等设备, 而不是控制modem, 所以需要修改Modem and
dialing, 将Init string, Reset string, Hang-up string设置为空. 设置完成后选择Save setup as
dfl将当前设置保存为默认设置. 在配置菜单 选Save setup as df1保存(一定要记得这一步). 选Exit退出.下次在输入minicon
即可直接进入.
3.每根线等作用
(1)windows下面
.窜口线用来传输指令(如我们开机进入uboot画面时选择的指令和在终端里面操作的其它指令)
.usb线用来传输数据
在此需要一个usb传输工具配合使用(dnw)
(2)linux下面
.窜口用来传输指令
.交*网线用来传输数据(minicom上的传输功能)
二.启动的方式
1.windows下面
直接通过超级终端启动无需特别的设置
2.在linux下面的启动方式
(1)在无需任何设置情况下使用minicom直接启动
(2)通过nfs挂在进行启动
当我们通过NFS作为根文件系统时,开发板的硬盘就可以变得很大,因为我们使用的是我们等主机硬盘,这也是我们linux作为开发经常使用的方法。
3.通过NFS启动时等配置
1)配置网络文件系统NFS服务
(1)设置共享目录
运行命令:#gedit
/etc/exports
编辑NFS服务的配置文件(第一次打开时是空的),添加一下内容:
/opt/GTStudio/GT2440/root_qtopia
*(rw,sync,no_root_squash)
其中:
/opt/GTStudio/GT2440/root_qtopia表示nfs的共享目录,他可以作为开发板等根文件系统通过nfs挂载
*表示所有客户机都可以挂载在此目录
rw表示挂载在此目录的客户机对该目录有读写的权利
no_root_squash
表示允许挂载此目录的客户机享有该主机的root身份
(2)建立共享目录
.拷贝光盘中的root_qtopia_2.2.0.tar.gz文件到一mulu
.执行一下解压命令
#tar
xvzf root_qtopia_2.2.0.tar.gz -C /
(把文件解压到了/opt/GTStudio/GT2440/root_qtopia目录)
(3)启动和停止nfs服务
#/etc/init.d/nfs
start (启动)
#/etc/init.d/nfs stop
(停止)
(4)通过nfs启动开发板时等系统设置
.设置开发板启动模式跳线J1为Nand Flash
,连接好窜口线,网线;打开minicom,在开机或复位时迅速按下电脑的空格键,这样我们就进入uboot模式。
.选择菜单功能号【0】,出现设置启动参数菜单
.然后选择功能【1】([1]set
NFS boot
parameter)
其中设置主机IP(192.168.1.22),开发板等IP(192.168.1.70),设置子网掩码255.255.255.0,设置NFS文件系统所在目录:/opt/GTStudio/GT2440/root_qtopia
.设置完成选择功能号【s】保存参数到nandflash,然后重启开发板即可通过NFS启动系统了。
(*但是在此要注意nfs服务一定要启动而且正常运行)
三.系统的安装以及交*编译环境的建立(linux系统环境)
1.系统的安装
1).格式化nandflash
(1)连接好窜口,打开超级终端,上电启动开发板,进入BIOS功能菜单:
(2)选择功能号【9】出现格式化选项
(3)选项说明:
1:彻底格式化Nandflash
(包括坏快在内,不是很安全的一种格式化的方法),但在烧写了winCE
之后,再烧写linux时要使用此命令。
2).普通格式化。
q.返回上层菜单。
(4)选择功能号【1】,出现警告,出入y,完成格式化。
2).安装uboot
.在BIOS功能菜单里面选择功能号【1】,出现USB
host connected.Waiting a
ownload.此时通过minicom在电脑上下载u-boot_W35.bin的镜像进行安装。
3).下载开机画面
在BIOS主菜单中选择功能号【b】,下载开机画面
4).安装linux内核
在BIOS主菜单中选择功能号【3】,下载内核zImage
5).安装文件系统
在BIOS主菜单中选择功能号【6】,下载yaffs根文件系统印象文件,下载完毕会自动烧写根文件系统到Nandflash分区中。
2.交*编译环境的建立
1)两个arm-linux-gcc的作用
arm-linux-gcc-3.4.1用来编译uboot
arm-linux-gcc-4.3.3用来编译内核和Qtipia
并且两个版本都可以用来编译应用程序
2)安装
(1)把两个版本的压缩包放在一个目录下(如/tmp)
执行以下命令:
#cd
/tmp
#tar xvzf arm-linu-gcc-4.3.3.tgz - C /
#tar xvzf
arm-linu-gcc-3.4.1.tgz - C
/
执行以上命令把arm-linux-gcc(版本3.4.3和4.3.3)分别安装到/usr/local/arm/3.4.1和/usr/local/arm/4.3.3
(2)#mkdir
-p /opt/GTStudio/GT244(工作目录,备用)
(3)加入环境变量中
#gedit
/root/.bashrc
在最后加上两行:
#export
PATH=$PATH:/usr/local/arm/3.4.1/bin
export
PATH=$PATH:/usr/local/arm/4.3.3/bin
(其中#号是用来注释掉其中一个,因为两个不能一起使用,所以我们可以用#来回切换两个版本,但每次修改后必须重新启动系统,配置才生效)
四.uboot和内核的编译
1.uboot的编译
(1)编译器的选择arm-linux-gcc-3.4.1
(2)准备合适的uboot源代码(u-boot-1.1.6.tar.gz),进行解压
#tar
xvzf u-boot-1.1.6.tar.gz -C
/(解压到了/opt/GTStudio/GT2440/u-boot-1.1.6)
(3)配置LCD屏幕类型
修改/opt/GTStudio/GT2440/u-boot-1.1.6/include/configs/GTStudio.g文件
//#define
LCD_TFT PTO35
#define LCD_TFT WD_F3224WI
//define LCE_TFT
TX11D
(//为被注释掉,我们选的是WD_F3224WI)
(4)进入uboot主目录,配置uboot
#make
GTStudio_config
#make
(其中GTStudio_config为Makefile里面的目标,他的作用是选择开发板类型,Makefile文件里定义了很多开发板类型)
(5)生成u-boot.bin镜像
2.内核的编译
(1)选择编译器(arm-linux-gcc-4.3.3)
(2)内核的配置
#make
menuconfig
(3)编译过程
#make clean
#make dep
#make
zImage
五.嵌入式Linux启动过程中的问题积累
Dongas 07-12-19
1.Bad Magic
Number
## Booting image at 33000000 ...
Bad Magic Number
OMAP5912 OSK #
(tftp下载好kernel的uImage后就停止在这,不能启动kernel)
问题原因:启动参数设置错误,0x30000000处不可以执行。
有
的开发板sdram不是在0x33000000,所以不能把kernel
uImage下载到0x33000000中运行。如我之前的bootcmd参数为:setenv
bootcmd tftpboot 33000000
uImage\; bootm
33000000。但板子Omap5912的sdram地址在0x100000000,将参数改为setenv
bootcmd tftpboot
10000000 uImage\; bootm 10000000后便可以启动kernel了。
2.启动停止在"Starting kernel
..."
TFTP from server 192.168.167.170; our IP address is
192.168.167.15
Filename \'uImage\'
Load address: 0x10000000
Loading:
#################################################################
#################################################################
done
Bytes
transferred = 2025908 (1ee9b4 hex)
## Booting image at 10000000 ...
Image
Name: Linux-2.6.18-mh8_pro500-versatil
Image Type: ARM Linux Kernel Image
(uncompressed)
Data Size: 2025844 Bytes = 1.9 MB
Load Address:
30008000
Entry Point: 30008000
Verifying Checksum ... OK
OK
Starting
kernel ...
(卡在这里)
问题原因:多半是kernel没编译成功。
确认configure参数是否配置正确,是否选择了正确的目标编译平台,如smdk2410等。
3.不能启动kernel
Starting
kernel ...
Uncompressing
Linux.........................................................
....................
done, booting the
kernel.
问题原因:可能是Bootargs参数设置错误,确认bootargs设置是否正确。
4.不能挂载nfs
eth0: link
up
IP-Config: Complete:
device=eth0, addr=192.168.167.15,
mask=255.255.255.0, gw=192.168.167.254,
host=192.168.167.15, domain=,
nis-domain=(none),
bootserver=192.168.167.170, rootserver=192.168.167.170,
rootpath=
Looking up port of RPC 100003/2 on 192.168.167.170
Root-NFS:
Unable to get nfsd port number from server, using default
Looking up port of
RPC 100005/1 on 192.168.167.170
Root-NFS: Unable to get mountd port number
from server, using default
mount: server 192.168.167.170 not responding,
timed out
Root-NFS: Server returned error -5 while mounting
/work/nfs/rootfs_bluetooth_omap
VFS: Unable to mount root fs via NFS, trying
floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please
append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable
to mount root fs on
unknown-block(2,0)
问题原因:这种情况通常是nfs配置问题。
确
认uboot的bootargs参数里和nfs相关的ip地址信息设置是否正确,以及Host机/etc/exports配置无误,重起nfs服务,重新
尝试连接。另外还需要注意bootargs内console和mem两个参数的设置。kernel2.6后console最好设置为
ttySAC0,mem也要根据开发板实际情况设置正确。
5.文件系统不能启动问题
eth0:
link up
IP-Config: Complete:
device=eth0, addr=192.168.167.15,
mask=255.255.255.0, gw=192.168.167.254,
host=192.168.167.15, domain=,
nis-domain=(none),
bootserver=192.168.167.170, rootserver=192.168.167.170,
rootpath=
Looking up port of RPC 100003/2 on 192.168.167.170
Looking up
port of RPC 100005/1 on 192.168.167.170
VFS: Mounted root (nfs
filesystem).
Freeing init memory: 128K
/sbin/initKernel panic - not
syncing: Attempted to kill
init!
问题原因:制作的文件系统缺少运行busybox所需的libcrypt.so库,新版本会有缺库提示,老版本(1.60)没有。
注:运行一个busybox文件系统至少需要如下几个库:
ld-linux.so.x
libc.so.6
libcrypt.so.x
较新版本的busybox可能还需要
libm.so.6
libgcc_s.so.x
(x为版本号)
6.文件系统不能启动问题2
eth0:
link up
IP-Config: Complete:
device=eth0, addr=192.168.167.15,
mask=255.255.255.0, gw=192.168.167.254,
host=192.168.167.15, domain=,
nis-domain=(none),
bootserver=192.168.167.170, rootserver=192.168.167.170,
rootpath=
Looking up port of RPC 100003/2 on 192.168.167.170
Looking up
port of RPC 100005/1 on 192.168.167.170
VFS: Mounted root (nfs
filesystem).
Freeing init memory: 128K
Kernel panic - not syncing: No init
found. Try passing init= option to
kernel.
问题原因:对比一个可用的文件系统后发现,缺少了ld-linux.so.x库,文件系统里只有ld-linux.so.x的连接文件,少拷了库文件。
8.不能获得帐户UID信息
Could
not get password database information for UID of current process: User "???"
unknown or no memory to allocate password entry
Unknown username "root" in
message bus configuration file
Could not get password database information
for UID of current process: User "???" unknown or no memory to allocate password
entry
Failed to start message bus: Could not get UID and GID for username
"root"
问题原因:
情况一:系统帐户验证出现问题.怀疑是调用getuid、getguid时并没有返回正确值,可能是缺少帐户验证相关库,实际排查后发现,缺少libnss_files库。拷贝交*编译器的libnss_files库到文件系统后,启动文件系统成功。
情况二:系统没有root帐号。可以由whoami命令看出。
手动创建帐号。
#vi
/etc/passwd
root:x:0:0:root:/root:/bin/sh
kyo:x:500:500:kyo:/home/kyo:/bin/bash
添加组
#vi
group
root:x:0:root
9.
Freeing init memory: 128K
init started:
BusyBox v1.6.1 (2007-08-27 14:33:15 CST) multi-call binary
starting pid 834,
tty \'\': \'/etc/init.d/rcS\'
Cannot run \'/etc/init.d/rcS\': No such file or
directory
Please press Enter to activate this
console.
发现没有/etc/init.d/rcS文件系统一样能正常启动。看来rcS只是用来设置一些随机启动的参数,对文件能否正常运行关系不大。
注:这个不是错误,是偶然发现!
:)
相关文章
- 开发apple pay碰到的问题总结
- 初学tms320f2812的一些总结
- 百度数据开发面试题 Oracle行列转换Oracle行转列、列转行的Sql语句总结(转)链接中的基本都用到。1)wm_concat、listaggoracle拆分逗号分隔字符串 实现split博主这里没记住正则,开始傻傻的用循环暴力,后来面试的大叔让我随便用什么语言博主就写了个java的List数组拆分,后来想想完全不同,这里应该是String的split,用oracle的话就用正则,其他语言支持正则的都可以用正则。这是老夫版的,面试写的随意,使用方法名递归,估
- Hbase总结(五)-hbase常识及habse适合什么场景
- 3-2算法习题总结-二分
- 排序算法总结
- 3.串口连接开发板
- Android开发中网络代理设置实用总结
- 大中型软件项目开发步骤流程总结
- 接口测试重点和难点总结