信息技术的发展,数字化产品的普及,导致了对嵌入式开发的巨大需求。以Linux为宿主机系统,搭配一个交叉编译环境,为嵌入式设备生成可执行程序己成为现在日益流行的编译嵌入式软件的解决方案。而开放源代码的GNUT具链是一套开源的开发环境,是嵌入式软件开发中理想的交叉编译器。但现有GNUI具链支持的平台并不能满足层出不穷的嵌入式产品的开发需要,仍有许多平台得不到支持,例如我们进行的minix向ARM-MINIX平台的移植。 本文以在linux环境下构建MINIX嵌入式系统的交叉编译工具链为背景,首先介绍了交叉编译系统的基本组成和结构,以及利用GCC构建交叉编译环境的优越性。然后对目标平台作了介绍。分析了GCC编译器,说明了GCC的设计思想,系统结构,介绍了GNU Binutils的功能,使用方法;接着分析了GNU工具链中的GAS和GLD的实现机制及源代码结构,由于BFD是GNUBinutils的基础,GAS和GLD都是使用BFD库来操作目标文件,因此在这一部分本文对BFD库的工作机制,数据结构也作了重点分析。紧接着说明了GCC交叉编译系统的移植思路和方法,实现难点,以及一些相关技术细节,这涉及到了若干重要的C源文件,makeFile,配置文件的修改,重点给出了BFD库,GAS和GLD的分析及其重定向(通常GCC生成的目标程序是针对GNU/Linux系统的)的实现;然后本文给出了在GNU/Linux宿主机上构建针对ARM-MINIX的参数设置及过程:最后对本文所做的工作进行了总结。
上传时间: 2013-05-31
上传用户:wangzhen1990
嵌入式系统近年来随着其信息化、智能化、网络化的发展,被广泛应用于信息家电、移动设备、网络设备和工控仿真的领域,成为继IT网络技术之后,又一个信息产业的主流。本设计使用的是ARM9嵌入式开发板。ARM(AdvancedRISCMachines)公司的32位RISC处理器有着高速度、低功耗、低成本、功能强、特有16/32位双指令集等诸多优异的性能。 随着生产业快速发展,工厂企业车间的不断增加,对厂房的管理和设备的保护越来越受到重视。本论文主要阐述了监控系统中无线终端的设计与研究,其中涉及到嵌入式网络浏览器在工厂监控设备中的应用,本监控系统的采集设备如摄像头、仪表等将视频、图像、温度等数据通过下位机上传至控制中心,控制中心将这些数据存储于网页中,用户使用手持终端,以无线上网的方式,通过嵌入式浏览器登陆网页,实现远程监控,达到实时监控的目的。 本论文第一章综合叙述嵌入式系统的基本概念。第二章阐述基于S3C2410X的嵌入式系统开发平台的基本架构及各个组成部分。第三章介绍了监控系统无线终端的开发平台的设计。第四章主要阐述了LCD触摸屏校正程序的设计。第五章讲述了嵌入式浏览器的研究,makeFile的编写与电机控制模块的设计。
上传时间: 2013-04-24
上传用户:Miyuki
第一章 概述 1.1 AVR 单片机GCC 开发概述 1.2 一个简单的例子 1.3 用makeFile 管理项目 1.4 开发环境的配置 1.5 实验板CA-M8 第二章 存储器操作编程 2.1 AVR 单片机存储器组织结构 2.2 I/O 寄存器操作 2.3 SRAM 内变量的使用 2.4 在程序中访问FLASH 程序存储器 2.5 EEPROM 数据存储器操作 2.6 avr-gcc 段结构与再定位 2.7 外部RAM 存储器操作 2.8 堆应用 第三章 GCC C 编译器的使用 3.1 编译基础 3.2 生成静态连接库 第四章 AVR 功能模块应用实验 4.1 中断服务程序 4.2 定时器/计数器应用 4.3 看门狗应用 4.4 UART 应用 4.5 PWM 功能编程 4.6 模拟比较器 4.7 A/D 转换模块编程 4.8 数码管显示程序设计 4.9 键盘程序设计 4.10 蜂鸣器控制 第五章 使用C 语言标准I/O 流调试程序 5.1 avr-libc 标准I/O 流描述 5.2 利用标准I/0 流调试程序 5.3 最小化的格式化的打印函数 第六章 CA-M8 上实现AT89S52 编程器的实现 6.1 编程原理 6.2 LuckyProg2004 概述 6.3 AT989S52 isp 功能简介 6.4 下位机程序设计 第七章 硬件TWI 端口编程 7.1 TWI 模块概述 7.2 主控模式操作实时时钟DS1307 7.3 两个Mega8 间的TWI 通信 第八章 BootLoader 功能应用 8.1 BootLoader 功能介绍 8.2 avr-libc 对BootLoader 的支持 8.3 BootLoader 应用实例 8.4 基于LuckyProg2004 的BootLoader 程序 第九章 汇编语言支持 9.1 C 代码中内联汇编程序 9.2 独立的汇编语言支持 9.3 C 与汇编混合编程 第十章 C++语言支持
上传时间: 2013-08-01
上传用户:飞翔的胸毛
·H.264 RTSP 串流 (live 555) 視窗版本 (THE makeFile had modified for VC 2008 BUILD)
上传时间: 2013-04-24
上传用户:asddsd
·详细说明:已经验证过的ITU G.729B源码 1.使用定点运算, 纯c实现 2.已经附带了VC6的项目文件(原始的ITU源码只有makeFile,没有VC项目文件), 方便初学者入门使用 3.用于测试G.729编码和解码 4.主要应用于VoIP项目 文件列表: ITU-T G.729 Source code ...................
上传时间: 2013-08-01
上传用户:matlab
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。
上传时间: 2013-10-27
上传用户:wsf950131
AVR 单片机与GCC编程 目录第一章 AVR 单片机开发概述1.1 一个简简单的例子1.2 用makeFile 管理项目1.3 开发环境的配置第二章 存储器操作2.1 AVR 单片机存储器组织结构2.2 I/O 寄存器操作2.3 SRAM 内变量的使用2.4 在程序中访问FLASH 程序存储器2.5 EEPROM 数据存储器操作2.6 avr-gcc 段结构与再定位第三章 功能模块编程示例3.1 中断服务程序3.2 定时器/计数器应用3.3 看门狗应用3.4 UART 应用3.5 PWM 功能编程3.6 模拟比较器3.7 A/D 转换模块编程第四章 使用C 语言标准I/O 流调试程序4.1 avr-libc 标准I/O 流描述4.2 利用标准I/0 流调试程序第五章 AT89S52 下载编程器的制作5.1 LuckyProg S52 概述5.2 AT89S52 ISP 功能简介5.3 程序设计第六章 硬件TWI 端口编程6.1 TWI 模块概述6.2 主控模式操作实时时钟DS13076.3 两个Mega8 间的TWI 通信第七章 BootLoader 功能应用7.1 BootLoader 功能介绍7.2 avr-libc 对BootLoader 的支持7.3 BootLoader 应用实例 第八章 汇编语言支持8.1 C 代码中内联汇编程序8.2 独立的汇编语言支持8.3 C 与汇编混合编程第九章 C++语言支持结束语附录 1 avr-gcc 选项附录 2 ihex 格式描述
上传时间: 2013-10-26
上传用户:wangyi39
AVR单片机GCC程序设计:第一章 概述1.1 AVR 单片机GCC 开发概述1.2 一个简单的例子1.3 用makeFile 管理项目1.4 开发环境的配置1.5 实验板CA-M8第二章 存储器操作编程2.1 AVR 单片机存储器组织结构2.2 I/O 寄存器操作2.3 SRAM 内变量的使用2.4 在程序中访问FLASH 程序存储器2.5 EEPROM 数据存储器操作2.6 avr-gcc 段结构与再定位2.7 外部RAM 存储器操作2.8 堆应用第三章 GCC C 编译器的使用3.1 编译基础3.2 生成静态连接库第四章 AVR 功能模块应用实验4.1 中断服务程序4.2 定时器/计数器应用4.3 看门狗应用4.4 UART 应用4.5 PWM 功能编程4.6 模拟比较器4.7 A/D 转换模块编程4.8 数码管显示程序设计4.9 键盘程序设计4.10 蜂鸣器控制第五章 使用C 语言标准I/O 流调试程序5.1 avr-libc 标准I/O 流描述5.2 利用标准I/0 流调试程序5.3 最小化的格式化的打印函数第六章 CA-M8 上实现AT89S52 编程器的实现6.1 编程原理6.2 LuckyProg2004 概述6.3 AT989S52 isp 功能简介6.4 下位机程序设计第七章 硬件TWI 端口编程7.1 TWI 模块概述7.2 主控模式操作实时时钟DS13077.3 两个Mega8 间的TWI 通信第八章 BootLoader 功能应用8.1 BootLoader 功能介绍8.2 avr-libc 对BootLoader 的支持8.3 BootLoader 应用实例8.4 基于LuckyProg2004 的BootLoader 程序第九章 汇编语言支持9.1 C 代码中内联汇编程序9.2 独立的汇编语言支持9.3 C 与汇编混合编程第十章 C++语言支持附录 1 avr-gcc 选项附录 2 Intel HEX 文件格式描述
上传时间: 2014-04-03
上传用户:ligi201200
755页高清版Linux C编程一站式教程,如果你在做Linux软件开发,请不要错过。 makeFile,Shell,文件系统,I/O,信号,进程,线程,TCP/IP,UDP,Socket编程等等内容
上传时间: 2013-10-23
上传用户:lo25643
本书全面介绍了嵌入式Linux 系统开发过程中,从底层系统支持到上层GUI 应用的方方面面,内容涵盖Linux 操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识(交叉编译工具的选项设置、makeFile 语法、ARM 汇编指令等),硬件部件的使用及编程(囊括了常见硬件,比如UART、I2C、LCD 等),U-Boot、Linux 内核的分析、配置和移植,根文件系统的构造(包括移植busybox、glibc、制作映象文件等),内核调试技术(比如添加kgdb 补丁、栈回溯等),驱动程序编写及移植(LED、按键、扩展串口、网卡、硬盘、SD 卡、LCD 和USB 等),GUI 系统的移植(包含两个GUI 系统:基于Qtopia 和基于X),应用程序调试技术。
上传时间: 2013-12-23
上传用户:life840315