




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录一、前言111 课题研究背景112 课程研究目的和意义213 ARM2440实验箱介绍2131 2440核心板规格:2132 2440实验箱底板规格:3133软件资源4二 、需求分析4三、开发环境及系统结构531 开发环境532 系统结构5四、详细设计641 ARM Linux的建立6411 建立交叉编译环境7412 编译内核9413 生成并配置根文件系统1342 BootLoader的移植15 421 移植的环境15 422 移植的步骤1543 基于S3CC400的嵌入式Web服务器Boa移植20 431 配置开发板网络20433 Web静态网页制作23434 CGI程序login.c程序。23五、 结论25一、前言11 课题研究背景 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。 嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器微处理器、存储器及外设器件和IO端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。 随着3C融合进程和我国传统产业结构升级的加速,人们对设备越来越高的应用需要已经无法满足当前和未来高性能的应用与发展需求。显然,嵌入式系统的软、硬件技术和开发手段,正日益受到重视,成为各领域技术创新的重要基础。目前,嵌入式系统是近年来发展很快的计算机方面的学科方向,并迅速渗透到控制、自动化、仪器仪表等学科。嵌入式方向包括了软硬件协同设计、嵌入式体系结构、实时操作系统、嵌入式产品设计等方面的知识,大于当代大学生,更需要掌握嵌入式系统设计的典型开发工具和开发核心技术。对于嵌入式市场的发展来说,中国市场的意义更加重大。中国市场对于嵌入式互联网这场革命来说非常关键。勃勃的生机,很好的产业互动,良好的协作精神,中国现在正在形成-个健康的嵌入式的发展模式和转型模式。中国可能是-个引发点,嵌入式市场先在中国蓬勃发展,然后辐射到全球其他地区。12 课程研究目的和意义 Linux操作系统是-个开放源代码的免费操作系统,它不仅安全、稳定、成本低,而且很少发现有病毒传播,越来越的服务器、工作站和个人电脑开始使用Linux软件,基于Linux具有稳定、可靠和强大的网络功能这些优点。在Linux环境下实现-个boa web服务器。13 ARM2440实验箱介绍 2440实验箱由核心板和底板构成,核心板采用6层板工艺,稳定性高,底板采用双面板,接口丰富功能全,扩展方便。131 2440核心板规格: CPU处理器 Samsung S3C2440AL,主频400MHz,最高533MHz。 SDRAM内存 板载64MBSDRAM 32bit数据总线 SDRAM时钟频率高达100MHz Flash存储器 板载64MB Nand Flash,掉电非易失 板载2MB Nor Flash 专业1.25V核心电压供电,完美解决CPU发热现象 3个用户LED灯132 2440实验箱底板规格: 大电流5V供电,提供更加优质的供电,防止-切因为电源而引起的BUG; LCD显示 板上LCD接口集成4线电阻式触摸屏接口,可以直接连接4线电阻式触摸屏, 支持黑白、4级灰度、16级灰度、256色、4096色STN液晶屏,尺寸从3.5寸到12.1寸,屏幕分辨率可以达到1024X768象素 支持黑白、4级灰度、16级灰度、256色、64K色、真彩色TFT液晶屏,尺寸从3.5寸到12.1寸,屏幕分辨率可以达到1024768象素 2440实验箱的标准配置为SHARP 8英寸分辨率为640x480的TFT真彩液晶屏,自 带触摸屏 1个100M以太网RJ-45接口 3个串行接口,其中两个为RS3232电平,以DB9接口引出,另-个是TTL电 平,以扩展模块接口引出 4个USB Host A型接口(支持USB1.1协议) 1个USB Slave B型接口(支持USB1.1协议) 1个SD卡存储接口 1u路立体声音频输出接口,1路音频输入接口 1个2.54mm的20针Jtag接口,可以使用它进行软件仿真和单步调试以及下u-boot 4x4的User Buttons 板载AD转换测试 板载PWM功能测试(控制直流电机调速) 板载44Pin IDE接口 板载实时时钟电池 系统复位开关和指示灯 CAN总线接口 多功能扩展接口 两路DA 开关量若干个 8个数码管 1个蜂鸣器 8个LED灯 1个VGA接口 1个直流电机 1个步进电机 1个扩展FPGA模块的专用接口133软件资源 u-boot-1.1.6 Linux-2.6.13 Windwos CE 无OS的测试程序二 、需求分析随着计算机迅猛发展,WWW 的技术也有了突破性的进展,它解决了远程信息服务中的文字显示、数据连接以及图像传递的问题,使得 WWW 成为 Internet 上最为流行的信息传播方式。 现在,Web 服务器成为 Internet 上最大的计算机群,Web 文档之多、链接的网络之广,令人难以想象。可以说,Web 为 Internet 的普及迈出了开创性的-步,是近年来 Internet 上取得的最激动人心的成就。嵌入式系统已经渗透到各个领域,在32位嵌入式微处理器市场上,基于ARM内核的微处理器在市场上处于绝对的领导地位,因此追踪ARM技术的发展趋势显得尤为重要。在嵌入式操作系统上,Linux-直因其内核精简、代码开发、基于移植等特点受到广大嵌入式能力更加强大,因此有必要为嵌入式系统构建Web服务器。在嵌入式Linux系统中,常用的Web Server有Boa、httpd、thttpd和mini-httpd等。其中Boa是-个运行在类Unix系统中的小型Web Server,适合嵌入式环境。在Boa中若两个用户同时访问,则其中的-个必须等待,它产生独立进程来处理CGI(通用网关接口)程序,因此占用较少的资源,其体系结构如图1所示。Boa的优点在于其快速可靠性。它与其它服务器的区别:没有为CGI程序设置REMOTE_HOST环境变量;没有Server-Side Include(SSI)项,要产生动态网页只能通过CGI:没有设置进入控制,而是根据Linux的文件系统的权限来决定服务的对象:没有chroot选项,即不能改变根目录。 基于以上的阐述,Boa应用到嵌入式平台上有着诸多的优势,本文的嵌入式Web服务器也因此选用Boa作为平台。下面笔者将着重介绍嵌入式Web服务器的硬件平台及软件体系的设计与实现。三、开发环境及系统结构 31 开发环境 1、虚拟机下安装的Redhat9.0;2、交叉编译工具:arm-linux-gcc-4.3.2;3、miin2440开发板;4、移植使用到的软件:(1)boa源文件boa-0.94.13.tar.gz,下载地址:/;(2) cgi库 cgic205.tar.gz,下载地址:/cgic/cgic205.tar.gz。 32 系统结构 嵌入式系统组成框图 专有硬件(嵌入式处理器、存储器、外设等 ) 设备驱动 操作系统内核 API 应用程序 实物连接图 USB 交叉串口线 网 线EMBEST仿真器5V PowerS3C2440 1.8V 3.3V JTAGUART0 网口四、详细设计41 ARM Linux的建立 ARM Linux的建立是基于U-Boot的实现,它的建立实际上是Linux内核在S3C2440上移植的过程,主要分为3个步骤:建立交叉编译环境;编译内核;生成并配置根文件系统。411 建立交叉编译环境 交叉编译的主要特征是某-机器(目标机)中执行的程序代码不是本机编译生成,而是另-台机器(宿主机)编译生成。-般采用的方法是首先在宿主机上编写程序,通过交叉编译生成目标平台上可运行的二进制代码,再下载到目标平台的特定位置上运行。本次设计的通信使用的RS3232串口,在RedHat 9.0里面建立-个能编译arm-linux环境。(1) 添加工作用户rootPC-LINUX # useradd G root g root d /home/arm1 arm rootPC-LINUX # mkdir p/home/arm1rootPC-LINUX # chown R arm /home/arm1rootPC-LINUX #chmod R 775 /home/arm1(2) 建立工作目录 armPC-LINUX arm1 $ mkdir dev_home armPC-LINUX arm1 $ cd dev_home armPC-LINUX dev_home $ mkdir btools kernel(3) 设置环境变量,准备源码及相关补丁。首先是设置环境变量: arm PC-LINUX arml$ vi bashrc export PREFIX=usrlocalarm3.3.2 export TARGET=arm-1inux export SYSROOT=$PREFIX)sysroot export CROSS_COMPILE=$TARGET)- export PATH=$PREFIX)bin:$PATH export SRC=homearmldev_homebtoolstchain3.3.2 接下来准备各个源码包。从网上下载以下源码包:binutils-216targz、 gcc-332tarbz2、glibc-235targz、linux-2613targz。(4)编译GNU binutils。重新以arm用户身份登录,让新设置的环境变量 起作用。 arm PC-LINUX arml$SU arm arm PC-LINUX arml$ cd $SRC) arm PC-LINUX tchain3.3.2$ tar zxvf binutils-216targz arm PC-LINUX tchain3.3.2J$ mkdir -p BUILDbinutils -216 arm PC-LINUX tchain3.3.2$cd BUILDbinutils-216 arm PC-LINUX binuti ls-216$ binutils -216configure -prefix=$PREFIX) -target=$TARGET) -with -sysroot=$SYSROOT) arm PC-LINUX binutils-216$make arm PC-LINUX binutils-216$SU root arm PC-LINUX binutils-216#make instal 1 arm PC-LINUX binutils-216#exit (5)使用当前平台的gcc编译内核头文件。 armPC-LINUX tchain332$cd$KERNEL) armPC-LINUX kernel$tar zxvf 1inux-26141targz armPC-LINUXkernel$ cd 1inux-26141 armPC-LINUX since-26141$cp archarmconfigssmdk2410_defconfigconfig armPC-LINUX linux-261411$ make ARCH:arm menuconfig armPC-LINUX linux-26141$ make include1inuxversionH (6)复制内核头文件。 armPC-LINUX linux-$SU root rootPC-LINUX linux-#mkdir -p $SYSROOT)usrinclude rootPC-LINUX linux-26141#cp -a includelinux$SYSROOT)usrinclude1inux rootPC-LINUX 1inux-#cp -a includeasm-arm$SYSROOT)usrincludeasm rootPC-LINUX 1 inux-#cp -a includeasm-generic $SYSROOT)usrincludeasm-generic rootPC-LINUX 1inux-#exit (7)编译glibc头文件。 armPC-LINUX kernel$cd$SRC) armPC-LINUX tchain332$tar zxvf glibc-235targz armPC-LINUX tchain332$patch -d glibc-235-pliopermcdiff armPC-LINUX tchain3321$cd glibc-235 armPC-LINUX glibc-235$tar zxvfglibc-1 inuxthreads-235.targz armPC-LINUX glibc-235$cd armPC-LINUX tchain332$mkdir BUILDglibc-235-headers armPC-LINUX tchain332$cd BUILDglibc-235-headers armPC-LINUX glibc-235-headers$glibc-235configure -prefix=usr -host=$TARGET)-enable-add-ons=linuxthreads -with-headers=$SYSROOT)usrinclude rootPC-LINUX glibc-235-headers#make cross-compi l ing=yes instal1_root=$SYSROOT)install-headers rootPC-LINUX glibc-235-headers#touch$SYSROOT)usrincludegnustubsh rootPC-LINUX glibc-2.3.5-headers#touch$SYSROOT)/usr/include/bits/stdio_limh rootPC-LINUX glibc235235-headers3#exit (8) 编译gcc第-阶段。 armPC-LINUX glibc-235-headers$cd$SRC) armPC-LINUX tchain332$tar jxvf gcc-332tarbz2 armPC-LINUX tchain332$patch -d gcc-332 -plflowcdiff armPC-LINUX tchain332$patch -d gcc-332 -pl *Enable loadable module support *Automatic kernel module loading System Type-*$3C2440 DMA support Boot options-Default kernel command string: noinitrd root=devmtdblock4 init=1inuxrc console=ttySACO,115200 Floating point emulation-*NWFPE math emulation Device Drivers-Memory Technology Devices(MTD)- *MTD partitioning support *Command line partition table parsing RAMROMF1ash chip drivers-Detect flash chips by Common Flash Interface(CFI) probeDetect non-CFI AMDJEDEC-compatible flash chipsSupport for IntelSharp flash chipsSupport for AMDFujitsu flash chipsSupport for ROM chips in bus mappingCharacter devices-*Nonstandard serial port support*S3C2440 RTC Driver 对文件系统的设置,本文目标板上的文件系统是cramfs,做如下配置:File systems-Second extended fs support注:去除对ext2的支持Pseudo file systems -*proc file system support*Virtual memory file system support(former shm fs)*dev file system support(OBSOLETE)*Automatically mount at boot(NEW)这时会看到本文先前修改fsKconfig的成果,devfs已经被支持上了。Miscellaneous file systems-Compressed ROM file system support(cramfs)为了避免频繁烧写根文件系统,需要建立NFS文件系统,命令如下Network Fi1e Systems -NFS file system supportroot file system on nfs保存退出,产生config文件。 Networking options- IP: kernel level autoconfiguralion (5)编译内核 #make zImage 编译完成之后,在archarmboot目录下会看到-个zlmage文件,这就 是需要烧写到Flash中的内核映像文件。 通过JTAG将zImage下载到Nor Flash(AM29LVl60DB)中,烧写地址为OxO0030000 - Ox00200000。重启目标板,打开超级终端就可以看到内核启动信息。413 生成并配置根文件系统 生成并配置文件系统主要有以下的几个步骤完成:安装busybox工具包;创建文件系统的映象文件:配置文件系统。-个完整的根文件系统包含以下几个目录:bin,应用程序存放目录。几乎所有的应用程序都存放于此。比如1s等,包括功能强大的命令工具集busybox。/sbin,系统管理员服务程序,其中最重要的就是供内核初始化之后执行的sbininit进程。1ib,存放程序运行所需要的动态库。proc,系统状态文件目录。这是用来显示系统状态且真正意义上的虚拟文件系统,目录下的所有文件其实就是“控制面板”才能看到的系统状态信息,可以使用cat命令来显示相应硬件配置及状态信息。所以这是Linux的“控制面板”。dev,驱动程序存放目录。在cramfs文件系统中这是-个空目录,在内核运行后由内核devfs作为安装目录,才产生所有项目,所以实际为空目录。已经编译到内核中的设备驱动程序都将存放于该目录下,包括动态加载的模块驱动也存放于此。etc,系统配置文件及用户数据存放目录。mnt,用于设备安装的目录,通常包含etc子目录和为块设备安装保留目录。其中,etc子目录中包含Linux内核启动时挂载到ramfs文件系统etc下的所有内容。usr,用于存放用户程序和配置文件的目录,可以根据需要进行设置。 (1) cramfs文件系统的创建。 建立-个目录:#mkdir rootfs,作为放置根文件系统的目录,并根据cramfs文件系统结构分别建立目录结构,#mkdir bin sbin dev etc proc lib usr mnt 编译BusyBox。BusyBox是-个著名的开源项目,它是许多嵌入式Linux系统的基石,它用-个极小型的应用程序来提供上述位于bin和sbin中的整个命令集的功能,它还支持动态和静态方式链接glibc,允许根据需要修改缺省配置,选中或移除所包含的命令。Busybox提供的配置界面与Linux菜单配置界面非常相似。首先要到网站下载busybox源代码,busybox-100targz;并解压源文件包:#tar zxvf busybox-I00targz;建立-个符号链接并进入目录:#In -s busybox-100 busybox#cd busybox交叉编译器路径设为:opthostarmv41binarmv4-unknown-1inux-,移植平台为:ARCH=arm。保存退出。交叉编译busybox:#make a11#make install将生成的命令拷贝到上面建立的相应目录中。#cp -abin*rootfsbin#cp -asbin*rootfssbin 复制应用程序运行时所需要的库至1ib下,库文件可以从PC机上的交叉编辑工具安装目录下复制。 在Linux中根据需要建立相应文件的快捷方式,如在rootfs下建立tmp和var快捷方式到mntetctmp和mntetcvar文件夹,这样就可以使用tmp和var 访问ramfs的空间。 关于启动脚本。-般系统启动时都会按要求执行相应的初始化操作。写在命令行里就是init=1inuxrc,这个linuxrc是指向etcinitdrcS文件的-个符号链接。在rcS文件中列出了linux初始化时要执行的文件,rcS文件格式如下:#! binbashsbinifconfig lo 127001 upecho ”echo”Embest Embedded Linux Development Paltform ”echo “Default board ip:192168045”ifconfig eth0 192168045echo”To change the ip addr:ifconfig eth0 new_board_ip”echo”echo”Start the web server:http:(board_ip)testHtml”sbinhttpd -hmntetcvarWWWsbininetdEcho “mountetc as ramfs”binmount n -t ramfs ramfsetcbincp -amntetc*etcbinmount f -t ramfs ramfsetcsbininit 生成映像文件。 完成以上所示的cramfs文件系统结构后,用下面的命令制作映像文件:#mkcramfs rootfs rootfs.cramfsrootfscramfs就是最后要烧写到flash中的映像文件。用JTAG将该文件下载到strata flash(E28F128J3)中,下载地址为:0x08040000-0x09000000。重启目标板,就可以在超级终端中看到整个系统的启动信息了。42 BootLoader的移植BootLoader就是在操作系统内核运行之前运行的-段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到-个合适的状态,以便为最终调用操作系统内核准备好正确的环境。从操作系统的角度BootLoader的总目标就是正确地调用内核来执行。在本Web服务器开发中使用的BootLoader是U-Boot(源代码可以在网上下载)。421 移植的环境 工作用户:root。U-Boot版本:116。交叉编译工具链:2953。 422 移植的步骤 在board子目录中建立S3C2440,并且将smdk2410下的相关文件复制到S3C2410目录下。具 体命令如下: #mkdir boardS3C2440 #cp -rf boardsmdk2440 boardS3C2440 #mv boardS3C24400S3C2440C boardS3C2440S3C2440C #cp includeconfigssmdk2410.h includeconfigsS3C2440h 修改boardS3C2440Makefile文件,将其中的smdk2440o改为S3C2440o。 修改项层Makefile文件。项层Makefile文件负责U-Boot整体配置编译。每-种开发板在Makefile都需要有板子配置的定义。例如smdk2440开发板的定义如下: smdk2440_config:unconfig mkconfigs$(:_config=)arm arm920t smdk2440 NULL s3c24xO 各项的意思如下: arm:CPU的架构(ARCH); arm920t:CPU的类型(CPU),其对应于cpuarm920t子目录; smdk2440:开发板的型号(BoARD),对应于boardsmdk2440目录; NULL:开发商或经销商(vender); s3c24xO:片上系统(SOC)。 模仿上述开发板的定义,对开发板s3c2440进行定义,在smdk2440_config的附近添加: s3c2440-config:unconfig mkconfigs$(:_config=)arm arm920t s3c2440 NULL s3c24xO 这样,执行配置U-Boot的命令make s3c2440_config,通过mkconfig脚本生成include configmk的配置文件。文件内容正是根据Makefile对开发板的配置生成的。 ARCH =arm CPU =arm920t BOARD=s3c2440SOC =s3c24xO修改commoncmd-bootC。如果内核不是uImage,则下载后,U-Boot没有传递参 数给内核,所以启动时会有错误,修改本文件中的相关代码使U-Boot可以传递参数 给内核。其中修改部分如下: #if !defined(CONFIG_NIOS) if(argc=2) re=(ulong(*)(int,char=*)addr)(0,gd - bd-bi_arch_number): else rc=(ulong(*)(int,char*)addr)(-argc,&argv1);修改includeconfigss3c2440h。 将默认下载地址改为0x30008000,具体修改如下: #define CFG-LOAD_ADDR 0x30008000 /* default load address */修改cpuarm920tstart.s文件,实现把内核从Flash拷贝到RAM,修改部分如下: ldr rO,=Ox00030000 *Flash起始地址* ldr rl,=0x30008000 /* ARM起始地址* ldr r2,=OxOOld0000 /*序内核映像大小* add r2,rO,r2修改lowlevel-init.s文件。 修改boards3c2440lowlevel_init.s文件,更改后的代码如下: #include#include#define BWSCON Ox48000000/* BWSCON*/#define DW8 (OxO)#define DWl6 (Oxl)#define DW32 (Ox2)#define WAIT (Oxl2)#define UBLB (Oxl3)#define B1 BWSCON (DWl6)#define B2 BWSCON (DWl6)#define
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届甘肃省平凉崆峒区七下数学期末学业水平测试试题含解析
- 软件设计师考试要点试题及答案总结
- 软件设计师备考必看试题及答案
- 学习如何编写用户友好的API接口试题及答案
- 2025年软件设计师考试模拟题大全试题及答案
- 2025年中学历史知识竞赛试题及答案
- 法学概论与法律科技发展的结合试题及答案
- 调整心态迎接考试的试题及答案软件设计师
- 软件开发中的团队协作技巧试题及答案
- 2025年网络管理员考试报考指南试题
- 砂石料加工合同
- 食物损失和浪费控制程序
- 静脉输血技术操作并发症的预防及处理
- 城镇燃气埋地钢质管道腐蚀控制技术规程培训
- 附件3:微创介入中心评审实施细则2024年修订版
- 全国国道大全(包括里程及路过城市)
- 化学品作业场所安全警示标志大全
- 2024药店质量负责人聘用合同范本
- CJ/T 156-2001 沟槽式管接头
- 黑龙江省齐齐哈尔市五县联考2023-2024学年七年级下学期期末数学试题
- CJJT81-2013 城镇供热直埋热水管道技术规程
评论
0/150
提交评论