嵌入式linux实验指导书实验一:arm裸机实验实验条件:pc ADS开发环境FL2440开发套件SecureCRT串口超级终端实验目的:熟悉arm裸机开发基本步骤,掌握ADS集成开发环境的使用,能够编写简单的裸机程序并下载到开发板运行测试。
实验原理:ADS 全称为ARM Developer Suite ,是ARM 公司推出的新一代ARM 集成开发工具。
ADS 由命令行开发工具、ARM 实时库、GUI 开发环境(Code Warrior 和AXD) 、实用程序和支持软件组成。
有了这些部件,用户就可以为ARM 系列的RISC 处理器编写和调试自己开发的应用程序了。
本次实验利用ADS集成开发环境建立基于arm9 S3C2440的实验工程,完成工程搭建、代码编写和编译,生成可执行文件并下载到开发板进行运行测试。
实验步骤:1、首先打开ADS软件CodeWarrior,点击File 菜单下的New 来创建新工程。
Project 对话框中选择ARM Executable Image 。
在Project name 中输入工程名,例:2440_led,点击“Location:”文本框的“Set...”按钮,选择要将工程保存的路径,然后点击确定即可建立一个新的工程。
工程建立之后会出现一个24 40_led.mcp 窗口。
2、创建源文件,点击File 菜单下的New,选择标签页File,在File name 中输入要建立的文件名,如:Init.s (.s 文件为arm 中的汇编文件),若此时选上了Add to Project,创建的文件会自动添加到工程中,选择target方式为DebugRel,点击确定关闭窗口,文件创建完成后编写代码。
(可将arm_linux文件夹下的裸机例程代码复制到工程中进行修改,如:复制裸机程序中的led程序init.s led.c 到建立的工程文件目录中,点击Project 菜单下的Add Fils 将源文件添加到工程中)3、点击Edit 菜单,选择“DebugRel Settings…”(注意,这个选项会因用户选择的不同目标而有所不同)。
选择Target Settings,在右侧属性栏中,将Linker设置为ARM Linker,Post-linker设置为ARM fromELF;选择ARM Assembler,设置Target下Architecture or Processor为ARM920T,Floating Point设置为No floating point;选择ARM Linker,设置output下simple image中RO Base为0x32000000,设置options下Image entry point为0x32000000,设置layout下object/symbol为init.o;选择ARM fromELF,设置output format为plain binary。
设置完成后点击ok。
4、源文件添加完成并设置后,可以进行工程的编译。
点击project菜单,选择make,若程序无误则会在工程文件下DebugRel目录生成.axf和.bin的可执行文件。
5、连接开发板串口与pc串口,连接开发板usb与pc机usb,打开串口终端并连接COM1串口。
启动开发板,此时串口终端会打印输出信息,立即按下enter键进入bootloader选择模式,按下0选择下载用户程序到开发板内存中运行,此时打开DNW软件,选择usb transmit,bin文件,将上述生成的.bin文件下载到开发板内存中运行,若下载成功则串口终端会打印相关信息,开发板会在内存中执行程序。
6、第5步也可以选择1将程序下载到内存中运行,并在同时写入开发板flash中,此时掉电程序不丢失。
实验结果:实验心得:实验二:搭建嵌入式linux工作环境实验条件:pc机winXP或win7系统虚拟机软件redhat镜像文件arm交叉编译链实验目的:搭建嵌入式linux开发环境,包括虚拟机的安装和使用,redhat系统的安装和使用,熟悉linux基本命令,在系统中加入arm开发的交叉编译链。
实验步骤:1、安装虚拟机,VMware Workstation,按照提示进行安装,根据喜好选择语言及其他相应设置即可。
(pc机已默认安装)2、虚拟机安装完成后,选择文件->新建虚拟机,在CD选项中添加redhat linux 的光盘镜像,根据提示设置系统名称,内存大小,硬盘大小,系统语言,管理员密码等(一般设置内存至少256M,硬盘至少8GB,中文)。
共3个盘片。
(pc 机已默认安装,管理员账户为:root,密码为:test123)3、Redhat安装完成后,启动系统,用root用户登录。
打开“虚拟机”->“设置”->“CD/DVD”右侧设备状态勾选“已连接”和“打开电源时自动连接”,“使用I SO镜像文件”,浏览文件,将arm_linux文件夹中的linux.iso加入路径。
打开sh ell终端,进入命令行界面,执行cd /mnt/cdrom,进入/mnt/cdrom目录,可看到镜像文件被挂载到虚拟光驱中,文件名为vmware-tools-distrib,执行cd vmwaretoo ls-distrib进入该目录下执行./vmware-install.pl脚本安装虚拟机增强工具,出现选项时直接按下enter,直至安装结束回到shell状态。
在VM下,进入“虚拟机”->“设置”,进入“虚拟机设置”对话框。
进入“选项”->“共享文件夹”进行设置,选择要设置的共享文件夹路径,勾选固定分配和自动挂载,共享成功过后就可以在red hat中访问共享文件夹。
在redhat下,执行cd /mnt/hgfs命令进入/mnt/hgfs目录下,执行ls命令可以看到之前添加的共享文件夹。
(为方便后续实验,在此将p c桌面本次实验内容的文件夹arm_linux设置为共享文件夹)4、安装arm-linux-gcc交叉编译工具链。
将cross-3.4.1压缩包复制到共享文件夹中,在redhat下,新建命令行终端,执行cd /mnt/hgfs/arm_linux命令,进入ar m_linux共享文件夹,执行tar –xvjf cross-3.4.1.tar –C /usr/local命令解压交叉工具链到/usr/local/arm目录。
编辑/etc/bashrc 文件,执行vi /etc/bashrc命令,进入编辑页面单击“i”键进行输入,在最后增加路径:export PATH=/usr/local/arm/3.4.1/bin:$PATH ,修改完成后单击“Esc”键,输入“:x”命令保存退出,这样就把/usr/local/arm/3.4.1/bin 添加到命令的默认路径,执行source /etc/bashrc保存文件并使文件生效。
此时,执行arm-linux-gcc –v命令可以查看编译器版本。
实验结果:实验心得:实验三:linux内核及文件系统的编译和烧写实验条件:pc机redhat系统bootloader、linux内核和文件系统源码arm-linux-gcc编译工具实验目的:了解嵌入式linux系统构成,熟悉相关组成文件的编译和烧写,有兴趣者可深入查看源代码。
实验原理:运行于嵌入式设备中的linux系统通常由bootloader、Linux内核和文件系统三部分组成,bootloader完成核心硬件如nandflash的初始化配置并设置启动参数引导linux内核启动,内核主要进行系统调度、资源管理等,内核启动后用户并不能直接的对内核进行直接操作,因此需要一套文件系统挂接到内核上实现用户与系统的交互。
当有了linux 内核源码和文件系统源码之后需要交叉编译,因为源码是不能直接运行的。
此处编译的是linux 2.6 的内核,采用yaffs2文件系统,交叉编译器为3.4.1 版本。
内核编译命令:make config(基于文本的最为传统的配置界面,不推荐使用)make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)make xconfig(基于图形窗口模式的配置界面,Xwindow 下推荐使用)make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)这三个命令中,make xconfig 的界面最为友好,但系统支持差,所以使用ma ke menuconfig 最为普遍。
文件系统可使用busybox工具制作,本实验直接使用FL2440官方文件系统。
实验步骤:1、启动redhat系统,新建命令行终端,执行cd /mng/hgfs/arm_linux命令进入共享文件夹,执行tar –xvjf linux-2.6.12.tar.bz2 –C /home 将内核文件解压到/ho me目录下,同样将文件系统文件解压到home目录,tar -xvjf qte_yaffs.tar.bz2 –C /home2、执行cd /home/linux-2.6.12,进入linux-2.6.12 目录,在命令行输入make me nuconfig命令,选择进入“Load an Alternate Configuration File”装载配置文件“S3C2440.CFG”,点击“OK”,然后保存退出。
(可以根据硬件配置对内核进行裁剪,本次实验采用FL2440的默认配置文件)。
在命令行输入命令make z Image,此时系统会对内核进行编译,编译完之后,则在linux-2.6.12/arch/arm/b oot 路径下生成zImage 文件。
执行cp arch/arm/boot/zImage /mnt/hgfs/arm_linu x –a命令将内核文件复制到共享文件夹下供烧写使用。
3、执行cd /home/ qte_yaffs进入文件系统目录,文件系统的所有文件都在该目录下,可根据需要修改。
其中关于支持鼠标或触摸屏在/etc/init.d/rcS 中选择(rc. mouse 或rc.touch)。
最后用mkyaffs2image 工具来制作文件系统:./mkyaffs2image qte_yaffs qte.yaff s 执行cp qte.yaffs /mnt/hgfs/arm_linux –a将制作好的文件系统复制到共享文件夹供烧写使用。
4、由于FL2440开发板默认已烧写好linux内核和yaffs文件系统,此处烧写部分不作叙述,有兴趣同学可利用官方提供烧写工具进行内核和文件系统地烧写。
实验结果:实验心得:实验四:linux驱动程序实验条件:pc redhat 系统及交叉编译工具FL2440开发板套件SecureCRT串口超级终端实验目的:了解linux驱动程序开发原理,学会简单的字符型驱动程序编写,熟悉驱动程序的加载和卸载过程。