版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE2目录一.设计任务 31设计目的 32设计要求 3二.基于ARM架构的嵌入式系统简介 3三.嵌入式程序的设计原理 41BootLoader的应用 42Linux内核的应用 43根文件系统的应用 54YAFFS应用程序的下载 6四.使用MPLAYER播放视频文件 61硬件连接 62建立超级终端 63启动 64使用MPLAYER播放视频文件 7五.主要的设计内容 71基于SKYEYE的u-boot的仿真 73基于SKYEYE的根文件系统的仿真 11六.设计总结和心得 156.1设计总结 15经过这次课程设计,我们顺利的完成了设计目的。 156.2设计心得 15参考资料: 16附录: 16摘要根据IEEE(电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。仿真技术也是实现仿真平台的关键,软件仿真技术的研究早已开始。目前,嵌入式系统的仿真软件主要有SKYEYE与QEMU,这里选用SKYEYE软件来仿真嵌入式系统中的软硬件系统。在本次课程设计中,采用ARMv4版本架构的、ARM920T核心的S3C2410A微处理器,应用SKYEYE对经过编译的嵌入式系统的基本模块进行仿真。SKYEYE是一个面向完整PC系统的开源仿真器,可以实现嵌入式系统的仿真,给用户提供一个虚拟的硬件操作平台。它是一个指令级仿真器,可以模拟多种嵌入式开发板,可支持多种CPU指令集。除了仿真处理器外,SKYEYE还允许仿真所有必要的子系统,如连网硬件和图形硬件。在SKYEYE上运行操作系统与在一个真实的硬件环境中运行是一样的,看不出其中的差别,并且开发人员还可以通过SKYEYE调试操作系统和系统软件。通过SKYEYE仿真集成环境不仅可以很方便地进入到嵌入式系统软件学习和开发领域,而且可以有效地提高工作效率,有助于进一步学习、分析、精通Linux内核,掌握ARM嵌入式CPU编程。关键词:嵌入式ARMSKYEYE仿真U-BootLinux内核根文件系统一.设计任务1设计目的(1)巩固学习过的ARM嵌入式系统的BootLoader的应用设计(2)巩固学习过的ARM嵌入式系统的Linux内核的应用设计(3)巩固学习过的ARM嵌入式系统的根文件系统的设计(4)学习使用JTAG调试器的驱动安装及BootLoader下载(5)学习使用嵌入式Linux系统中的ftp服务器传送YAFFS应用程序(6)学习开源软件VBA的配置与编译2设计要求1、能够编译并运行BootLoader程序。2、能够配置、编译并运行Linux内核。3、能够使用Busybox制作根文件系统。4、能够设置SKYEYE模拟运行嵌入式Linux系统及驱动。二.基于ARM架构的嵌入式系统简介根据IEEE(电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行装置”(devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。ARM处理器占有很大的份额。ARM架构是ARM(AdvancedRISCMachine)公司开发的一种高性能低功耗微处理器的体系结构设计,有一系列不同的版本。ARM不仅是一个公司、一种技术,也是一种经营理念,即ARM架构的嵌入式微处理器都是各芯片厂商根据ARM公司出售的知识产权(IP)核生产的,拥有众多的系列类型,都具有ARM微处理器的共同特点。以S3C2410微处理器为硬件核心的嵌入式系统具有体积小、低功耗、低成本、高性能等特点,且支持Thumb(16位)/ARM(32位)双指令集,指令执行速度更快。基于ARM架构的嵌入式系统有以下特点:(1)是“类计算机系统”;(2)面向特定应用的;(3)更注重低功耗、低成本;(4)升级较慢;(5)具有固化的代码;(6)系统开发需要专用开发工具和环境;(7)软件需要RTOS开发平台;(8)开发人员应具备电路专业知识;(9)是开放性的知识集成系统。由于存储空间等原因,在嵌入式芯片上编程有较大的困难,选取合适的平台就显得很重要。Linux自出现以来,得到了迅猛的发展。Linux是开放源码的操作系统,吸引着全世界的程序员参与到发展和完善的工作中来,所以Linux保持了稳定而且卓越的性能。Linux在服务器领域已经占有很大的份额,在图形界面方面也不输于Windows。由于源码可以修改、移植,Linux在嵌入式领域中的应用也越来越广。选用Linux作为平台,可以根据具体需要自由地裁减源码,打造适合目标平台的环境,编写最有效率的应用程序。三.嵌入式程序的设计原理1BootLoader的应用BootLoader是在系统上电以后引导操作系统内核运行的一段小程序,它类似于PC机上的BIOS程序。通过这段小程序来初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境配置到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是依赖于具体的硬件来实现的,在嵌入式应用系统中,BootLoader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,在U-Boot-1.2.0版本中已经支持的电路板就有218种。事实上,一个功能完善的BootLoader已经相当于一个微型的操作系统了,话虽这样说,它仍没有像微型操作系统那样复杂,甚至还比不上PC机的BIOS程序规模大。大多数功能比较完善的BootLoader程序都包含两种不同的操作模式:“正常启动”模式与“下载更新”模式,主要功能有:初始化系统在启动阶段必需的硬件设备;准备后续软件系统(如操作系统)运行所需的软件环境,比如复制一部分代码到RAM中等;向内核传递启动参数;配置系统各种参数[可选];支持各种协议来下载BootLoader、内核、文件系统等[可选];在线烧写系统firmware,如启动参数、BootLoader、内核、文件系统等[可选];支持在线调试[可选];引导内核启动。试验箱原始bootloader为现在较少使用的vivi。2Linux内核的应用在嵌入式系统应用中有三个基础组成部分(分别是BootLoader、Linux内核及根文件系统),Linux内核的使用是其中最重要的一项。内核是所有linux系统的中心软件组件。嵌入式领域所说的linux,一般是指linux内核。在使用Linux内核时,需要针对具体的微处理器配置、编译Linux内核,之后才能将得到的内核映像文件下载到目标平台运行。在嵌入式领域,Linux2.6除了提高了实时响应性能、系统移植的便捷性以外,还添加了新的体系结构和处理器类型,其中包括对没有硬件控制内存管理方案的MMU-less系统的支持,比如Linux2.6内核开始支持m68k等不带MMU的微控制器。此外,Linux2.6内核已经可以支持大容量内存模型、更多的微控制器,同时还改善了IPO子系统,增添更多的多媒体应用功能。三星公司针对s3c2410芯片推出了smdk2410demo板,Linux内核对该开发板的支持非常完善。为了移植方便,并最大可能地实现代码重用,可以选择该开发板作为原始目标板,在它的基础上进行必要的修改。系统应用平台硬件配置的变化往往需要Linux内核的配置也相应的改变,以使Linux内核能够适应硬件电路,通过修改相应的Makefile文件可以配置编译工具。以试验箱自带配置编译好的内核下载应用为例说明下载过程如下:vivi>loadflashkernelx回车,当出现“Readyfordownloadingusingxmodem...Waiting...”点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件zImage,Enter,协议为Xmodem,点击“发送”,4分钟左右zImage烧写完毕;vivi>loadflashrootx回车,当出现“Readyfordownloadingusingxmodem...Waiting...”点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件root.cramfs,协议为Xmodem,点击“发送”,8分钟左右root.cramfs烧写完毕。3根文件系统的应用嵌入式系统应用中的根文件系统是内核启动时首先需要加载的文件系统,可以为用户提供人机交互的界面(shell),它与前面介绍的BootLoader、Linux内核一起为嵌入式系统提供一个完整的应用环境。Linux内核在系统启动期间进行的最后操作之一就是安装根文件系统,在系统启动时,所有其它的文件系统都被加载(mounted)到根文件系统。根文件系统存储在一定类型的存储介质上,是一个具有层次关系的目录树。在不同计算机平台上的根文件系统的具体内容有所不同,但是它们都包含一些必要的文件,这些文件可以用来启动系统,还可以用来引导系统到挂载其它文件系统的状态,由这些必要的文件实现的一个最小系统集主要包括根目录、/boot、/dev、/etc、/bin、/sbin、/tmp等目录。根文件系统直接影响着系统能否从磁盘正常引导并运行,保持根文件系统的规模最小,即是shell命令、库文件、启动文件以及相应目录的最小集,最小规模的、不会频繁修改的文件系统才能使系统平稳运行。常见的文件系统包括EXT2文件系统、JFFS2文件系统、YAFFS文件系统等。试验箱原根文件系统下载过程如下:vivi>loadflashrootx回车,当出现“Readyfordownloadingusingxmodem...Waiting...”点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件root.cramfs,协议为Xmodem,点击“发送”,8分钟左右root.cramfs烧写完毕。4YAFFS应用程序的下载试验箱所配备的yaffs文件系统下载过程如下:用网线连接好2410-S试验箱的网口和PC机的网口,配置IP在同一网段,重启2410-S进入目录[/mnt/yaffs]下。[/mnt/yaffs]ifconfig--查看IP[/mnt/yaffs]ifconfigeth011--配置eth0ip[/mnt/yaffs]inetd--启动ftp打开ftp软件(在光盘中flashvivi目录中提供),11,用户名:root,密码:无,连接进入ftp,上传“yaffs.tar”到2410-S的/var下,3分钟左右上传完毕。这时千万不要重启2410-S[/mnt/yaffs]cd..--转换到/mnt下[/mnt]rm-rfyaffs/*--删除/yaffs下文件[/mnt]cd/var--转到var目录下[/var]tarxjvfyaffs.tar.bz2-C/mnt/yaffs--解压yaffs.tar.bz2到mnt/yaffs目录下,需3分钟左右。四.使用MPLAYER播放视频文件1硬件连接连接电源,将5V电源线的连到UP-NETARM2410-S的电源接口;连接串口线,一端连接PC的串口,另一端连接到UP-NETARM2410-S的串口(上面的);连接网线,将随机附带的交叉网线把UP-NETARM2410-S靠近于电源接口的网口和PC机的网口连接好。2建立超级终端在Windows系统下,开始→所有程序→附件→通讯→超级终端,选择ARM开发平台实际连接的PC机串口(COM1),设置属性为波特率115200、数据位8、无奇偶校验、停止位1、无数据流控制。3启动打开电源开关,系统由VIVI开始引导,超级终端会显示启动信息,输入“boot”后会引导kernel,启动linux系统。4使用MPLAYER播放视频文件在[/mnt/yaffs/mplayer]路径下输入“ls”命令可查看到mplayer、mplayer2、test.avi三个文件,继续在该路径下输入“mplayertest.avi”命令可以看到原始的视频,输入“mplayer2test.avi”命令可以看到全屏的视频。五.主要的设计内容1基于SKYEYE的u-boot的仿真①.u-boot简介U-Boot,全称UniversalBootLoader,它是一个用于多种微处理器的BootLoader程序,由德国DENX小组开发,属于遵循GPL条款的跨平台的开放源码项目。它的主要功能是实现硬件设备的初始化、操作系统代码的下载,并提供一个控制台及一个命令集,使用户在操作系统运行前操控硬件资源。②.u-boot的编译从U-Boot的官方网站ftp://ftp.denx.de/pub/u-boot/下载源代码,版本是1.3.2,名称是u-boot-1.3.2.tar.bz2。将下载的U-Boot-1.3.2放在/home目录中,并解压其源码包至当前目录中。图5-1解压U-Boot-1.3.2源码包后,运行“ls命令”,可以查看得到的U-Boot-1.3.2源码文件夹,如图5-2所示。图5-2进入U-Boot-1.3.2的安装目录,开始编译U-Boot,如图5-3所示,运行如下命令配置编译环境,并选择ARM微处理器使用的嵌入式交叉编译工具:makesmdk2410_configCROSS_COMPILE=arm-linux-,再运行如下命令选择嵌入式交叉编译工具并进行编译:makeCROSS_COMPILE=arm-linux-。图5-3编译完成后,可以得到U-Boot各种格式的映像文件和符号表,如下所示:System.map:U-Boot映像的符号表u-boot.bin:U-Boot映像原始的二进制格式u-boot:U-Boot映像的ELF格式u-boot.srec:U-Boot映像的S-Record格式U-Boot的3种映像格式都可以烧录到FlashROM中,但需要看仿真器能否识别这些格式。一般u-boot.bin最为常用,直接按照二进制格式下载,并且按照绝对地址烧录到FlashROM中就可以了。u-boot和u-boot.srec格式映像都自带定位信息。③.U-Boot的SKYEYE仿真U-Boot经过编译后,将得到ELF格式u-boot映像与二进制格式u-boot.bin映像。当在具体的嵌入式应用硬件平台上使用的时候,通常将二进制格式的u-boot.bin映像烧录到FlashROM中引导系统;为了便于虚拟仿真,通常使用SKYEYE仿真调试U-Boot映像文件。将得到的U-Boot文件复制到skyeye-1.2.4的binary目录中,然后如图5-4所示,运行SKYEE仿真U-Boot文件。图5-4执行结果如图5-5所示:图5-52基于SKYEYE的linux内核的仿真①.内核获得与配置从/pub/linux/kernel/v2.6/网址下载Linux-2.6.14.tar.bz2文件,将其存放到/home目录下,打开终端窗口,在其中运行所示的命令,进入/home目录中解压缩Linux2.6.14内核文件Linux-2.6.14.tar.bz2。进入内核解压后的目录/home/linux-2.6.14,使用VI编辑器打开该目录下的Makefile文件,修改第192行与第193行,分别指定编译的内核架构与使用的交叉编译工具。操作命令如下所示。[root@localhosthome]#cdlinux-2.6.14[root@localhostlinux-2.6.14]#viMakefile修改的第192行与第193行内容如下所示ARCH?=armCROSS_COMPILE?=/home/usr/local/bin/arm-linux-修改后的Makefile文件的内容如图5-6所示。图5-6内核配置方式有多种,这里选用makemenuconfig方式。内核配置的各个项目都保存在.config文件中,它在/home/linux-2.6.14目录下,是一个隐藏文件。在内核配置菜单中所做的任何修改,最终都会在这个文件中体现出来。Linux在编译时需要依赖.config文件,它也是Makefile对内核进行处理的重要依据。.config是内核编译时所依赖的重要文件,与具体的硬件构架和开发板类型相关。一般来说,Linux内核会提供大多数芯片公司demo板的.config文件,一般找一个近似的进行修改就行。如S3C2410平台上可以选择内核提供的smdk2410_deconfig这个文件进行修改。运行下面的命令启动内核配置菜单:[root@localhostlinux-2.6.14]#cparch/arm/configs/smdk2410_defconfig.config[root@localhostlinux-2.6.14]#makeARCH=armmenuconfig内核具体配置据实际开发所需进行,在此不再赘述。②、内核编译对Linux2.6.14内核配置之后,就可以进行编译了,直接运行如下的命令:[root@localhostlinux-2.6.14]#makeARCH=armCROSS_COMPILE=arm-linux-这里将CROSS_COMPILE变量定义为arm-linux-,表示使用arm-linux-前缀的工具集作为交叉编译的工具。相对于Linux2.4内核,Linux2.6内核配置编译过程要简单一些,不再需要makedep;makezImage;makemodules这些命令,只要执行make就可以编译内核映像和模块。内核编译完毕后,将得到三个重要的文件,分别是位于根目录下的vmlinux、位于Linux-2.6.14安装目录中arch/arm/boot/路径下的Image与zImage。vmlinux是在内核源码顶层目录生成的内核映像,属于elf格式的目标文件。它是内核在虚拟空间中运行时代码的真实反映。因为Linux内核运行在虚拟地址空间,所以vmlinux中的“vm”表示“VirtualMemory”。Image与zImage均为二进制文件。zImage是可引导的、压缩的内核映像,它是vmlinux的压缩映像,是可执行的Linux内核映像。zImage采用gzip压缩格式,包含gzip的解压缩函数。在使用SKYEYE软件仿真Linux内核运行时,一般加载vmlinux映像文件;在将Linux内核的映像文件下载到评估电路板上时,一般下载的是zImage压缩的内核映像文件。在SKYEYE环境中仿真Linux内核的运行,需要三个基础的文件,分别是vmlinux内核映像、skyeye.conf配置文件以及initrd.img文件系统。因此,首先要将这三个文件一同放置到SKYEYE的仿真文件夹(skyeye-1.2.4/binary)中。前面的准备工作结束后,在SKYEYE的仿真文件夹中应该已经同时具有了vmlinux内核映像、initrd.img文件系统以及skyeye.conf配置文件等三个基础文件。现在就可以使用如下命令来启动SKYEYE模拟Linux-2.6.14内核的运行。图5-7运行结果如下图5-8所示图5-8当然前面只是最基本的仿真,没有实现什么具体应用功能,如果把lcd控制模块配置好再加上启动图标仿真结果如下图5-9所示:图5-93基于SKYEYE的根文件系统的仿真前面仿真linux内核时所用的initrd.img文件为skyeye测试包中的文件系统,当在实际的开发中就要自己制作文件系统了。下面简介用busybox制作根文件系统及在SKYEYE下的仿真busybox工具的配置与安装先从http://www.BusyB/downloads/网站下载BusyBox软件包,这个网站提供了众多版本的BusyBox软件包,这里选择文件名为BusyBox-1.2.0.tar.bz2的压缩文件,将下载到的BusyBox-1.2.0.tar.bz2压缩文件放在Linux系统中的/home目录下,然后,在解压缩BusyBox软件包并进入解压后得到的BusyBox-1.2.0目录:在BusyBox-1.2.0目录下执行如下命令进入BusyBox的主配置菜单:[root@localhostBusyBox-1.2.0]#makemenuconfig配置BusyBox的选项以后就应该进入BusyBox的编译、安装阶段了。在Linux系统的终端窗口上运行如下命令,开始对BusyBox进行编译:[root@localhostBusyBox-1.2.0]#makeBusyBox编译后将得到以下两个主要的文件:BusyBox与BusyBox_unstripped,其中,BusyBox_unstripped是一个可执行程序,BusyBox是经过strip(剥离)后得到的可执行程序。2.根文件系统的制作(1)创建根文件系统的dev目录根文件系统中的dev目录用来存放系统的设备文件,这里可以运行如下的命令,将其建立在_install目录下:[root@localhostBusyBox-1.2.0]#mkdir_install/dev建立的dev目录目前还只是一个空目录,现在复制主机上Linux系统中的一些设备文件到_install/dev目录,可以进行如下操作:[root@localhostBusyBox-1.2.0]#cp/dev/ttyS0/dev/console/dev/ram0_install/dev/-a这样就在dev目录中添加了串口终端设备、系统控制台设备、RAM磁盘设备等三个常用的硬件设备文件。(2)创建根文件系统的etc等目录及配置文件在BusyBox的安装目录_install的基础之上,已经添加了dev目录以及其中的设备文件,按照根文件系统中的目录结构,现在还需要建立etc、home、initrd、lib、proc、root、tmp、var等目录。将编写的make_rootfs.sh脚本文件放在BusyBox的安装目录_install中,然后进入安装目录运行该脚本,如下所示:[root@localhostBusyBox-1.2.0]#cd_install/[root@localhost_install]#./make_rootfs.sh[root@localhost_install]#cd..[root@localhostBusyBox-1.2.0]#这样,根文件系统的完整结构就在安装目录_install中建立出来了,下一步,将使用安装目录_install中的内容创建文件系统映像。(3)创建EXT2格式的文件系统映像在上面的介绍中,已经使用BusyBox程序得到了根文件系统结构中的核心目录及相关文件,后来又在这些基础上扩展了根文件系统中的dev目录、etc目录等构建目录,还相应扩展了根文件系统中的设备文件、配置文件等重要的程序文件,所有的这些根文件系统的构建内容都已经存放在安装目录_install中了,现在只需要将这些目录与文件制作为一个文件系统映像,就可以在嵌入式系统中使用了。运行如下所示的命令,可以创建EXT2格式的文件系统映像:[root@localhostBusyBox-1.2.0]#ddif=/dev/zeroof=./initrd.imgcount=2048bs=1024[root@localhostBusyBox-1.2.0]#mke2fs-F-m0initrd.img(4)添加initrd.img文件系统映像的内容先在/mnt目录中建立一个rootfs目录,用来挂载initrd.img文件系统映像,运行如下所示的命令:[root@localhostBusyBox-1.2.0]#mkdir/mnt/rootfs然后,挂载映像文件initrd.img,运行如下所示的命令:[root@localhostBusyBox-1.2.0]#mountinitrd.img/mnt/rootfs/-oloop接着,将安装目录的所有内容复制到/mnt/rootfs/目录,运行如下所示的命令:[root@localhostBusyBox-1.2.0]#cp_install/*/mnt/rootfs/-a最后,卸载映像文件initrd.img,运行如下所示的命令:[root@localhostBusyBox-1.2.0]#umount/mnt/rootfs/这样,就得到了运行嵌入式系统所需要的根文件系统映像initrd.img文件了。首先,将BusyBox-1.2.0目录中的根文件系统映像文件initrd.img与SKYEYE的配置文件skyeye.conf、Linux2.6.14内核文件vmlinux放在一起,复制到skyeye-1.2.4目录中的binary目录里面。然后,运行如下所示的命令,启动SKYEYE来仿真调试制作出来的BusyBox根文件系统的映像文件initrd.img:[root@localhostbinary]#./skyeye–evmlinux运行上述命令后,在RedHatLinux的终端(Terminal)窗口中应该可以看到内核的启动信息了,随后会输出在etc/motd文件中设置的“ARMLINUX”ASCII图形标志,最后,窗口中会输出BusyBox的启动信息如下图5-10图5-10输入ls命令显示如下图5-11:图5-11六.设计总结和心得6.1设计总结经过这次课程设计,我们顺利的完成了设计目的。SKYEYE是一个非常有用的嵌入式仿真软件,对嵌入式开发的大部分过程都能进行很好的仿真,以上用skyeye仿真了u-boot,linux内核,根文件系统,通过以上仿真完成了课程设计基本要求,但在这个过程中还是出现了很多的问题,基本上跟技术无关,主要是文件修改之中的问题,一个字符或者数据的错误都有可能无法得到编译结果,由于在试验台上用的存储系统与实际不同,因此在试验台上编译仿真出的文件并不适用于nand型flash的实际电路,同样修改之后的文件系统在试验台上也无法仿真。在试验台上进行的仿真过程充分体现了SKYEYE仿真软件的优越性,不仅具有节省时间、方便快捷的特色,在SKYEYE上运行操作系统与在一个真实的硬件环境中运行是一样的,看不出其中的差别,如果没有硬件支持它将是一个绝佳的选择。6.2设计心得通过这次课程设计,我熟悉了课堂上所学的嵌入式课程的相关理论知识,并且把嵌入式开发流程的主要步骤进行了一遍。在使用软件仿真进行相关设计时,遇到了一些很难解决的问题,通过请教老师和同学,这些问题也在此期间很好地解决掉了。嵌入式是一门非常有发展前途的课程,通过这次课程设计使我受益匪浅。参考资料:1、嵌入式系统应用基础PDF2、2410-S快速开始手册3、2410-S实验指导书附录:主要软件:VMwareWorkstation,RedhatEnterpriseLinuxAdvancedServer4,U-Boot,SKYEYE,Linux2.6,BusyBox主要程序:在课程设计中,除了对某些文件的部分修改外,还添加了一些必要的程序,部分内容如下:(1)copy_myself:/****************************************************************************copyu-boottoram***************************************************************************/#ifdefCONFIG_S3C2410_NAND_BOOTcopy_myself:movr10,lr@savereturnaddresstor10ldrsp,DW_STACK_STARTmovfp,#0blNF_Initldrr0,=UBOOT_RAM_BASEmovr1,#0x0movr2,#0x30000blnand_read_wholetstr0,#0x0beqok_nand_read1:b1bok_nand_read:movr0,#0x00000000ldrr1,=UBOOT_RAM_BASEmovr2,#0x400go_next:ldrr3,[r0],#4ldrr4,[r1],#4teqr3,r4bnenotmatchsubsr2,r2,#4beqdone_nand_readbnego_nextnotmatch:1:b1bdone_nand_read:movpc,r10#endifDW_STACK_START:.wordSTACK_BASE+STACK_SIZE-4nand.c:#include<common.h>#include<s3c2410.h>#include<config.h>#defineTACLS0#defineTWRPH03#defineTWRPH10#defineU32unsignedintexternunsignedlongnand_probe(unsignedlongphysadr);staticvoidNF_Reset(void){inti;NF_nFCE_L();NF_CMD(0xFF);for(i=0;i<10;i++);NF_WAITRB();NF_nFCE_H();}voidNF_Init(void){rNFCONF=(1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0);NF_Reset();}intnand_read_whole(unsignedchar*buf,unsignedlongstart_addr,intsize){inti,j;if((start_addr&NAND_BLOCK_MASK)||(size&NAND_BLOCK_MASK))return1;NF_nFCE_L();for(i=0;i<10;i++);i=start_addr;while(i<start_addr+size){rNFCMD=0;rNFADDR=i&0xff;rNFADDR=(i>>9)&0xff;rNFADDR=(i>>17)&0xff;rNFADDR=(i>>25)&0xff;NF_WAITRB();for(j=0;j<NAND_SECTOR_SIZE;j++,i++){*buf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江西赣州市政公用集团社会招聘39人备考题库及参考答案详解(模拟题)
- 2026贵州黔南州荔波县事业单位引进高层次人才和急需紧缺专业人才18人备考题库及答案详解(夺冠系列)
- 2026江苏淮安市淮阴师范学院部分教师岗招聘4人备考题库附参考答案详解(完整版)
- 第1课 认识多媒体教学设计初中信息技术浙教版2020七年级下册-浙教版2020
- 2026清华大学出版社校园招聘备考题库及参考答案详解(达标题)
- 2026广东江门开平市侨城产业投资集团有限公司招聘备考题库及参考答案详解(突破训练)
- 2026浙江宁波市镇海区急救中心编外人员招聘1人备考题库附参考答案详解(达标题)
- 2026河北省中医院招聘劳务派遣人员43人备考题库附参考答案详解(巩固)
- 2026青海西宁正华建设投资控股有限公司招聘2人备考题库及1套参考答案详解
- 2026海南海口美兰国际机场有限责任公司招聘备考题库含答案详解(满分必刷)
- 暂估价说明概述
- 菜点酒水知识资源 单元三主题三
- GB/T 22900-2022科学技术研究项目评价通则
- 融水县金锋铜矿六秀后山108铜矿(新增资源)采矿权出让收益评估报告
- GB/T 15171-1994软包装件密封性能试验方法
- 污废水处理培训教材课件
- 医疗器械生产质量管理规范
- 诊断学查体相关实验
- 网络侦查与取证技术课件
- 《高等教育法规概论》练习题及答案(合集)
- 毕业设计论文-四足机器狗(吐血发布)
评论
0/150
提交评论