南京邮电大学通信与信息工程学院
实验报告
实验名称:实验一基于ADS开发环境的设计 实验二嵌入式Linux交叉开发环境的建立
实验三嵌入式Linux环境下的程序设计
课程名称嵌入式系统B
班级学号B13010711 姓名马俊民
开课时间 2015/2016学年第1学期
实验一基于ADS开发环境的程序设计
一、 实验目的
1、学习ADS开发环境的使用;
2、学习和掌握ADS环境下的汇编语言及C语言程序设计;
3、学习和掌握汇编语言及C语言的混合编程方法。
二、 实验内容
1、编写和调试汇编语言程序;
2、编写和调试C语言程序;
3、编写和调试汇编语言及C语言的混合程序;
4、编写程序测试多寄存器传送指令的用法。
三、 实验原理
ADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。
ADS用于无操作系统的ARM系统开发,是对裸机(可理解成一个高级单片机)的开发。ADS具有极佳的测试环境和良好的侦错功能,它可使硬件开发工作者更深入地从底层去理解ARM处理器的工作原理和操作方法,为日后自行设计打基础,为BootLoader的编写和调试打基础。
1.ADS软件的组成
ADS由命令行开发工具、ARM运行时库、GUI开发环境(CodeWarrior和AXD)、实用程序、支持软件等组成。
2.GUI开发环境
ADS GUI开发环境包含CodeWarrior和AXD两种,其中Code Warrior是集成开发工具,而AXD是调试工具。
使用汇编语言进行编程简单、方便,适用于初始化硬件代码、启动代码等。 汇编语言具有一些相同的基本特征:
1. 一条指令一行。
2. 使用标号(label)给内存单元提供名称,从第一列开始书写。
3. 指令必须从第二列或能区分标号的地方开始书写。
4. 注释必须跟在指定的注释字符后面,一直书写到行尾。
在ARM汇编程序中,每个段必须以AREA作为段的开始,以碰到下一个AREA作为该段的结束,段名必须唯一。程序的开始和结束需以ENTRY和END来标识。
嵌入式C语言设计是利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计。为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则。ATPCS就是ARM程序和Thumb程序中子程序调用的基本规则。
四、 实验过程与关键代码分析
1. 创建项目工程
在File菜单中选择New命令,打开一个新建工程对话框。在Project选项卡下,选择ARM Executable Image, 然后在Project name文本框里输入项目名称,点击确定。弹出工程窗口。
选择File菜单中的New命令,选择File标签页,在File name文本框中输入要创建的文件名。汇编程序以.s结尾,c程序以.c结尾。在Location文本框中指定文件的存放位置,选中Add to Project,在Targets中选中DebugRel,单击确定关闭窗口。
2.用汇编语言设计程序实现10的阶乘
AREA EXAMPLE, CODE, READONLY
ENTRY
start
MOV R0, #10
MOV R1, #1
LOOP
MUL R0, R0, R1
SUB R0, R0, 1
CMP R0, #1
BHI LOOP
END
在这个程序中,我们首先对R0和R1赋值,将R0作为一个变量,而R1作为一个存贮阶乘值的寄存器。在每进行一次乘法之后,将R0减1。同时在做完减法后进行判断,如果此时R0大于1,则返回继续乘法,否则结束程序,输出结果。
3.用调用子程序的方法实现1!+2!+3!+?+10!,代码如下:
asmp.s
AREA JC, CODE, READONLY
EXPORT JCP
ENTRY
JCP
ADD R3, R0, #1
MOV R2, #1
MOV R1, #1
LOOP MUL R0, R1, R2
MOV R1, R0
ADD R2, R2, #1
CMP R2, R3
BNE LOOP
NOP
NOP
MOV PC, LR
END
PROGC.c
#include <stdio.h>
Extern int JCP(int N)
int main()
{
int res=0;
int m=10;
int i;
for (i=1;i<=m;i++)
res=res+JCP(i);
printf(“The result =%d\n”,res);
return 0;
}
在这个程序中,主程序由c语言完成作求和,子程序由汇编语言写成作阶乘。
5.实现字符串的逆序复制TEXT1=“HELLO”=>TEXT2=“OLLEH”
AREA invstring, CODE, READONLY
start
ADR R1, TEXT1
ADR R2, TEXT2
MOV R3, #0
LOOP
LDRB R0, [R1], #1
ADD R3, R3, #1
CMP R0, #0
BNE LOOP
SUB R1, R1, #2
LOOP1
LDRB R0, [R1], #-1
STRB R0, [R2], #1
SUB R3, R3, #1
CMP R3, #1
BNE LOOP1
MOV R5, #&55
TEXT1
TEXT2
NOP =“HELLO”,0 ALIGN =“OELLH” END
五、实验小结
在这次实验中,学会了如何使用汇编程序进行编程。对汇编程序编程一些基本的要求有了一定的了解,学习了C语言的语法和在其中调用汇编程序的方法。学会了利用CodeWarrior IDE开发C和ARM汇编代码。学会了在AXD中进行代码调试的方法和过程,对AXD的调试有初步的了解。
,
实验二嵌入式Linux交叉开发环境的建立
一、实验目的
1、掌握嵌入式Linux交叉开发环境的建立方法
2、 学习和掌握Linux常用命令
3、学习和掌握vi编辑器的使用
二、实验内容
1、搭建嵌入式Linux交叉开发环境
2、熟悉Linux的常用命令
3、熟悉vi编辑器的常用命令
三、实验原理
Linux系统是UNIX系统的分支,是UNIX的微机版。Linux具有异常丰富的驱动程序资源,支持各种主流的硬件设备与技术。Linux包含了现代的UNIX操作系统的所有功能特性,这些功能包括多任务、虚拟内存、虚拟文件系统、进程间通信、对称所处理器、多用户支持等。
Vi编辑器是所有UNIX和Linux下的标准编辑器。它包含3种工作模式。 嵌入式系统是专用的计算机系统,它对系统的功能、可靠性、成本、体积、功耗等有严格的要求。大部分嵌入式系统没有大容量存储设备,一般不能安装大型开发软件,系统的开发需要采用交叉开发模式。
四、实验过程与关键代码分析
实验用的是UP-NetARM2410-S试验箱,里面配有三星的芯片S3c2410X。 打开电脑上VMWare软件,在Windows系统下启动虚拟机里的Linux系统。接着需要
1. 宿主机的环境搭建
下载并运行VMWare,根据向导创建一台新虚拟机并选择Linux作为客户操作系统,再根据向导安装RedHat Linux 9.0。
2. 虚拟机中启动Linux操作系统
使用root登陆,用户名为root,密码为123456。之后对共享文件设置进行调整:打开settings界面,打开shared folders功能,同时将路径设置
到有课前下载的软件的目录下。
3. 开发工具软件的安装
(1)安装gcc
打开Linux后,打开终端窗口,在共享的目录下找到install.sh并运行,命令如下:
ls
. / install.sh
安装程序将自动建立/arm2410s目录,并将所有的开发软件包安装到
/arm2410s 目录下,同时自动配置编译环境,建立合适的符号链接。安装完成后在目录/opt/host/armv4l/bin/下应该能看到主编译器。
(2)配置PATH路径
vi .bash.profile
将里面PATH变量改为PATH=$PATH:$HOME/bin:/opt/host/armv41/bin/; 存盘后执行
source .bash_profile
以后armv4l-unknown-linux-gcc将被自动搜索到
4. 宿主机上的开发环境配置
(1)配置IP地址
ifconfig eth0 192.168.0.121
命令配置了宿主机的IP地址。然后打开网络配置窗口,重新探测MAC地址。 重新激活。
(2)关闭防火墙
单击“Red”菜单→“系统设置”→“安全级别”→打开“安全级别配置”窗口,选择“无防火墙选项。”
(3)配置NFS。
单击“Red”菜单→“系统设置”→“服务器设置”→“服务”,在“服务配置”窗口中勾选nfs,单击“开始”
(4)NFS设置
单击“Red”菜单→“系统设置”→“服务器设置”→“NFS服务器”,打开“NFS服务器配置”窗口,设置NFS共享。
然后在NFS服务器中增加主机IP地址的链接许可和目录。完成配置。
5. 目标机的信息输出
Windows系统下,“开始”→“所有程序”→“附件”→“通讯”→“超级终端”,新建一个通信终端。区号、电话号码随意输入。设置每秒位数为“115200”,数据位为“8”,无奇偶校验,停止位为“1”,无数据流控制。单击“确定”。
6. 程序的运行
打开超级终端,启动Linux,屏幕显示:
[/mnt/yaffs]
在超级终端上执行挂载命令: [/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs
挂载成功后可执行程序。
五、实验小结
在这次实验中,学会建立Linux交叉开发环境,学会了ls和vi,cd等常用的Linux命令,并掌握了Vi编辑器的使用方法。同时知道了如何在搭建失败时寻找错误进行排错。
实验三嵌入式Linux环境下的程序设计
一、实验目的
1、掌握嵌入式Linux环境下的程序设计方法
2、学会编写Makefile文件
二、实验内容
1、熟悉嵌入式教学实验箱的使用
2、编写C程序和Makefile文件
3、编译程序产生可执行程序
4、完成主机的挂载和程序的执行
三、实验原理
在嵌入式Linux环境下的程序设计方法有一下几个步骤:
1. 编写源程序
2. 编写Makefile文件
3. 编译程序
4. 运行和调试程序
5. 将生产的可执行文件加入文件系统。
前三个步骤在宿主机上完成,后面的步骤在目标机上完成。
四、实验过程与关键代码分析
1. 建立工作目录
mkdir hello
cd hello
2. 编写源程序
用vi编辑器编辑Hello.c文件
vi Hello.c
在Vi中输入源程序如下:
#include <stdio.h>
main()
{
printf(“hello world \n”);
}
3.编写Makefile文件
vi Makefile
在vi中编辑Makefile文件如下:
CC= armv4l-unknown-linux-gcc
EXEC = hello
OBJS = hello.o
CFLAGS +=
LDFLAGS+= -static
all: $(EXEC)
$(EXEC): (OBJS)
$(CC) $(LDFLAGS) –o $@ $(OBJS)
clean:
-rm –f $(EXEC) *.elf *.gdb *.o
4.编译程序
在hello目录下运行“make”来编译程序。
make clean
make
编译成功后,生成可执行文件Hello.o。
5.下载调试
在宿主机上启动nfs服务,并将/arms2410s设置为共享目录。接下来启动超级终端,建立通讯,挂载。
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs
挂载成功后,进入/mnt/nfs,再进入/mnt/nfs/hello,直接运行刚刚编译生成的可执行文件Hello.o,查看运行结果
cd hello
. /hello
可以看见“Hello world”
只需要挂载一次便可,只要实验箱没有重启,就可以一直保持连接。反复修改、编译、调试,直至程序调试通过。
6.可执行文件加入文件系统
程序调试通过后,可以把可执行文件拖放到usr/bin目录下,然后使用mkcramfs制作工具生成新的文件系统。当系统启动后,就可以在相应目录下执行可执行程序hello.
五、实验小结
在这次实验中,学会了在嵌入式Linux环境下设计程序。同时知道了如何对目标机进行挂载。以及如何在发现挂载不成功寻找错误进行修改。另外在编译文件时需要注意的也都有所了解。
实验四多线程程序设计
一、实验目的
1、
2、
二、实验内容
1、
2、
3、
4、
三、实验原理
四、实验过程与关键代码分析
五、实验小结
3+
第二篇:ARM嵌入式系统实验报告
郑州航空工业管理学院
嵌入式系统实验报告
20 15 – 20 16第 1 学期
赵成,张克新
院 系: 电子通信工程系
姓 名:
专 业: 物联网工程
学 号:
电子通信工程系
20##年6月制
实验一 ARM体系结构与编程方法
一、实验目的
了解ARM9 S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统,能在ADS1.2 IDE中进行ARM汇编语言程序设计。
二、实验内容
1.ADS1.2 IDE的安装、环境配置及工程项目的建立;
2.ARM汇编语言程序设计(参考附录A):
(1)两个寄存器值相加;
(2)LDR、STR指令操作;
(3)使用多寄存器传送指令进行数据复制;
(4)使用查表法实现程序跳转;
(5)使用BX指令切换处理器状态;
(6)微处理器工作模式切换;
三、预备知识
了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。
四、实验设备
1. 硬件环境配置
计算机:Intel(R) Pentium(R) 及以上;
内存:1GB及以上;
实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器;
2. 软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2;
集成开发环境:ARM Developer Suite (ADS) 1.2。
五、实验分析
1.安装的ADS1.2 IDE中包括 CodeWarrior 和 AXD Dubugger 两个软件组件。在ADS1.2中建立 ARM Executable Image(ARM可执行映像) 类型的工程,工程目标配置为 Debug ;接着,还需要对工程进行 目标设置 、 语言设置 及链接器设置;最后,配置仿真环境为 ARMUL 仿真方式。
2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。
; 文件名: 111307326.s
AREA XTF,CODE,READONLY
ENTRY
CODE32
SART MOV R1,#1
MOV R2,#2
ADD R0,R1,R2
HALT B HALT
END
声明代码段XTF
标识程序入口
声明32位ARM指令
设置参数
R0<---R1+R2
死循环
结束程序段
3.列写出使用LDR、STR指令的汇编程序,并在关键语句后面给出相应的注释。
AREA XTF,CODE,READONLY ;声明代码段XTF
ENTRY ;标示程序入口
CODE32 ;声明32位ARM指令
START LDR R0,=1 ;加载数据
LDR R1,=2
LDR R3,=ADDR_1 ;载符号地址
ADD R2,R0,R1 ;R2<---R0+R1
STR R2,[R3] ;R2--->[R3]
;数据空间定义
AREA Data_1,DATA,ALIGN=2
ADDR_1 DCD 0
END ;结束
4.“使用多寄存器传送指令进行数据复制”汇编程序分析。
LDR R0,=SrcData ; 执行后,R0的值是标号SrcData的地址
LDR R1,=DstData ; 执行后,R1的值是标号DstDatad 的地址
LDMIA R0,{R2-R9} ; LDMIA中的指令后缀IA表示 Increase After,即 每次传送后地址加4,[R0]-->R2,[R0+4]-->R3,…,[R0+28]-->R9
STMIA R1,{R2-R9} ;执行后,程序实现的功能是 [R1]<--R2,[R1+4]<--R3,
…,[R1+28]<--R9
5.在“使用查表法实现程序跳转”的汇编程序中,指令LDR PC,[PC,R2]采用的是什么寻址方式?作为基址的寄存器PC的值是多少?作为指令指针的PC又指向哪条指令?这个指令与流水线执行的关系是什么?(选做)
答: 1)基址加变址寻址;2)PC<----[PC+R2],即PC中存放的是当前PC值加上寄存器R2中的内容形成的有效地址中的操作数;3)对于ARM指令集,PC总是只想当前指令的下两条指令,即PC的值为当前指令的地址值加上8个字节(每条指令占4个字节)。
6.通过运行及观察“使用BX指令切换处理器状态”汇编程序实验,回答ARM指令与Thumb指令之间是如何实现状态切换的?AXD Debugger调试环境中的哪个寄存器指示了ARM微处理器当前的指令状态?同时,在程序中添加从Thumb指令切换到ARM指令的代码。(选做)
答:1)BX指令使用寄存器作为参数,当32位操作数寄存器的第0位的值为1时,执行BX指令后,ARM处理器从16位半字节对齐ARM指令状态切换到32位字对齐Thumb指令状态;当32位操作数寄存器的第0位为0时,ARM处理器从Thumb指令状态切换到32位ARM指令状态。
2)CPSR的value值为nzcvqIFt_SVC时为ARM32指令状态;为nzcvqIFT_SVC时为Thumb16指令状态
3) AREA XTF,CODE,READONLY ;声明代码段XTF
ENTRY ;标识程序入口
CODE32 ;声明32位ARM指令
SART MOV R1,#1 ;设置参数
MOV R2,#2
ADD R0,R1,R2 ;R0<---R1+R2
;HALT B HALT
LDR R3, =Into_Thumb+1 ;将Into_Thumb地址值加1,再赋给R3
;产生跳转地址并且设置最低位
BX R3 ;地址值位0为1,将进入THUMB状态
;Branch Exchange 进入Thumb状态
CODE16 ;Thumb状态下的子函数,16位对齐
Into_Thumb
MOV R5,#3
MOV R6,#4
ADD R4,R5,R6
LDR R3, =Bach_to_ARM ;将Back_to_ARM 地址值赋给R3
;产生字对齐的跳转地址,最低位被清除,即bit0为0
BX R3
;Branch Exchange 返回到ARM状态,此时运行在ARM指令集环境里
CODE32 ;ARM状态下的子函数
Bach_to_ARM
MOV R8,#3
MOV R9,#4
ADD R7,R8,R9
END
7.观察“微处理器工作模式切换”程序的运行,按顺序写出ARM工作模式切换过程中依次出现的工作模式,同时,通过观察回答ARM微处理器是否能从用户模式切换到特权模式?(选做)
答:
1)Usr(用户)àSys(系统)àFiq(快中断)àSvc(管理)àAbt(终止)àIrq(中断)àUnd(未定义)
2)用户模式不能直接切换到其他处理模式(特权模式),特权模式可以自由切换到其他处理器模式。
程序:
AREA Work_mode_switch,CODE,READONLY ;
ENTRY ;入口
CODE32
;**************************************************
;now_in_svc_mode
;ARM处理器默认工作在SVC模式M=10011
;切换原理:CPSR最低8位I、F、T、M位用作控制位,当异常出现时改变控位。
; 其中,中断标志位I、F;指令状态标志T;工作模式位M[4:0]
; 通过软件控制模式位M即可控制ARM工作状态。
;************************************************
;into_Sys_mod
;系统模式下可运行具有特权的操作系统任务,与用户模式类似,但可以直接切换到其他模式。
MRS R0,CPSR ;复制CPSR到R0
BIC R0,R0,#0x1F ;清除R0的后5位
ORR R0,R0,#0x1F ;设定R0的最后5位为11111
MSR CPSR_c,R0 ;把R0装在到CPSR,切换到系统模式
MOV R13,#1 ;对系统模式下的R13赋值(R0-R14)
;into_Fiq_mode
;用于高速数据传输或通道处理,Fiq异常响应时进入此模式
MRS R0,CPSR ;复制CPSR到R0
BIC R0,R0,#0x1F ;清楚R0的后5位
ORR R0,R0,#0x11 ;设定R0的最后5位为10001
MSR CPSR_c,R0 ;把R0装在到CPSR,切换到快中断模式
MOV R13,#2 ;对快中断模式下的R13赋值(R8-R14)
;into_Svc_mode
;操作系统使用的保护模式,系统复位和软件中断响应时进入此模式
MRS R0,CPSR ;复制CPSR到R0
BIC R0,R0,#0x1F ;清楚R0的后5位
ORR R0,R0,#0x13 ;设定R0的最后5位为10011
MSR CPSR_c,R0 ;把R0装在到CPSR,切换到管理模式
MOV R13,#3 ;对快管理模式下的特有缓冲器R13赋值(R13-R14)
;into_Abt_mode
;可用于虚拟存储及存储保护,当数据或指令预取终止时进入该模式
MRS R0,CPSR ;复制CPSR到R0
BIC R0,R0,#0x1F ;清楚R0的后5位
ORR R0,R0,#0x17 ;设定R0的最后5位为10111
MSR CPSR_c,R0 ;把R0装在到CPSR,切换到数据访问终止模式
MOV R13,#4 ;对快数据访问终止模式下的特有缓冲器R13赋值(R13-R14)
;into_Irq_mode
;用于通用的中断处理,Irq异常时进入此模式
MRS R0,CPSR ;复制CPSR到R0
BIC R0,R0,#0x1F ;清楚R0的后5位
ORR R0,R0,#0x12 ;设定R0的最后5位为10010
MSR CPSR_c,R0 ;把R0装在到CPSR,切换到外部中断模式
MOV R13,#5 ;对快外部中断模式下的特有缓冲器R13赋值(R13-R14)
;into_Und_mod
;可用于支持硬件协处理器的软件仿真,当未定义的指令执行时进入该模式
MRS R0,CPSR ;复制CPSR到R0
BIC R0,R0,#0x1F ;清楚R0的后5位
ORR R0,R0,#0x1b ;设定R0的最后5位为11011
MSR CPSR_c,R0 ;把R0装在到CPSR,切换到未定义模式
MOV R13,#6 ;对未定义模式下的特有缓冲器R13赋值(R13-R14)
;into_Usr_mod
;正常程序工作模式,不能直接切换到其他模式,功能最弱。
MRS R0,CPSR ;复制CPSR到R0
BIC R0,R0,#0x1F ;清楚R0的后5位
ORR R0,R0,#0x10 ;设定R0的最后5位为10000
MSR CPSR_c,R0 ;把R0装在到CPSR,切换到用户模式
MOV R13,#7 ;对未定义模式下的特有缓冲器R13赋值(R13-R14)
HALT B HALT
END
六、遇到的问题及解决方法
在ADS中编写汇编程序如下:
MAKE时提示下面的错误:
检查源程序,发现第一行AREA是关键字,且最后两行注释用的分号是中文状态输入,修改程序如下:
(徐腾飞)
实验二 VMWARE虚拟机与Linux环境的建立
一、实验目的
熟悉嵌入式系统开发环境的建立,掌握VMWARE-Linux环境的安装步骤;能够配置Samba服务、设置VMWARE虚拟机共享功能,学会Windows系统环境与Linux系统环境共享资源的基本方法。
二、实验内容
1.在Windows系统环境中安装VMWARE7.0虚拟机软件;
2.在VMWARE7.0虚拟机中安装Linux RHEL AS4操作系统;
3.设置VMWARE虚拟机提供的共享功能;
4.在Linux系统中建立Samba服务;
三、预备知识
了解VMWARE、VirtualBox、Virtual PC等虚拟机软件的相关知识;了解Linux操作系统的安装方法及基本操作方法。
四、实验设备
1. 硬件环境配置
计算机:Intel(R) Pentium(R) 及以上
内存:1GB及以上
实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器
2. 软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2
虚拟机:VMware WorkStation 7
Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)
五、实验分析
1.查看实验设备中配备的PC机,将下列硬件型号填写正确:
l CPU型号:AMD A4-3305M APU with Redeon(tm) HD Graphics
l 内存大小:6G
l 硬盘空间:500G
根据实验的实际操作,将下列软件版本号填写正确:
l VMWARE: 7.0.0 build-203739
l Linux系统: Redhat.Enterprise.Linux.Advanced.Server.4
l Windows系统: Windows 7 Ultimate, 64-bit 6.1.7601, Service Pack 1
2.在VMWARE软件中安装RHEL4虚拟机时,出现网络连接方式的设置界面,如下图,提供了四个选项:桥接(bridged networking)、NAT(Network Address Translation)、host-only及无需连接。应该选择哪种方式?并解释其他方式的特点。
图 设置网络连接方式
答:选择NAT方式。
桥接:将虚拟机视为与物理机在网络中处于同一地位的独立主机,可以实现虚拟机与主机,虚拟机与互联网的相互通信。但主机与互联网的连接中断后,虚拟机与主机无法正常通信。
NAT:虚拟机与主机中的虚拟网卡VMnet8同网段,以VMnet8作为网关,通过物理机访问外网。可以实现主机与虚拟机相互通信,虚拟机单相访问外网。
Host-only:虚拟机与VMnet1同网段。可以与主机相互通信,但不能与外网相互访问。
3.根据在Linux系统中的实际操作方法,按实验步骤简要说明Samba服务的设置与测试过程。
答:设置步骤:先在Applications>System Settings>Security Leval内关闭Linux中的防火墙;然后在Applications>System Settings>Sever Settings>Smaba内添加共享文件路径,并设置共享文件属性;再接着Applications>System Tools>Network Device Control>Configuren内设置etho的IP地址为192.168.1.160与VMnet8、物理机本地网络连接IP在同一网段;设置虚拟及连接方式为NAT。
测试:物理机内打开“运行”窗口,输入\\192.168.1.160,弹出共享文件对话框,说明配置成功。
4.参考教材中的实践指导部分,在Linux系统环境中安装VMWARE Tools软件,观察安装过程中的交互提示。安装成功后,系统给出了什么提示信息?怎样从VMWARE的VM菜单中设置Windows-Linux共享功能?
答:1)安装成功后出现“Enjoy”提示。
2)VM>Setting…>Options>Shared Folders>Add…>Next,选择物理机中的共享文件路径,确定,设置Always enabled,点击OK。
六、遇到的问题及解决办法
答:
问题:设置好本地静态IP地址后,能正常登陆QQ聊天工具,但无法用浏览器通过域名与互联网通信
解决方法:仔细检查本地物理机连接配置,发现没有设置DNS服务器,正确设置DNS服务器后问题解决
实验三 Linux RHEL AS4开发基础
一、实验目的
熟悉Linux操作系统开发环境,掌握Linux操作系统中的基本操作命令;掌握Vi编辑器的使用;掌握GCC工具的使用;掌握make及Makefile文件的使用。
掌握建立嵌入式交叉编译环境的方法。
二、实验内容
1. 在Linux操作系统中执行常用的文件命令、目录命令、多用户命令与安全性命令以及其它常用命令;
2. 使用Vi编辑器建立一个hello.c源文件,并存放在指定目录中;
3. 使用GCC工具编译hello.c源文件,并在计算机上执行得到的hello可执行程序;
4. 使用Vi编辑器建立一个Makefile文件,存放在指定目录中。使用make命令重新编译hello.c源文件;
5. 建立嵌入式交叉编译环境;
6. 使用嵌入式交叉编译工具重新编译hello.c源文件,并使用readelf命令查看得到的hello可执行程序的文件头信息;
三、预备知识
了解Linux操作系统的基本操作方法;了解嵌入式系统基本的开发方法。
四、实验设备
1. 硬件环境配置
计算机:Intel(R) Pentium(R) 及以上
内存:1GB及以上
实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器
2. 软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2
虚拟机:VMware WorkStation 7
Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)
五、实验步骤
1.Shell指令练习
打开Terminal窗口,使用su指令切换到root用户,使用echo指令在屏幕上显示“Experiment 1 on my ARM Course from dztx, zzia.\n Now, Go Go Go!”。
使用pwd指令查看当前路径,使用cd指令切换到/home目录下,再使用ls指令浏览该目录,使用mkdir指令在当前路径下建立zcnet目录及zzia目录,随即使用rmdir指令删除zzia目录。
将当前路径下的readme.txt使用cp指令复制到/home/zcnet目录中,然后,使用cd指令切换进入/home/zcnet目录中,使用ls指令查看readme.txt是否存在。使用mv指令将readme.txt重命名为demo.txt,再使用cat指令查看,然后,使用rm指令将demo.txt删除。
使用who指令、finger指令查看当前用户的登陆信息,使用time指令、date指令显示系统的时间、日期。
将上面指令练习中用到的指令进行分类。
文件命令:
mkdir、rmdir、cp、cat、rm、mv
目录命令:
pwd、cd、ls、
多用户命令与安全性命令:
su、who、finger、
其它常用命令:
time、date
2.使用VI编辑器编写hello.c源代码,并存放在/home/zcnet目录中。然后,使用GCC编译hello.c源代码,并在计算机上运行得到的相应可执行程序。
3.使用VI编辑器编写编译上述hello.c的Makefile源代码,并存放在/home/zcnet目录中。然后,使用make指令编译hello.c源代码,并在计算机上运行得到的相应可执行程序。
4.用Shell指令依次列出实验中嵌入式交叉编译环境的建立步骤,并写出测试安装效果的指令。
使用嵌入式交叉编译工具重新编译hello.c源文件,并使用readelf命令查看得到的hello可执行程序的文件头信息。
使用chmod指令设置hello为可执行程序,在PC机上再次运行hello程序,观察执行情况,并给出相关的分析。
答:
1)
定义变量并解压:
[root@localhost home]# arm=arm-linux-tools-20061213.tar.gz
[root@localhost home]# tar xzvf $arm
配置环境变量并查看:
[root@localhost home]# export PATH=$PATH:/home/sur/local/bin
[root@localhost home]# echo $PATH
测试安装效果:
[root@localhost home]# armv=arm-linux-gcc
[root@localhost home]# $armv -v
2)
#cd /home/zcnet
#arm-linux-gcc –o hello –c hello.c
# readelf
3)
执行命令:
#chmod a+x hello
#
#./hello
执行结果:
bash: ./hello: cannot execute binary file
分析:相同代码使用不同编译工具编译结果不同,适用的运行平台也不同。arm-linux-gcc编译的结果适用于ARM平台。故该编译结果不能在计算机上运行。
六、遇到的问题及解决办法
答:
1) 问题:使用echo指令时不能争取输出,提示bash: !": event not found。
解决:将双引号内文本信息的最后一个感叹号与双引号用空格隔开。
2) 问题:使用date指令时不能实现相应功能。
解决:输入命令时输入错误,将date输成了data,该更后问题解决。
实验四 嵌入式系统仿真软件SKYEYE的应用
一、实验目的
熟悉使用嵌入式系统仿真软件SKYEYE开发嵌入式系统的方法。
二、实验内容
1. 安装嵌入式系统仿真软件SKYEYE-1.2.4版本;
2. 安装SKYEYE的测试工具包skyeye-testsuite-2.3.tar.bz2;
3. 使用SKYEYE的配置文件skyeye.conf并测试SKYEYE的执行;
三、预备知识
了解电路专业相关的仿真软件;了解SKYEYE软件基本的应用方法。
四、实验设备
1. 硬件环境配置
计算机:Intel(R) Pentium(R) 及以上
内存:1GB及以上
实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器
2. 软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2
虚拟机:VMware WorkStation 7
Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)
五、实验步骤
1.根据实际的实验操作过程,列出在安装嵌入式系统仿真软件SKYEYE-1.2.4时用到的各个指令。
答:
cd /home
tar –xjvf skyeye-testsuit-2.3.tar.bz2
cd skyeye-1.2.4
make
2.使用tar指令解压SKYEYE的测试工具包skyeye-testsuite-2.3.tar.bz2,再使用相关指令进入ARM S3C2410A的测试目录,使用cat指令查看skyeye.conf的内容。
列出上述实验过程的具体指令
答:
cd /home
tar xjvf skyeye-testsuite-2.3.tar.bz2
cd skyeye-testsuite-2.3
ls
cd u-boot
ls
cd smdk2410
ls
cd u-boot-1.2.0
ls
cat skyeye.conf
3.运行skyeye.exe程序,使用帮助查看常用的参数及相应的格式,在下面写出运行的指令及skyeye.exe的命令行参数格式。
答:
指令:
cd /home/skyeye-1.2.4/binary
./skyeye –h
参数格式:
SkyEye [options] -e program [program args]
Options:
-e exec-file the (ELF executable format)kernel file name.
-l load_address,load_address_mask
Load ELF file to another address, not its entry.
-b specify the data type is big endian when non "-e" option
-d in GDB Server mode (can be connected by GDB).
-c config-file the skyeye configure file name.
-h The SkyEye command options, and ARCHs and CPUs simulated.
4.在skyeye-testsuite-2.3测试包提供了测试ARM S3C2410A的测试目录,配置文件选用提供的skyeye.conf,使用skyeye.exe程序仿真运行U-Boot程序及Linux内核的运行。
写出实验时的测试步骤,并简单描述U-Boot程序及Linux内核的运行效果。
答:
1)U-boot程序的仿真运行:
cd /home/skyeye-testsuite-2.3
ls
cd u-boot
ls
cd smdk2410
ls
cd u-boot-1.2.0
ls
cp * /home/skyeye-1.2.4/binary
cd /home/skyeye-1.2.4/binary
./skyeye –c skyeye.conf –e u-boot
运行效果:
首先加载一些过程信息,包括开发板的配置信息,存储空间的分配信息等,最后进入u-boot的控制界面,出现“SMDK2410#”的提示符,说明u-boot中的穿行通信接口应可以正常工作了。
2)Linux内核的仿真运行
cd /home/skyeye-testsuite-2.3
ls
cd linux
ls
cd s3c2410
cd s3c2410x-2.6.14/
ls
cp * /home/skyeye-1.2.4/binary
cd /home/skyeye-1.2.4/binary
./skyeye –c skyeye.conf –e vmlinux
运行效果:
屏幕中先是输出了skyeye的配置信息,然后显示了内核的启动信息。Linux操作系统内核启动完毕后,进入shell界面,接受用户命令的输入。
六、遇到的问题及解决办法
答:
问题:以上操作在实验室台式机上正常,但在个人笔记本上仿真运行U-boot时出现“Segmentation fault”错误,即每次在分配存储空间是出现错误。
解决:通过阅读安装包内的README文件,得知skeyey编译不成功,或编译后无法正常工作时,使用make命令的时候可以加入一些选项参数,例如:
不允许DBCT:make NO_DBCT=1;不支持LCD:make NO_LCD=1;不支持BFD库:
make NO_BFD=1;不支持网络设备:make NO_NET=1。
我使用make NO_BFD=1编译skyeye,可以正常仿真运行U-boot。
实验五 U-Boot的编译与仿真
一、实验目的
掌握U-Boot的编译,掌握在Skyeye环境下调试U-Boot的方法
二、实验内容
1. 编译引导程序U-Boot;
2. 在Skyeye环境下调试U-Boot;
3. 练习U-Boot的常用命令;
三、预备知识
了解Bootloader程序的原理;了解U-Boot的常用命令。
四、实验设备
1. 硬件环境配置
计算机:Intel(R) Pentium(R) 及以上
内存:1GB及以上
实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器
2. 软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2
虚拟机:VMware WorkStation 7
Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)
五、实验步骤
1.根据实际的实验操作过程,编译U-Boot,并列出编译U-Boot时用到的各个指令。
答:
[root@localhost home]#cd /home/embeddedsystem
[root@localhost embeddedsystem]#tar –xjvf u-boot-1.3.2.tar.bz2
[root@localhost embeddedsystem]#cd u-boot-1.3.2
[root@localhost u-boot-1.3.2]#make smdk2410_config CROSS_ROMPILE=arm-linux-
2.分析U-Boot编译完成后生成的映像文件,共有几种,分别是哪种格式。
答:
编译完成后,可以得到以下文件:
System.map:U-Boot映像的符号表
u-boot.bin:U-Boot映像原始的二进制格式
u-boot:U-Boot映像的ELF格式
u-boot.srec:U-Boot映像的S-Record格式
3.编写Skyeye的配置文件,在Skyeye环境下对U-Boot进行仿真,写出仿真U-Boot所使用的指令。
答:
(1)skyeye.conf内容配置为:
# skyeye config file for S3C2410X
arch:arm
cpu: arm920t
mach: s3c2410x
# physical memory
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00100000
mem_bank: map=M, type=RW, addr=0x30000000, size=0x04000000
#mem_bank: map=M, type=RW, addr=0xc1600000, size=0x00a00000
# all peripherals I/O mapping area
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020
#net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=0:4:3:2:1:f, ethmod=tuntap,hostip=10.0.0.1
lcd: type=s3c2410x, mod=gtk
#load_addr:base=0x30000000, mask=0xFFFFFF
#dbct:state=on
(2)将编译成生成的elf格式文件u-boot和 skyeye.conf一同复制到/home/embeddedsystem/skyeye-1.2.4/binary文件夹下。
[root@localhost home]#cd /home/embeddedsystem
[root@localhost embeddedsystem]#cd skyeye-1.2.4
[root@localhost skyeye-1.2.4]#cd binary
[root@localhost binary]#./skyeye –e u-boot
4.练习U-Boot的常用命令,列出三个U-Boot的常用命令并对其功能进行描述。
答:
bdinfo:打印开发板信息;
erase:擦出Flash Rom
reset:执行CPU复位
run:运行已定义的U-boot命令
savenv:保存设定的环境变量
setenv:设置环境变量
version:显示版本信息
六、遇到的问题及解决办法
答:无
实验六 Linux内核的配置、编译与调试
一、实验目的
掌握Linux内核的配置、编译,掌握在Skyeye环境下调试Linux内核的方法
二、实验内容
1. 配置Linux内核;
2. 编译Linux内核;
3. 在Skyeye环境下调试Linux内核;
三、预备知识
了解Linux2.6版本内核;了解Linux内核的配置过程。
四、实验设备
1. 硬件环境配置
计算机:Intel(R) Pentium(R) 及以上
内存:1GB及以上
实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器
2. 软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2
虚拟机:VMware WorkStation 7
Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)
五、实验步骤
1.启动内核配置菜单,选择make menuconfig方式进行配置。列出linux内核的配置方式及每种配置方式的特点,列出启动内核配置菜单所使用的指令。
答:
(1)配置方式:
1) 文本框对话框配置方式。
命令:make .congfig。特点:内容细致,但浪费时间,适合专业的开发人员。
2) 基于图形界面的配置方式。
命令:make xcongfig。特点:项目显示直观,但需要xwindows图形界面相关软件的支持。
3) 目录方式。
命令:make menuconfig。特点:方便直观,基于字符界面,和curses图形界面。
2.配置linux2.6版本内核,列出基本的配置项目都有哪些。
(2)本实验使用目录方式
[root@localhost home]#cd /home/embeddedsystem
[root@localhost embeddedsystem]#tar -xjvf linux-2.6.14.tar.bz2
[root@localhost embeddedsystem]#cd linux-2.6.14
[root@localhost linux-2.6.14]#vi Makefile
在打开的文件中修改第192行与第193行,改为:
ARCH ?=arm
(指定编译的内核架构) CROSS_COMPILE ?=/home/usr/local/bin/arm-linux-
(指定交叉编译工具)
[root@localhost linux-2.6.14]#cp arch/arm/configs/smdk2410_defconfig .config
[root@localhost linux-2.6.14]#make ARCH=arm menuconfig
3.编译Linux内核,列出编译Linux内核所使用的指令,列出编译之后生成的文件及每个文件的用途。
答:
(1)
[root@localhost linux-2.6.14]#cd /home/linux-2.6.14
[root@localhost linux-2.6.14]#make ARCH=arm CROSS_COMPILE=arm-linux-
(2)
1)vmlinux:位于根目录下,是在内核源码顶层目录生成的内核映像,属于elf格式的目标文件。它是内核在虚拟空间中运行时代码的真实反映。因为Linux内核运行在虚拟地址空间,所以vmlinux中的“vm”表示“Virtual Memory”。
2)zImage:位于Linux-2.6.14安装目录中arch/arm/boot/路径下,是可引导的、压缩的内核映像,属于二进制文件,是vmlinux的压缩的可执行的Linux内核映像。zImage采用gzip压缩格式,包含gzip的解压缩函数。
在使用SKYEYE软件仿真Linux内核运行时,一般加载vmlinux映像文件;在将Linux内核的映像文件下载到评估电路板上时,一般下载的是zImage压缩的内核映像文件
3)Image:与zImage生成位置相同,也是二进制文件。
4.编写Skyeye的配置文件,在Skyeye环境下对linux内核进行仿真,列出仿真所使用的指令及所需要的文件。
答:
(1)skyeye.conf配置文件的内容为:
#skyeye config file for s3c2410
cpu:arm920t
mach:s3c2410x
#physical memory
mem_bank:map=M,type=RW,addr=0xc0000000,size=0x00800000
mem_bank:map=M,type=RW,addr=0xc0800000,size=0x00800000,file=./initrd.img
mem_bank:map=M,type=RW,addr=0xc1000000,size=0x01000000
#all peripherals I/O mapping area
mem_bank:map=I,type=RW,addr=0x48000000,size=0x20000000
mem_bank:map=I,type=RW,addr=0x19000300,size=0x00000020
net:type=cs8900a,base=0x19000300,size=0x20,int=9,mac=0:4:3:2:1:f,ethmod=tuntap,hostip=10.0.0.1
lcd:type=s3c2410x,mod=gtk
#dbct: state=on
(2)复制编译得到的elf格式内核文件vmlnux和测试文件系统initrd.img到/home/embeddedsystem/skyeye-1.2.4/binary下,然后在终端执行:
[root@localhost linux-2.6.14]#cd /home/zcnet/skyeye-1.2.4/binary
[root@localhost binary]#./skyeye -e vmlinux
六、遇到的问题及解决办法
答:无
实验七 根文件系统的制作
一、实验目的
掌握BusyBox的编译与安装,掌握根文件系统的制作过程,掌握在Skyeye环境下调试根文件系统的方法
二、实验内容
1. 编译安装BusyBox;
2. 制作根文件系统;
3. 在Skyeye环境下调试根文件系统;
三、预备知识
了解BusyBox;了解根文件系统的相关知识。
四、实验设备
1. 硬件环境配置
计算机:Intel(R) Pentium(R) 及以上
内存:1GB及以上
实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器
2. 软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2
虚拟机:VMware WorkStation 7
Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)
五、实验步骤
1.配置BusyBox。
列出配置BusyBox所使用的指令及配置的内容。
答:
1)进入BusyBox的配置菜单
[root@localhost busybox-1.2.0]#make menuconfig
2)配置内容
Busybox配置菜单中,主要包括BusyBox的全局配置:BusyBox Settings和小程序:Applets。先配置全局配置中的各项内容,再配置小程序中的内容。
(1) 通用选项
(2) 编译选项
a. 配置为将BusyBox编译成静态链接的可执行文件,运行时不需要共享库支持
b. 配置Linux操作系统中的交叉编译工具所在路径
(3) 调试选项
(4) 安装选项
a. 配置不将编译得到BusyBox文件放到原系统的/usr下,BusyBox将被编译为静态链接的可执行文件。
b. 配置安装BusyBox时将各个命令安装为指向BusyBox的软连接
c. 指定编译BusyBox时生成文件的安装目录
(5) 设置“BusyBox Library Tuning”项
3) 设置小程序(Applets)项
(1) 添加shell命令
(2) 添加气动工具
(3) 选择配置Linux系统中常用工具和命令。
4)保存设置
2.编译与安装BusyBox,列出编译与安装BusyBox所使用的指令。
答:
1)编译BusyBox
[root@localhost busybox-1.2.0]#make
2)安装BusyBox
[root@localhost busybox-1.2.0]#make install
3.制作根文件系统,列出根文件系统的制作过程。
答:
1)创建根文件系统的dev目录:
[root@localhost BusyBox-1.2.0]#mkdir _install/dev
[root@localhost BusyBox-1.2.0]#cp /dev/ttyS0/dev/console/dev/ram0 _install/dev/ -a
2)创建根文件系统的etc等目录及配置文件,编写make_rootfs.sh来实现该部分的操作。
make_rootfs.sh内容如下:
echo "steps of make_rootfs"
echo "1:creat folders"
mkdir -pv etc etc/init.d home initrd lib proc root tmp var
echo "2:etc/inittab"
cat>etc/initab<<"EOF"
::sysinit:/etc/ini.d/rcS
::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
EOF
echo "3:creat etc/init.d/rcS"
cat>etc/init.d/rcS<<"EOF"
#!/bin/sh
/bin/mount -t proc none /proc
/sbin/ifconfig lo 127.0.0.1 up
/sbin/ifconfig eth0 10.0.0.2 up
hostname skyeye-zgxbc
mkdir /var/tmp
mkdir /var/log
mkdir /var/run
mkdir /var/lock
cat /etc/mod
#/sbin/ifconfig eht0 172.17.51.171 netmask 255.255.0.0 up
#route add default gw 172.17.1.2
/bin/ash
EOF
echo "3(1):chmod etc/init.d/rcS"
chmod 777 etc/init.d/rcS
echo "4:creat etc/mtab"
cat>etc/mtab<<"EOF"
rootfs/rootfs rw 0 0
/dev/root/nfs rw,v2,rize=4096,hard,udp,nolock,
addr=172.15.51.4 0 0
none/proc proc rw 0 0
EOF
echo "5:creat etc/motd"
cat>etc/motd<<"EOF"
Welcome to
ARMLinux for Skyeye
For further information please check:
http://www.skyeye.org/
EOF
3)将编写的make_rootfs.sh脚本文件放在BusyBox的安装目录_install中,然后进入安装目录运行该脚本
[root@localhost BusyBox-1.2.0]#cd _install
[root@localhost _install]#./make_rootfs.sh
根文件系统的完整结构就在安装目录_install中建立出来了
4.在Skyeye环境下对根文件系统进行仿真,观察输出的提示信息是否与文件etc/motd的内容相符。
答:相符,如图所示:
六、遇到的问题及解决办法
答:无
实验八 嵌入式系统基础应用实作
一、实验目的
掌握向嵌入式开发板中下载U-Boot的方法,掌握Linux内核及根文件系统的烧写方法
二、实验内容
1. 向嵌入式开发平台下载U-Boot;;
2. 向嵌入式开发平台烧写Linux内核;
3. 向嵌入式开发平台烧写根文件系统;
三、预备知识
了解U-Boot下载过程中所用到的工具;了解内核及根文件系统的烧写过程,。
四、实验设备
1. 硬件环境配置
计算机:Intel(R) Pentium(R) 及以上
内存:1GB及以上
实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器
2. 软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2
虚拟机:VMware WorkStation 7
Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)
五、实验步骤
1.查看Linux系统对mtd_nand Flash存储设备的分区信息。分区信息位于:arch/arm/plat-s3c24xx/common-smdk.c 或者arch/arm/mach-s3c2410/common-smdk.c源代码中。
2.安装并口驱动
l 首先将并口驱动目录下的GIVEIO.SYS文件复制到C:\WINDOWS\system32\drivers目录下面;
l 然后打开控制面板里的添加硬件,选择“是,我已经连接了此硬件”;
l 下一步,选择添加新的硬件设备;
l 下一步,选择“安装我手动从列表选择的硬件”;
l 下一步,选择“端口(COM和LPT)”;
l 选择从磁盘安装,在路径中选择并口驱动目录下的giveio.ini文件,然后按提示一直进行下去就可以了;
l 最后打开设备管理器,在设备管理器的端口里能看到GIVEIO端口,就表示安装正常了。
3.下载U-BOOT
使用sjf2410-s.exe下载U-BOOT程序到开发板上的存储芯片中。
列出下载U-Boot的过程及所使用的指令
答:
1) 把并口线插到pc机的并口,并把并口的另一端与实验箱上端的
UP-LINK相连,(确保跳线1、2相连即使用UP-LINK)打开2410-CL电源(12V)。
2) 在d盘新建一目录bootloader,把sjf2410-s.exe(在flash-uboot目录下)和要烧写的u-boot.bin。打开CMD窗口运行如下命令:
C:\Users\Zgxbc>D:
D:\>cd bootloader
D:\ bootloader>sjf2410-s.exe /f:u-boot.bin
3) 在此后出现的三次要求输入参数,第一次是让选择Flash,选0,然后回车,第二次是选择jtag对flash的两种功能,也选0,然后回车,第三次是让选择起始地址,选0,然后回车,等待大约3-5分钟的烧写时间
4) 当u-boot 烧写完毕后选择参数2,退出烧写。如下图所示。烧录后关闭2410-CL,拔掉并口线与开发板的连线。
4.设置超级终端
列出所设置超级终端的参数
答:
1) 为所建超级终端取名为ARM。
2) 选择ARM开发平台实际链接的PC机串口(本实验用的是COM1)
3) 设置每秒位数:115200
4) 数据位:8
5) 奇偶校验位:无
6) 停止位:1
7) 数据流控制:无
5.建立tftp服务器
运行loader目录中的tftpd32.exe程序,在windows上建立tftp服务器。
6.烧写内核
列出烧写内核所使用的指令。
答:将uImage放入loader目录中,然后运行:
SMDK2410 # setenv severip 169.254.83.241
SMDK2410 # setenv ipaddr 169.254.83.240
SMDK2410 # saveenv
SMDK2410 # tftpboot 0x30008000 169.254.83.241:uImage
SMDK2410 # nand erase 0x80000 0x20000
SMDK2410 # nand write 0x30008000 0x80000 0x200000
7.烧写根文件系统
列出烧写根文件系统所使用的指令。
答:将root.cramfs放入loader目录中,然后运行:
SMDK2410 # tftpboot 0x30008000 169.254.83.241:root.cramfs
SMDK2410 # nand erase 0x280000 0x400000
SMDK2410 # nand write 0x30008000 0x280000 0x300000
8.设置启动参数
列出设置启动参数所使用的指令。
答:
SMDK2410 # setenv bootargs root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
SMDK2410 # saveenv
SMDK2410 # setenv bootcmd nand read 0x30008000 0x80000 0x200000\; bootm
SMDK2410 # saveenv
六、遇到的问题及解决办法
答:无