虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

交叉编译

交叉编译是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。
  • at91rm9200启动过程教程

    at91rm9200启动过程教程 系统上电,检测BMS,选择系统的启动方式,如果BMS为高电平,则系统从片内ROM启动。AT91RM9200的ROM上电后被映射到了0x0和0x100000处,在这两个地址处都可以访问到ROM。由于9200的ROM中固化了一个BOOTLOAER程序。所以PC从0X0处开始执行这个BOOTLOAER(准确的说应该是一级BOOTLOADER)。这个BOOTLOER依次完成以下步骤: 1、PLL SETUP,设置PLLB产生48M时钟频率提供给USB DEVICE。同时DEBUG USART也被初始化为48M的时钟频率; 2、相应模式下的堆栈设置; 3、检测主时钟源(Main oscillator); 4、中断控制器(AIC)的设置; 5、C 变量的初始化; 6、跳到主函数。 完成以上步骤后,我们可以认为BOOT过程结束,接下来的就是LOADER的过程,或者也可以认为是装载二级BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、连接在外部总线上的8位并行FLASH的顺序依次来找合法的BOOT程序。所谓合法的指的是在这些存储设备的开始地址处连续的存放的32个字节,也就是8条指令必须是跳转指令或者装载PC的指令,其实这样规定就是把这8条指令当作是异常向量表来处理。必须注意的是第6条指令要包含将要装载的映像的大小。关于如何计算和写这条指令可以参考用户手册。一旦合法的映像找到之后,则BOOT程序会把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超过16K-3K的大小。当BOOT程序完成了把合法的映像搬到SRAM的任务以后,接下来就进行存储器的REMAP,经过REMAP之后,SRAM从映设前的0X200000地址处被映设到了0X0地址并且程序从0X0处开始执行。而ROM这时只能在0X100000这个地址处看到了。至此9200就算完成了一种形式的启动过程。如果BOOT程序在以上所列的几种存储设备中找到合法的映像,则自动初始化DEBUG USART口和USB DEVICE口以准备从外部载入映像。对DEBUG口的初始化包括设置参数115200 8 N 1以及运行XMODEM协议。对USB DEVICE进行初始化以及运行DFU协议。现在用户可以从外部(假定为PC平台)载入你的映像了。在PC平台下,以WIN2000为例,你可以用超级终端来完成这个功能,但是还是要注意你的映像的大小不能超过13K。一旦正确从外部装载了映像,接下来的过程就是和前面一样重映设然后执行映像了。我们上面讲了BMS为高电平,AT91RM9200选择从片内的ROM启动的一个过程。如果BMS为低电平,则AT91RM9200会从片外的FLASH启动,这时片外的FLASH的起始地址就是0X0了,接下来的过程和片内启动的过程是一样的,只不过这时就需要自己写启动代码了,至于怎么写,大致的内容和ROM的BOOT差不多,不同的硬件设计可能有不一样的地方,但基本的都是一样的。由于片外FLASH可以设计的大,所以这里编写的BOOTLOADER可以一步到位,也就是说不用像片内启动可能需要BOOT好几级了,目前AT91RM9200上使用较多的bootloer是u-boot,这是一个开放源代码的软件,用户可以自由下载并根据自己的应用配置。总的说来,笔者以为AT91RM9200的启动过程比较简单,ATMEL的服务也不错,不但提供了片内启动的功能,还提供了UBOOT可供下载。笔者写了一个BOOTLODER从片外的FLASHA启动,效果还可以。 uboot结构与使用uboot是一个庞大的公开源码的软件。他支持一些系列的arm体系,包含常见的外设的驱动,是一个功能强大的板极支持包。其代码可以 http://sourceforge.net/projects/u-boot下载 在9200上,为了启动uboot,还有两个boot软件包,分别是loader和boot。分别完成从sram和flash中的一级boot。其源码可以从atmel的官方网站下载。 我们知道,当9200系统上电后,如果bms为高电平,则系统从片内rom启动,这时rom中固化的boot程序初始化了debug口并向其发送'c',这时我们打开超级终端会看到ccccc...。这说明系统已经启动,同时xmodem协议已经启动,用户可以通过超级终端下载用户的bootloader。作为第一步,我们下载loader.bin.loader.bin将被下载到片内的sram中。这个loder完成的功能主要是初始化时钟,sdram和xmodem协议,为下载和启动uboot做准备。当下载了loader.bin后,超级终端会继续打印:ccccc....。这时我们就可以下在uboot了。uboot将被下载到sdram中的一个地址后并把pc指针调到此处开始执行uboot。接着我们就可以在终端上看到uboot的shell启动了,提示符uboot>,用户可以uboot>help 看到命令列表和大概的功能。uboot的命令包含了对内存、flash、网络、系统启动等一些命令。 如果系统上电时bms为低电平,则系统从片外的flash启动。为了从片外的flash启动uboot,我们必须把boot.bin放到0x0地址出,使得从flash启动后首先执行boot.bin,而要少些boot.bin,就要先完成上面我们讲的那些步骤,首先开始从片内rom启动uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz烧写到flash中的目的,假如我们已经启动了uboot,可以这样操作: uboot>protect off all uboot>erase all uboot>loadb 20000000 uboot>cp.b 20000000 10000000 5fff uboot>loadb 21000000 uboot>cp.b 210000000 10010000 ffff 然后系统复位,就可以看到系统先启动boot,然后解压缩uboot.gz,然后启动uboot。注意,这里uboot必须压缩成.gz文件,否则会出错。 怎么编译这三个源码包呢,首先要建立一个arm的交叉编译环境,关于如何建立,此处不予说明。建立好了以后,分别解压源码包,然后修改Makefile中的编译器项目,正确填写你的编译器的所在路径。 对loader和boot,直接make。对uboot,第一步:make_at91rm9200dk,第二步:make。这样就会在当前目录下分别生成*.bin文件,对于uboot.bin,我们还要压缩成.gz文件。 也许有的人对loader和boot搞不清楚为什么要两个,有什么区别吗?首先有区别,boot主要完成从flash中启动uboot的功能,他要对uboot的压缩文件进行解压,除此之外,他和loader并无大的区别,你可以把boot理解为在loader的基础上加入了解压缩.gz的功能而已。所以这两个并无多大的本质不同,只是他们的使命不同而已。 特别说名的是这三个软件包都是开放源码的,所以用户可以根据自己的系统的情况修改和配置以及裁减,打造属于自己系统的bootloder。

    标签: 9200 at 91 rm

    上传时间: 2013-10-27

    上传用户:wsf950131

  • 基于嵌入式Linux的无线多媒体传输系统设计与实现

    本课题来源于浙江省科技厅资助项目“基于DSP技术的全数字实时无线多媒体传输系统的研制”,通过对相关国际标准、关键技术和现有产品的研究和分析,完成系统整体设计方案,并实现了原型系统以进行技术验证。本论文的主要研究内容和成果如下:1.通过比较和研究多种音频、视频编解码标准,提出了适合在资源受限系统中应用的编解码规则,并且利用音视频同步算法和回音消除算法进行优化,使系统更好地满足了音视频传输实时性的需要;2.提出了无线多媒体系统的总体框架,介绍了基于ARM9($3C2410)处理器为硬件平台,嵌入式Linux操作系统为软件平台,WLAN为传输媒介的平台构架和环境搭建,其中包括软硬件选型,交叉编译环境的建立、Bootloader、Linux内核镜像、文件系统的编译、配置和下载:3.实现了上层应用程序模块化设计,从功能上分为五大模块:音视频采集模块、RTP协议无线传输模块、音视频同步模块、音视频播放,显示模块和回音消除模块,并通过Linux多线程编程技术实现了各个模块的代码化,论文给出了各个模块实现的关键技术和算法流程。最后的实验结果表明,媒体流能在整个系统中得到平稳、实时、同步地处理。本课题所研究的基于嵌入式Linux的无线多媒体系统可广泛应用于视频监控、信浙江工业大学硕士学位论文息家电、智能小区、远程抄表等领域,具有很强的实用价值,同时也对未来嵌入式系统研究和无线多媒体技术研究起到一定的参考作用。

    标签: Linux 嵌入式 传输 无线多媒体

    上传时间: 2013-11-15

    上传用户:sdfsdfs1

  • 嵌入式Linux应用开发完全手册_韦东山

    本书全面介绍了嵌入式Linux 系统开发过程中,从底层系统支持到上层GUI 应用的方方面面,内容涵盖Linux 操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识(交叉编译工具的选项设置、Makefile 语法、ARM 汇编指令等),硬件部件的使用及编程(囊括了常见硬件,比如UART、I2C、LCD 等),U-Boot、Linux 内核的分析、配置和移植,根文件系统的构造(包括移植busybox、glibc、制作映象文件等),内核调试技术(比如添加kgdb 补丁、栈回溯等),驱动程序编写及移植(LED、按键、扩展串口、网卡、硬盘、SD 卡、LCD 和USB 等),GUI 系统的移植(包含两个GUI 系统:基于Qtopia 和基于X),应用程序调试技术。

    标签: Linux 嵌入式 完全手册 应用开发

    上传时间: 2013-12-23

    上传用户:life840315

  • 总的来说

    总的来说,在uClinux上的开发和标准Linux还是很类似的。通常可以按照下面的步骤去设计和调试: 建立基于以太网的开发环境; 如果所设计的程序和硬件的关联不大,那么一定要在标准Linux上先编译和调试通过。灵活地使用gcc和gdb将大大节省时间; 将x86上的GCC编译好的应用程序用交叉编译工具来编译;如果编译时发现错误,那么很可能存在以下问题: 交叉编译器或库文件的路径不正确;最彻底的解决办法是重新装一次编译器; 遇到库不支持的函数;此时需要自己把函数的实现做成另外一个库供应用程序使用。如果是uClinux本身不支持的调用,那么就需要改写代码了。

    标签:

    上传时间: 2015-03-14

    上传用户:gaome

  • 本程序是对ARM9的嵌入式系统开发的驱动程序的代码

    本程序是对ARM9的嵌入式系统开发的驱动程序的代码,它的编译环境是交叉编译的GCC,测试通过的代码,里面包含有网络,外围设备等的驱动。内容丰富,很值得一看的。

    标签: ARM9 程序 嵌入式 代码

    上传时间: 2013-12-24

    上传用户:海陆空653

  • ARM体系结构和编程,介绍ARM CPU 的细节

    ARM体系结构和编程,介绍ARM CPU 的细节,包括结构,寻址,指令集,汇编语言,cache管理,存储,函数调用参数传递,交叉编译连接及调试。

    标签: ARM CPU 编程

    上传时间: 2013-11-25

    上传用户:thuyenvinh

  • 这是一个嵌入式系统上运行的中文输入法

    这是一个嵌入式系统上运行的中文输入法, 可以为PDA等手持设备提供一种方便快捷的中文输入法。移植也相当方便,直接交叉编译即可。

    标签: 嵌入式系统 运行 输入法

    上传时间: 2015-05-15

    上传用户:zm7516678

  • 再做嵌入式开发的时候

    再做嵌入式开发的时候,首先要建立交叉编译环境,偶是刚开始做这个项目,希望同行常作交流

    标签: 嵌入式开发

    上传时间: 2015-05-24

    上传用户:txfyddz

  • 新版轻量级嵌入式数据库

    新版轻量级嵌入式数据库,经交叉编译后可用于嵌入式系统。

    标签: 轻量级 嵌入式数据库

    上传时间: 2015-05-29

    上传用户:bruce5996

  • 这是一个嵌入式系统上运行的轻量级数据库

    这是一个嵌入式系统上运行的轻量级数据库,移植也相当方便,直接交叉编译即可。

    标签: 嵌入式系统 运行 轻量级 数据库

    上传时间: 2015-06-03

    上传用户:84425894