Chinaunix首页 | 论坛 | 博客
  • 博客访问: 23705
  • 博文数量: 25
  • 博客积分: 1000
  • 博客等级: 少尉
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-12 09:09
文章分类
文章存档

2010年(25)

我的朋友
最近访客

分类: LINUX

2010-05-12 14:00:39

arm-linux 初接触
看着自己5个多月以前刚接触嵌入式的时候,一切都是那么的新鲜,配置好minicom也能给我带来如此大的成就感。呵呵~~经过这段时间的学习,发现离高手的距离实在太大,还得继续加油!


1 虚拟机minicom的配置+GURB error22
(2009-02-19 10:09:33)
[编辑][删除]

继续写。

1 先说个小插曲:本来我是安装了xp+ubuntu的,后来想着很多工作可能都要在xp下完成。当我想用虚拟机安装linux时,却发现提示空间不足,我也不知道该怎么办,一怒之下在xp下直接将linux分区删掉了 - -#。大家应该知道后果如何吧,估计许多同学都犯过类似的错误。

总结:不能直接在xp下删除Linux分区,具体原因是GRUB没有修改过来,linux分区删除以后,GRUB还是默认从linux启动的,必须先在Linux下将GRUB修改成从windows启动。所以当分区被删后,系统自然是不能启动了。一开机停留在GRUB error22的画面 - -#。

至于GRUB怎么修改,还要继续学习

 

2 GRUB error22的解决办法

    出现GRUB error22后,可怎么办呀。急的我像热锅上的蚂蚁。以为电脑硬盘可能会坏了。菜鸟就这样,做事不细心还老闯祸,呵呵~后来经过网上查阅,发现很多人都有这个问题呢。

我是这样解决的:笔记本开机后,按F2进入BIOS设置,将XP系统安装盘放入光驱,直接重装了。C盘的东西没了,其他的自然会在,但起码电脑可以启动了~~~不过网上还有一种方法,当系统盘放进光驱后,按R键进入控制台进行恢复,好像是进入到命令行模式输入fdisk /MBR .这个命令是恢复硬盘启动引导顺序。

很可惜,我没试过这种方法,还是重装直接了当!

 

3 到现在一切OK,虚拟机下安装了red flag6 - -# 支持了国产,呵呵~~界面跟windows超级像,比较山寨~

硬件环境:本本+S3C2410开发板

(1)首先在 wmware虚拟机中添加串口(如果没用虚拟机可以跳过这步)
先关闭虚拟机下的LINUX,然后设置一下虚拟机:在vm-〉settings-〉hardware里添加串口。具体添加哪个串口,最好先在windows下试试,看设备管理器里的串口设备提示,可以看见你究竟是com1 还是com2 或者com3。

 

(2)设置MINICOM
虚拟机启动进LINUX系统,看见red flag6界面了- -#。被雷到了,跟windows真的是太像了,呵呵~ 

开个终端,输入minicom,如果提示没有这个命令的话,去网上下载个包并安装好!
安装好后,还要对它做一些配置。终端输入su,先切换到管理者权限,再输入minicom -s

就跳出来配置画面了~

Filenames and paths
File transfer protocols
Serial port setup
Modem and dialing
Screen and keyboard
Save setup as dfl
Save setup as..
Exit
Exit from Minicom

设置第三第四项,分别是串口设置与MODEM设置

选择Serial port setup之后会弹出串口设置菜单选项,如下:

A - Serial Device : /dev/ttyUSB0    //提醒一下:LINUX设备的编号是从0开始的比如串口1也就是COM1在LINUX里的设备号叫ttyS0,这种情况是不用USB转接线,即直接插在串口上。因为本本没串口,用的是串口转USB的转接线与开发板相连。设备命名方式就变成了ttyUSBx的形式了。在Linux下Usb转串口的线几乎不需要驱动,插上以后在dev的目录下应该会有一个ttyUSB0的文件,假如有那么恭喜你了,你的这根线现在是可用的了。也可以输入dmesg |grep usb ,看看输出信息有没有pl2303、ttyUSB0什么的,我自己买的线不能用,在超级终端下还可以用呀,不明白为什么。害我折腾了一下午。。后来晚上用师兄的线试了试,居然就发现设备了。
B - Lockfile Location : ar/lock
C - Callin Program :
D - Callout Program :
E - Bps/Par/Bits : 115200 8N1 //115200是波特率,根据开发板的要求设置。
F - Hardware Flow Control : NO //硬件流设置为无
G - Software Flow Control : No
Change which setting?


MODEM设置:Modem and dialing

进入将A,B,K对应的选项内容全都清空,为什么要清空,我也不知道

 

设置完了,保存。Save setup as dfl。一定要先保存再退出哦~

开发板重新上电,可以启动了吧~~如果不行的话,给我留留言 我们一起讨论讨论。

这两天主要做了这些,每天呆在电脑前的时间都差不多超过了10个小时~~不过好在还是学到了点东西,这些可是书本上看不来的类~内容写的很散乱,以后再总结吧~

2 烧写nand flash及vivi编译(2009-02-18 23:17:54)
[编辑][删除]

今天碰到了两个难题:一个是vivi的编译;另一个就是虚拟机下minicom的配置。

原因:手头有一块可以运行的2410开发板,昨晚将它bon分区操作后,掉电- -#,这样nand flash里面的东西全没啦,需要重新烧进去。当时还满着急的,因为板子是老师的,我也是刚接触arm不久,遇到这等紧急问题自然是手足无措了。不过还是得硬着头皮干下去了。

 

目前的本本应该都没串口了。所以使用本本的同学,所有的烧写工作最好在超级终端中完成,不要用DNW!!!本人试验了多次。使用DNW时不稳定,电脑蓝屏重启或者出现错误。大概得知是usb串口转接线的驱动与windows冲突了。

 

烧写总共分三步,前提是 vivi kernel rootfs镜像文件你都有了~~呵呵~

1 vivi的烧写。

通过软件包种提供的SJF2410+JTAG并口线进行。首先安装GIVEIO驱动,具体怎么安装应该有说明的,这里就不用详细说明了吧。安装好驱动后并口线就可以使用了。在windows下运行cmd,打开Msdos界面,注意:要烧写的文件必须与sjf2410.exe在一个文件夹下。在dos命令行中输入相关命令找到这个文件夹所在位置,这个不用说了吧。很简单的--#。。。

然后运行sjf2410 /f:vivi vivi就是你要烧写的文件,如果烧写其它的。则换个名字。为什么前面要加个/f ,我也有点疑惑。

接下去会出现一些选择项,全都选0就行了~~最后会出现一串Eppppp..等字样,表示现在已经开始在烧flash了,等它完成后,选择2退出。

开发板重新上电,即可看到VIVI的启动信息!可以看到vivi启动以后的提示信息,press enter to start the linux now,any other key for vivi.因为开发板中内核还没烧进去呢,所以linux是不能启动的。按任意键进入vivi的命令行,vivi不仅是个bootloader,它本身还可以提供一些命令,充当下载工具。正是利用这点,可以在vivi的命令行下来下载内核与文件系统。

附:Vivi 是韩国mizi 公司开发的bootloader, 适用于ARM9处理器。 Vivi有两种工作模式:启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动linux内核,这时vivi的默认模式。在下载模式下,vivi为用户提供一个命令行接口,通过接口可以使用vivi提供的一些命令,见下表:

命令    功能

Load    把二进制文件载入Flash或RAM

Part    操作MTD分区信息。显示、增加、删除、复位、保存MTD分区

Param   设置参数

Boot    启动系统

Flash   管理Flash,如删除Flash的数据

 

2后面的操作很简单了,先利用vivi分区呗,分区后flash中的所有内容将被清空,因为开发板上电后,vivi从flash加载到了内存中运行,所以再进行分区命令后,它还是可以在内存中运行的。同理在终端还是可以看见vivi的界面。

分区操作完成后再重新将vivi烧回flash,因为开发板每次启动都是按flash加载到内存中的顺序进行的。

在vivi命令行下,输入load flash vivi x x代表xmodem协议;

完成后,再load flash kernel x;

load flash root x;

这里还有一个如何分区的问题,这个得参照个人的具体要求了。我也不太懂。

这些操作都是比较简单的。不懂可以baidu,得充分运用好搜索引擎,网络真是太强大了~

3 烧写工作都完成啦,再重新上电,Linux可以运行了哦,呵呵 习惯性的输入一个ls命令~~~~成功了吧~

 

 

难题1 vivi 编译

首先要有vivi源代码,解压后修改Makefile,
 安装交叉编译器

开发板目前还是用2.4的内核,对应的交叉编译器用2.95.3.据说是这样的~~、

在终端中运行,cd /home/tangcong/

tar -xjvf cross-2.95.3.tar.bz2

解压完成;将2.95.3文件夹移动到/usr/local/arm/下

首先要在/usr/local下建立arm目录咯

终端输入:cd /usr/local

mkdir arm

再执行 cd /home/tangcong

mv 2.95.3 /usr/local/arm 或者cp -R 2.95.3 /usr/local/arm 具体怎么操作,看个人喜好,不过不能进行复制粘贴的。~~~

修改/etc/profile

终端输入:vi /etc/profile,在最后一句输入export PATH=$PATH:/usr/local/arm/2.95.3/bin

保存退出。修改环境变量,bin文件夹就是存放所需命令的目录了。

再输入命令 source /etc/profile 或者重新运行终端都可以更改生效。

在执行arm-linux-gcc,成功了。很简单。

 

2 vivi也需要修改。将源码存放在自己的工作目录下。接下来就要修改vivi的makefile。

需要修改的地方有三个:CROSS_CMPILE,LINUX_INCLUDE_DIR,ARM_GCC_LIBS

根据网上各位同学的分享,可以得知将它们分别修改为:

CROSS_CMPILE  ==/usr/local/arm/2.95.3/bin/arm-linux-

LINUX-INCLUDE_DIR ==/usr/local/arm/2.95.3/include

ARM_GCC_LIBS  =/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3

修改好后,保存makefile,。

分别执行make distclean

make menuconfig:进入/vivi目录里,输入“make menuconfig”,开始选择配置。vivi源码应该已经配置好过了,这里不用怎么修改。根据自己需要稍作改动,然后保存退出。

make 如果不提示出错的话,在vivi目录下会生成一个二进制镜像文件。

 

看起来好像很简单,我也是花了一上午的时间才弄出来,头都大了。最后还是要感谢baidu,还有各位分享经验的同学们!!

附:vivi代码分析

vivi的代码包括arch,init,lib,drivers和include等几个目录,共200多条文件。

Vivi主要包括下面几个目录:

arch:此目录包括了所有vivi支持的目标板的子目录,例如s3c2410目录。

drivers:其中包括了引导内核需要的设备的驱动程序(MTD和串口)。MTD目录下分map、nand和nor三个目录。

init:这个目录只有main.c和version.c两个文件。和普通的C程序一样,vivi将从main函数开始执行。

lib:一些平台公共的接口代码,比如time.c里的udelay()和mdelay()。

include:头文件的公共目录,其中的s3c2410.h定义了这块处理器的一些寄存器。Platform/smdk2410.h定义了与开发板相关的资源配置参数,我们往往只需要修改这个文件就可以配置目标板的参数,如波特率、引导参数、物理内存映射等。

 

还有一个难题,明天再写 很晚了!

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