谁iar怎么生成bin文件VxWorks_rom.bin

在vxWorks下的BSP开发指南-五星文库
免费文档下载
在vxWorks下的BSP开发指南
导读:这种映象的优点是生成的VxWorks映象可以存放在开发主机PC机上,在Tornado开发环境中,这种映象的优点是生成的VxWorks映象可以存放在开发主机PC机上,不用烧到BOOT中,节省了BOOT容量,也便于随时修改不同的VxWorks映象,适用于调试的初期阶段。不足之处是需要在主机上维护一个正确的VxWorks映象,对于调试硬件无关的上层应用程序显得不是很方便。在Tornado工作台的Bu
这种映象的优点是生成的VxWorks映象可以存放在开发主机PC机上,不用烧到BOOT中,节省了BOOT容量,也便于随时修改不同的VxWorks映象,适用于调试的初期阶段。不足之处是需要在主机上维护一个正确的VxWorks映象,对于调试硬件无关的上层应用程序显得不是很方便。
在Tornado工作台的Build窗口中,选择Rules属性页中的VxWorks即可生成可加载的VxWorks映象。
基于ROM的VxWorks映象
这是一种运行于RAM中,但起初存放于ROM中的VxWorks映象。即该映象需要和搬移程序一起固化在BOOT中。目标板上电后,首先运行BOOT中的引导搬移程序,将整个VxWorks映象拷贝到RAM地址RAM_LOW_ADRS处,并跳转到此处执行。如图2所示。
图2 基于ROM的VxWorks映象
该映象根据是否被压缩又可分为:
? 基于ROM的未压缩的VxWorks映象,可直接从ROM拷贝到RAM中
? 基于ROM的压缩的VxWorks映象,这种映象主要是为了节约BOOT空
间,在从ROM拷贝到RAM的过程中需要解压缩,因此与上述未压缩的映象相比,它的引导过程相对较慢,但两者在RAM中的运行速度是一样的。
驻留ROM的VxWorks映象
这种映象起初也和搬移程序一起固化在BOOT中。目标板上电后,首先运行BOOT中的引导搬移程序,但仅将VxWorks映象的数据段和BSS段拷贝到RAM地址RAM_LOW_ADRS处,映象的代码段仍旧留在ROM中,从ROM中开始执行。如图3所示。
这种映象的优点是具有最快的引导速度,占用最少的RAM空间,适用于RAM空间有限的目标板。但是由于该映象在ROM中运行,运行速度在三种映象中是最慢的。
图3 驻留ROM的VxWorks映象
4 几种不同的BOOTROM的比较
针对上述三种不同的VxWorks映象,可以生成以下几种不同的BOOTROM,主要体现在执行搬移程序romStart( )( 位于bootInit.c文件中)时不同:
用于可加载VxWorks映象的BOOTROM
由图1所示可知,用于可加载VxWorks映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和ROM引导程序(ROM Boot Programs)。
起始引导程序驻留在ROM中,主要包含:
? 汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设置一
些重要寄存器的初始值,进行存储器的映射
? 搬移程序bootInit.c,将ROM引导程序拷贝至RAM的高端地址
RAM_HIGH_ADRS,然后跳转到此处执行ROM引导程序。
ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中,主要用于系统的进一步初始化,并配置加载方式,将VxWorks映象加载至RAM。可分为三种不同的类型:
? 压缩的ROM引导程序,在拷贝的过程中需要解压缩,在RAM中执行 ? 未压缩的ROM引导程序,可直接拷贝,在RAM中执行
? 驻留ROM的ROM引导程序,仅拷贝ROM引导程序的数据段,代码段仍旧
在ROM中执行
在Tornado开发环境中,通过在主窗口点击Build|Build Boot ROM?可以选择生成以上
三种BOOTROM,分别为:bootrom_uncmp.hex(未压缩的BOOTROM),bootrom.hex(压缩的BOOTROM),bootrom_res.hex(驻留的BOOTROM)。
静态连接到可加载的VxWorks映象的系统初始化代码执行并完成整个初始化过程。
引导过程成功以后,RAM中ROM引导程序占用的空间(从RAM_HIGH_ADRS开始)可以重新被系统利用。
图1中所示的各地址含义为:
? LOCAL_MEM_LOCAL_ADRS是RAM的起始地址
? RAM_LOW_ADRS是VxWorks的加载点,也是VxWorks代码段的起始位置 ? FREE_RAM_ADRS是VxWorks映象的结束点。通常也是系统内存池和目标
服务器内存池的起始地址
? RAM_HIGH_ADRS是ROM引导程序的加载点。它也是ROM引导程序(除驻
留ROM引导程序之外)的代码段的起始位置,或驻留ROM引导程序数据段的起始位置。
用于基于ROM的VxWorks映象的BOOTROM
由图2所示可知,用于该映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和基于ROM的VxWorks映象。搬移程序bootInit.c负责将VxWorks映象的文本段和数据段搬移到用户定义的低端内存地址RAM_LOW_ADRS,如果需要进行必要的解压缩,然后直接启动VxWorks映像。
因此BOOTROM的容量相对于1节中描述的BOOTROM要大一些,但无需在主机目录下维护一个可用的VxWorks映象。
基于ROM的VxWorks BOOTROM有压缩和未压缩之分。在Tornado工作台的Build窗口中,选择VxWorks映象Rules属性页中的VxWorks_rom即可生成基于ROM的未压缩的VxWorks BOOTROM,选中VxWorks_romCompress即可生成基于ROM的压缩的VxWorks BOOTROM。
用于驻留ROM的VxWorks映象的BOOTROM
由图3所示可知,用于该映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和驻留ROM的VxWorks映象,VxWorks系统文本段驻留在ROM,搬移程序bootInit.c负责将数据段和bss段搬移到用户定义的低端内存地址RAM_LOW_ADRS,直接启动VxWorks映像(含符号表)。此时,RAM_LOW_ADRS是VxWorks映象的加载点,它也是VxWorks数据段的起始点。 在Tornado工作台的Build窗口中,选择VxWorks映象Rules属性页中的VxWorks_romResident即可生成驻留ROM的VxWorks BOOTROM。
5 BSP的执行流程
下面以“BootRom + vxWorks”的启动形式说明BSP的执行流程:
包含总结汇报、党团工作、专业文献、人文社科、文档下载、旅游景点、出国留学、办公文档、教程攻略、外语学习以及在vxWorks下的BSP开发指南等内容。本文共6页
相关内容搜索后使用快捷导航没有帐号?
查看: 3860|回复: 11
请问如果要在860上用压缩的vxworks,在BSP还是在makefile里边修改啊?
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
因为加了一个库在里边,所以生成的vxworks_rom.hex(vxworks_rom.bin)文件太大了,编译不了,大于4m,而板上的flash片子只有4M大小,所以想用压缩的,但不知道怎么用,请高手请教!
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
已经是压缩的了。建议把库放到vxworks里面而不是bootrom,或者把bootrom不需要的驱动都去掉。
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
你这个是不是将bootloader和应用程序做在一起了?也可以,就是维护上麻烦。
不知道你里面都有些什么,如果东西太多,那只能换更大的flash了。
另外,我怀疑你的符号表还在里面,建议你将符号表去掉了在压缩。 工具链中的objcopy或者strip都可以做到的。而且你的工程文件中有这样的选项的,要不要符号表。
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
vxworks_rom.hex只是基本型,你可以用vxworks_romcompress.hex型啊,这才是压缩型。
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
对的 ,我需要用vxworks_romcompress.hex型,那我在BSP里边也需要改动了,那在解压的时候方便不方便呢?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
看看romstart函数就知道了。
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
工程的builds里,rule选直接选择vxWorks_romCompress.bin
前提是你bsp已经没问题了,解压缩的过程只要几个关键的符号没错就没问题,BSP不需要做太大改动吧~~~.hex的我没用过就不知道了
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
另外如果还不行那就把符号表和SHELL去掉吧~
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
重要的符号大多是链接器产生的,只要编译选项rules选择为vxWorks_romCompress.bin就行了。
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
用rar或者zip压缩,从flash加到内存时解压就可以了,这是经典用法
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
如果用bootrom将TFFS中的vxWorks_romCompress映象加载到RAM中去,这种方式可行么?我用bootorm+vxWorks可以,用bootrom+vxWorks_romCompress却不行,每次到Loading时就死了,不知道什么原因?希望各位朋友给点意见。
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
有点难度哦
Powered by
逛了这许久,何不进去瞧瞧?查看: 665|回复: 3
求帮忙:如 何样在workbench下生成vxworks.st镜像?
求帮忙:如 何样在workbench下生成vxworks.st镜像?有知道的说下哈,感 谢了
编写makefile,运用运用命令行方式来编译
治理员你好,请帮忙下如 何样修改vxWork6.6版本的makefile文件呢 比如:
CPU& &&&= ARMARCH5
TOOL& & = gnu
EXTRA_DEFINE&&= -DCPU_926E \
& && &-DARMMMU=ARMMMU_926E \
& && &-DARMCACHE=ARMCACHE_926E
TGT_DIR = $(WIND_BASE)/target
include $(TGT_DIR)/h/make/defs.bsp
# Only redefine make definitions below this point, or your definitions will
# be overwritten by the makefile stubs above.
TARGET_DIR&&= atml_at91sam9260ek
VENDOR&&= Atmel
BOARD& &= AT91SAM9260-EK
RELEASE_CMD+= bootrom.bin
# The constants ROM_TEXT_ADRS and ROM_SIZE are defined in config.h and Makefile.
# All definitions for these constants must be identical.
ROM_TEXT_ADRS = 23F00000 # ROM entry address
ROM_SIZE&&=
# number of bytes of ROM space for boot image
RAM_LOW_ADRS&&=
# RAM text/data address
RAM_HIGH_ADRS = 20c00000 # RAM text/data address
VMA_START = 0x$(ROM_TEXT_ADRS)
# MACH_EXTRA for USB TCD peripheral operation
# MACH_EXTRA= usrUsbTargMsInit.ousbTcdAt91InitExit.o usbTargMsLib.o
# Only redefine make definitions above this point, or the expansion of
# makefile target dependencies may be incorrect.
include $(TGT_DIR)/h/make/rules.bsp
是不是俺要修改rules.bsp文件呢,俺该如 何样修改这个文件呢,麻烦说具体点,先感 谢了
俺顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!作业_嵌入式吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:41,799贴子:
第1章 嵌入式Linux和硬件平台基础知识 目前Linux 已广泛应用于信息家电、数据网络、工业控制、医疗卫生航空航天等众多领域。在嵌入式领域,随着价格低廉、结构小巧的各种微处理器的产生为外设连接提供了稳定可靠的硬件架构,限制嵌入式系统发展的瓶颈就突出表现在软件方面。尽管从八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Vxworks、pSOS、Neculeus 和Windows CE。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步,并且其源代码的封闭性也大大限制了开发者的积极性。结合中国实情,当前国家对自主操作系统的大力支持,为源码开放的LINUX 的推广提供的广阔的发展前景。对上层应用开发者而言,嵌入式系统需要的是一套高度简练、界面友善、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。Linux 对厂商不偏不倚而且成本极低,能够很快成为用于各种设备的操作系统。如今,业界已经达成共识:即嵌入式Linux 是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。1.1 嵌入式Linux 简介Linux 正在嵌入式开发领域稳步发展。因为 Linux 使用 GPL,所以任何对将 Linux 定制于自己特定开发板或PDA、掌上机、可佩带设备感兴趣的人都可以从因特网免费下载其内核和应用程序,并开始移植或开发。许多 Linux 改良品种迎合了嵌入式市场。它们包括 RTLinux(实时 Linux)、uclinux(用于非 MMU 设备的 Linux)、Montavista Linux(用于 ARM、MIPS、PPC 的 Linux 分发版)、ARM-Linux(ARM 上的 Linux)和其它 Linux 系统。嵌入式Linux 的发展比较迅速。NEC、索尼已经在销售个人视频录像机等基于Linux 的消费类电子产品,摩托罗拉则计划在其未来的大多数手机上使用Linux,IBM 也制定了在手持机上运行Linux的计划。数年来,“Linux 标准库”组织一直在从事对在服务器上运行的Linux 进行标准化的工作,现在,嵌入式计算领域也开始了这一工作。嵌入式Linux 标准吸引了“Linux 标准库”以及Unix 组织中有益的元素。在嵌入式系统中使用 Linux 的优点和缺点:虽然大多数 Linux 系统运行在 PC 平台上,但 Linux 也可以作为嵌入式系统的可靠主力。Linux 的安装和管理比 UNIX 更加简单灵活,这对于那些 UNIX 专家们来说又是一个优点,因为Linux 中有许多命令和编程接口同传统的 UNIX 一样。但是对于习惯于WINDOWS 操作系统的人来说,需要记忆大量的命令行参数却是一个缺点。随着LINUX 社团的不断努力,Linux 的人机界面开发环境正在不断完善。典型的Linux 系统经过打包,在拥有硬盘和大容量内存的 PC 机上运行,嵌入式系统不需要这么高的配置。一个功能完备的 Linux 内核要求大约 1 MB 内存。而 Linux 微内核只占用其中很小一部分内存,包括虚拟内存和所有核心的操作系统功能在内,只需占用系统约100 K 内存。只要有500 K 的内存,一个有网络栈和基本实用程序的完全的 Linux 系统就可以在一台 8 位总线(SX)的 Intel 386 微处理器上运行的很好了。由于内存要求常常是需要的应用所决定的,比如 Web 服务器或者 SNMP 代理,Linux 系统甚至可以仅使用 256 KB ROM 和 512 KB RAM 进行工作。因此它是一个瞄准嵌入式市场的轻量级操作系统。与传统的实时操作系统相比(RTOS),采用象嵌入式 Linux 这样的开放源码的操作系统的另外一个好处是 Linux 开发团体看来会比 RTOS 的供应商更快地支持新的 IP 协议和其它协议。例如,用于 Linux 的设备驱动程序要比用于商业操作系统的设备驱动程序多,如网络接口卡(NIC)驱动程序以及并口和串口驱动程序。核心 Linux 操作系统本身的微内核体系结构相当简单。网络和文件系统以模块形式置于微内核的上层。驱动程序和其它部件可在运行时作为可加载模块编译到或者是添加到内核。这为构造定制的可嵌入系统提供了高度模块化的构件方法。而在典型情况下该系统需结合定制的驱动程序和应用程序以提供附加功能。
2016年嵌入式,就来上海&达内&,专业嵌入式培训,零基础学习,名师八对一.达内嵌入式仅88天入门到精通,学完推荐就业.嵌入式培训咨询&&&
嵌入式系统也常常要求通用的功能,为了避免重复劳动,这些功能的实现运用了许多现成的程序和驱动程序,它们可以用于公共外设和应用。Linux 可以在外设范围广泛的多数微处理器上运行,并早已经有了现成的应用库。Linux 用于嵌入式的因特网设备也是很合适的,原因是它支持多处理器系统,该特性使Linux具有了伸缩性。因而设计人员可以选择在双处理器系统上运行实时应用,提高整体的处理能力。例如,您可以在一个处理器运行 GUI,同时在另一个处理器上运行 Linux 系统。在嵌入式系统上运行 Linux 的一个缺点是 Linux 体系提供实时性能需要添加实时软件模块。而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。已经有许多嵌入式 Linux 系统的示例;可以有把握地说,某种形式的 Linux 能在几乎任一台执行代码的计算机上运行。1.2 嵌入式Linux 开发平台简介SEED-OMAP3530 是基于德州仪器(TI)OMAP3530 处理器的评估套件。OMAP3530 处理器集成了600MHz 的 ARM Cortex™-A8 内核及430MHz 的具有高级数字信号处理算法的DSP核,并提供了丰富的外设接口。SEED-OMAP3530 提供了丰富的外设接口:网口、DVI 视频输出、TV-OUT、音频输入输出、USB OTG、USB HOST、SD/MMC、串口、JTAG、复合视频输入、200 万像素摄像头、7 寸TFT 真彩触摸屏、GPS 模块、GSM/GPRS 模块、WIFI 模块、锂电池等。SEED-OMAP3530 评估套件为开发者使用OMAP3530 处理器提供了完善的软件开发平台,支持linux-2.6.28 操作系统,并包含完善的底层驱动程序,方便用户快速评估OMAP35x 处理器、设计系统驱动及其定制应用软件,并提供有成熟的操作系统Angstrom(GPE)的发布版本。图1 SEED-OMAP3530 板卡SEED-OMAP3530 硬件资源:l&& 处理器:OMAP3530 处理器(兼容OMAP3503 处理器)l&& 片外存储器:HYH0SQJ0MF3P-5L60E-C(1Gb NAND Flash & 1Gb mDDR)l&& 一路 RS232l&& 一个 GPS 模块l&& 一个 GSM 手机模块(支持GPRS 网络连接)l&& 一路复合模拟视频输入l&& 一个 200 万像素摄像头模块l&& 一路 DVI 视频输出l&& 一路复合模拟视频输出l&& 7 寸TFT 真彩触摸屏l&& 一路音频输入,一路音频输出(板卡自带麦克风及扬声器,同时支持耳麦)l&& 一个 MMC/SDl&& 一个 OTG 接口(扩出3 个HOST 接口)l&& 一个 WIFI 模块l&& 一个 10/100 Mbps 网口l&& 3.8V 锂电系统的功能框图如下:图2 功能框图 SEED-OMAP3530 硬件系统大致可分为处理器模块、接口模块和电源模块。1.2.1 OMAP3530 处理器模块l&& OMAP3530 主芯片SEED-OMAP3530 系统的主处理器为OMAP3530,包含一个600-MHz Cortex™-A8 ARM 和一个430-MHz TMS320C64x+™ DSP。采用423 针CUS 封装。l&& 片外存储器SEED-OMAP3530 片外存储器采用HYH0SQJ0MF3P-5L60E-C。该器件包含1Gb NAND Flash和1Gb mDDR。1.2.2 OMAP3530 外设及接口模块SEED-OMAP3530 主板上包含了系统所需要的所有接口以及连接器。l&& GPSSEED-OMAP3530 板卡配置有GPS 模块。可实现系统定位,系统导航等功能。通过OMAP3530的UART1 连接。采用的模块为GPM-13153。
l&& GSMSEED-OMAP3530 板卡配置有GSM 模块。用户只需装入SIM 卡,即可实现打电话,发短信,GPRS 上网等功能。通过OMAP3530 UART2 连接。采用的模块为PIML900/1800。l&& 网口SEED-OMAP3530 支持一个10M/100M 的以太网接口,采用DM9000 芯片。l&& WIFISEED-OMAP3530 板卡集成一个USB WIFI 无线网卡,与OMAP3530 OTG 扩展口相连。l&& MMC/SD 内存卡接口SEED-OMAP3530 支持一组MMC/SD 接口,四组数据线模式以及+3.3V 操作电压。l&& USB 接口SEED-OMAP3530 主板上共有4 个USB HOST 和一个USB MINIB 接口,全部由OMAP3530 OTG接口扩展。4 个USB HOST 接口中有3 个可提供给用户使用,另一个连接了WIFI 模块。USB HOST 与USB SLAVE 不可同时使用,需要通过跳线J19-21 进行选择。l&& 异步串口SEED-OMAP3530 主板配备有标准RS232 接口,与OMAP3530 UART3 连接。可实现UBOOT,串口控制台等功能。l&& 音频接口SEED-OMAP3530 支持音频输入、输出。除了可外接耳麦,板卡上还自带MIC 和扬声器。l&& 视频输入SEED-OMAP3530 支持复合模拟视频输入和CMOS 摄像头输入。由于OMAP3530 只有一个CAM 接口所以两种输入不可同时使用,通过GPIO139 进行选择。l&& 视频输出SEED-OMAP3530 支持3 种视频输出:7 寸液晶触摸屏,分辨率800*480;DVI 输出,最大支持HD 720p;复合模拟视频输出。l&& 调试接口SEED-OMAP3530 支持14 Pin JTAG 调试接口。作为主处理器OMAP3530 的调试接口,在CCS 环境下进行调试。JTAG 调试接口可用来进行测试,调试,运行,追踪和下载。1.2.3 电源模块电源模块采用OMAP3530 专用电源管理芯片TPS65930。TPS65930 主要特性:提供OMAP3530 所有电源,并支持SmartReflex 动态电源管理;支持音频接口;提供USB OTG PHY。1.3 嵌入式Linux 开发流程在一个嵌入式系统中使用Linux 开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过如下的过程:1、 建立开发环境,操作系统一般使用REDHAT-LINUX,版本7 到9 都可以,选择定制安装或全部安装,通过网络下载相应的GCC 交叉编译器进行安装(比如arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。OMAP3530平台使用的交叉编译器是codesourcery推出的arm-2007q3版本arm-none-linux-gnueabi-gcc。2、 配置开发主机,配置MINICOM,一般的参数为波特率115200,数据位8 位,停止位1,无奇偶校验,软件硬件流控设为无。在WINDOWS 下的超级终端的配置也是这样。MINICOM 软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络,主要是配置NFS 网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。3、 建立引导装载程序BOOTLOADER,从网络上下载一些公开源代码的BootLoader,如U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT 等,根据自己具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如三星的ARM7、ARM9 系列芯片,这样就需要编写烧写开发板上FLASH 的烧写程序,网络上有免费下载的WINDOWS 下通过JTAG 并口简易仿真器烧写ARM 外围FLASH 芯片的烧写程序。也有LINUX 下的公开源代码的J-FLASH 程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。如果您购买了厂家的仿真器当然比较容易烧写FLASH 了,这对于需要迅速开发自己的应用的人来说可以极大提高开发速度,但是其中的核心技术是无法了解的。4、 下载别人已经移植好的Linux操作系统,如UCLINUX、ARM-LINUX、PPC-LINUX 等,如果有专门针对您所使用的CPU 移植好的LINUX 操作系统那是再好不过,下载后再添加自己的特定硬件的驱动程序,进行调试修改,对于带MMU 的CPU 可以使用模块方式调试驱动,对于UCLINUX 这样的系统好像只能编译进内核进行调试。5、 建立根文件系统,从 下载使用BUSYBOX 软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc 目录下,包括:/etc/init.d/rc.S 、/etc/profile 、/etc/.profile 等, 自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs genromfs 等工具产生烧写映象文件。
6、 建立应用程序的FLASH 磁盘分区,一般使用JFFS2 或YAFFS 文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性FLASH(NOR 型)512K-32M,有的系统使用非线性FLASH(NAND 型)8-512M,有的两个同时使用,需要根据应用规划FLASH 的分区方案。7、 开发应用程序,可以放入根文件系统中,也可以放入YAFFS、JFFS2 文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于UCOS-II 的方式。8、 烧写内核、根文件系统、应用程序。9、 发布产品。1.4 建立嵌入式Linux 开发环境SEED-OMAP3530 Linux 开发环境通常包括Linux 服务器、Windows 工作台及SEED-OMAP3530 平台三者处于同一个网络中,如图3所示:图3开发设备关联开发工程师在Linux 服务器上建立交叉编译环境,Windows 工作台通过串口和JTAG 与OMAP3530 开发平台连接,开发人员可以在Windows工作进行程序开发或者远程登陆到Linux服务器进行开发。Linux 服务器搭建建议选择常用的Linux 发行版本,便于各种资源的搜集,建议采用以下版本的Linux 发行版:u&& ‰ Red Hat Enterprise Linux v3u&& ‰ Red Hat Enterprise Linux v4u&& ‰ Red Hat 9u&& ‰ SUSE v10.0 Workstationu&& ‰ Fedora Core v7u&& ‰ Fedora Core v8u&& ‰ Fedora Core v9u&& ‰ Ubuntu 8.04其中Red Hat 9 是很多Linux 开发者采用的比较老的版本的Linux,也是Linux Starter首选的Linux 发行版本,而Ubuntu 8.04 系列和Fedora Core v9使用较多的系统,使用较为方便。Linux 系统PC 机端的安装,在此不做详细介绍,可以很方便的从网络上获取需要的信息。安装Linux 系统过程中,选择关闭防火墙。设计中提供的环境是Windows工作主机上通过Vmware Workstation ACE Edition 虚拟安装FC9版本的Linux服务器。1.4.1 软件描述SEED-OMAP3530 平台的软件开发套件包含以下软件组件:X-Loader 1.4.2;U-Boot 1.3.3;Kernel 2.6.28;交叉编译器;文件系统。系统环境要求‰&&&&& PC 端要求:开发用的PC 端硬件配置不低于Intel Penium Dual-Core T2410 或同等能力以上的处理器,1G 内存,20G 以上硬盘空间。推荐使用Windows Xp Sp3 操作系统。‰&&&&& 软件要求:Linux 操作系统,如果使用虚拟机建议使用VMware4.0 以上版本。Linux 版本建议使用Ubuntu 8.10 以上版本或者Redhat 9 以上版本。开发用到的工具要求:超级终端或串口调试工具;Tftp server。1.4.2 SDK 的安装SEED-SDK 的安装建议完全按照以下步骤与路径进行配置,以简化后续各种配置的繁琐,安装过程需要以root 账号登陆Linux 服务器(在Redhat 下面可以直接以root 权限登录,在Ubuntu 下面需要切换用户),且一直以root 权限进行所有操作,开发过程也推荐使用root 权限进行开发。约定:Host # 表示Linux 开发机(服务器)控制台提示符Target # 表示OMAP3530 平台的串口控制台提示符
SEED-SDK 安装到Linux 服务器的安装步骤如下:l&& 复制 SDK将OMAP3530 Development Software 目录下的SDK 开发套件OMAP3530_SDK.tar.gz 复制到Linux 的/home 目录下;l&& 安装和解压‰ 在 Linux 服务器下进入到/home 目录下,进行解压安装操作,使用命令:
Host # tar zxvf OMAP3530_SDK.tar.gz‰ 该过程将所需要的软件安装到/home 根目录下,安装过程需要5-10 分钟,请等待完成。‰ SEED-SDK 安装完成后,在/home 下创建如下目录:SEED-SDK 该目录下为ARM 端的交叉编译器,X-Loader, u-Boot, Linux 内核以及目标文件系统;l&& SDK 的配置SEED-SDK 安装完毕仅需对其进行简单的配置即可以使用。下面以FC9为例在说明SDK 的配置。安装交叉编译器Host # cp –R ./SEED-SDK/Codesourcery /opt 在/home 目录下面,执行如下指令:
配置交叉编译器PATH1.&& Host # cd /root
以root 操作,进入到root 根路径,打开终端,执行命令:
2.修改root 目录下.bashrc 文件。Linux 下的文本编辑器有许多,常用的有vi 和Xwindows 下的gedit 等.使用任意一种文本编辑器打开.bashrc 文件,添加如下内容,保存退出并且重启以使之生效即可:Export PATH=/opt/Codesourcery/arm-none-linux-gnueabi/arm-2007q3/bin:/home/SEED_SDK/u-boot/tools:$PATH
3. 用户可以通过如下方式测试交叉编译器是否可以使用,在Linux 服务器控Host # arm-none-linux-gnueabi-gcc
制台输入如下命令:
显示如下信息时,表示配置正常:图4 正确的SDK 配置至此,SEED-SDK 开发工具安装完毕。
第二章 嵌入式Linux 开发基础及实验 一、实验目的熟悉OMAP3530平台下Linux的开发环境,学会使用makefile 管理项目。熟悉arm-none-linuxeabi-gcc交叉编译工具的使用。使用基于tftp方式的下载调试,了解嵌入式开发的基本过程。二、实验内容1、建立开发环境实验室的PC主机都已经建立好了开发环境,有兴趣的同学可以参考第一章内容自行设置。2、软件编译和烧写2.1 SEED-OMAP3530 X-loader 编译X-loader是OMAP3530平台最初始的引导程序,源码是在Linux 的/home/SEED-SDK 目录下的xloader.tar.gz 文件,在linux 的/home 目录下面解压后。Host # cd /home/SEED-SDK/xloaderHost # make distcleanHost # make omap3530seed_configHost # make
编译生成x-load.bin.ift, 在当前目录下(/home/SEED-SDK/xloader),接下来生成的初始引导程序MLO 也在当前目录下(/home/SEED-SDK/xloader)。 Host # ./signGPHost # cp x-load.bin.ift MLO
2.2 SEED-OMAP3530 u-Boot 编译&&&&&&& u-Boot是开源的通用嵌入式系统引导程序之一。SEED-SDK中包括了修改好的u-Boot 程序源码,这部分是基于ARM 端的应用程序。SEED-SDK 包中包含uboot.tar.gz 文件,在Linux 的/home 目录下面解压后,SEED-OMAP3530的源码在Linux 的/home/SEED-SDK 目录下。程序修改后,需要重新编译,执行如下命令进行编译:Host # cd /home/SEED-SDK/u-bootHost # make distcleanHost # make omap3530seed_configHost # make
以上操作对u-boot下的所有源码进行了编译,编译生成的OMAP3530上的可执行程序u-boot.bin 文件在当前目录下(/home/SEED-SDK/u-boot)。将编译U-boot 生成的u-boot.bin 拷入SD 卡的FAT32 分区上,这样新编译的u-boot就加载到OMAP3530 板卡上,因SD卡中已经有u-boot.bin文件,此步骤略过。
将SEED OMAP3530 平台的BOOT 方式(拨码开关)设置为SD 卡启动(默认设置,不要改动)。将OMAP3530 平台的串口DB9 连接到PC 机的COM1(或COM2)串口;配置PC 机端的超级终端或串口调试工具,设置串口参数:波特率115200,数据位8,奇偶校验无,停止位1,数据流控制无,这里应用Linux下串口调试工具minicom,已经设置好,不用更改。在Linux&& 环境下打开终端,敲入命令minicom,SEED-OMAP3530 平台采用5V-5A 电源上电,此时终端控制台显示启动信息,类似于下图所示,证明u-Boot 运行成功。图5 u-boot运行结果2.3 SEED-OMAP3530 Linux 内核编译SEED-OMAP3530 Linux 的内核源码安装在Linux的/home/SEED-SDK/kernel-2.6.28 目录下,用户需要修改内核源码时可在此目录下进行操作,修改完毕在该目录下进行编译就可以生成uImage 内核二进制文件。l&& SEED-OMAP3530 Linux 内核配置SEED-OMAP3530 Linux 配置编译步骤如下:Host # cd /home/SEED-SDK/kernel-2.6.28Host # make distcleanHost # make omap3_seed_defconfig
如果需要修改编译配置文件,运行下面的命令:Host # make menuconfig
运行menuconfig 后出现如下界面: 图6 Linux内核配置界面图6是Linux 内核配置界面,通过键盘上下左右键进行选择配置,添加删减不要的内核模块,配置完成后退出并保存配置即可。关于Linux 内核的配置可以参考标准PC 机下Linux 内核配置,这里不作详细介绍。 l&& SEED-OMAP3530x 内核编译SEED-OAMP3530 内核配置保存后,运行下面指令进行内核编译:Host #make uImage
编译过程可能需要较长时间,等待编译完成生成uImage 文件,该文件在当前目录下的arch/arm/boot/目录下。&&& 3、开发应用程序并植入 3.1 建立工作目录在Linux主机上建立工作目录,执行如下命令。host# cd /homehost# rm –rf 01_hellohost# mkdir 01_hellohost# cd 01_hello
3.2 编写程序源代码 在Linux下的文本编辑器有许多,常用的是vim, Xwindow 界面下的gedit ,kwrite等,另外我们也可以使用像Kdevelop、Eclipse这样的IDE软件,它们的界面与vc6.0 类似,使用它们对于熟悉windows 下开发的用户会很容易操作。这里,我们在开发过程中推荐使用vim,用户需要学习vim 的操作方法,请参考相关书籍中的关于vim 的操作指南。本实验程序如下:C语言和汇编语言混合编程,键盘输入1个十进制数x,用汇编语言计算3*x^2+2*x^3,由终端输出计算结果。主函数文件为ex3.c:#include &stdio.h& extern int compute(int data);int main(){printf("Input x=");scanf("%d",&x);printf("The result is %d\n",compute(x));return 0;}
包含计算3*x^2+2*x^3过程的文件为compute.S:.text.align.global compute compute:stmfd sp!,{r4-r11,r14}mul r1,r0,r0mov r3,#2mul r2,r1,r3mov r3,#3mul r4,r1,r3mla r0,r2,r0,r4ldmfd sp!,{r4-r11,r15}
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 bios bin文件转换rom 的文章

 

随机推荐