作为新能源与汽车工业相结合的产物,燃料电池汽车已经逐渐成为了汽车家族的后起之秀。随着电子控制单元与车载设备的不断增多,传统内燃机汽车的仪表盘已经不能满足以燃料电池为动力的汽车仪表复杂信息显示的要求。本文以燃料电池汽车为研究背景,设计开发了基于嵌入式技术的仪表系统,实现了对燃料电池汽车整车运行状态以及模块数据的实时监测、存储与图形化显示。 本文介绍了燃料电池汽车仪表系统的设计原理,对仪表系统进行了需求分析,确定了系统整体框架与模块划分,提出了基于ARM微处理器、实时操作系统以及图形用户界面的仪表系统解决方案。该方案采用高性能的S3C44BOX作为底层核心处理器,以RTOS和GUI为中间层构建软件系统平台,在此基础上以实时多任务软件设计方法进行仪表系统应用程序的开发。 在上述方案的基础上,进行了仪表系统硬件平台的设计,包括存储器系统、通信总线、人机交互界面等接口电路的设计。根据高速数字电路的设计要求,在双面板上实现了基于ARM的燃料电池汽车仪表系统的PCB布线。编写了系统初始化代码,完成了对硬件平台的调试工作。 根据仪表系统的实际情况,选择了实时多任务操作系统μC/OS-Ⅱ和嵌入式图形用户界面μC/GUI作为本系统的软件平台,完成了两者在仪表系统硬件平台上的移植。针对μC/GUI环境下简体中文汉字的显示问题,给出了一种比较完善的解决方案。μ按照实时多任务软件的开发流程,设计了仪表系统应用程序,包括CAN总线监听任务、数据处理任务、用户界面任务以及历史数据记录任务等,划分了各个任务的优先级,确定了任务之间的通信同步机制,描述了各个任务的主要功能和实现方法,重点论述了基于μC/GUI的用户界面任务设计的思路与过程,最后介绍了在硬件平台上进行系统集成、软硬件联合调试以及系统测试的流程。
上传时间: 2013-06-20
上传用户:2780285129
本课题是江苏省“十一五”工业攻关项目“总线化智能多参数高精度检测及控制仪表开发与产业化(BE2006090)”。本项目要求多环境参数测控、多总线接口,选择具有丰富接口的高速处理器作为本项目的核心。为满足多参数测控精度和多网络接口通讯可靠性,嵌入式设计是应用系统的理想选择。本文所研究的多参数测控装置是以三星公司生产的32位ARM微处理器S3C2410为核心的嵌入式系统,该系统能实时地获取水环境参数,为水环境和多总线接口提供基本的数据和控制信息。 本文详细地介绍了MODBUS和CAN-BUS总线协议和通讯原理,阐述了水产养殖几个重要环境参数一溶解氧、温度、PH值的检测算法原理、以及传感器调理电路和温度、溶解氧的控制策略,进行了测控系统的硬件架构和各个模块的原理设计,实现了操作系统的移植,编写了驱动程序。在基于QT/E环境下实现了系统的测控和总线通讯部分上层软件设计。提出并实施了系统测试方案,成功地完成了测控系统的硬件、软件测试、以及通信功能测试和现场在线测试。 本论文的研究开发工作是在实践的基础上完成的,实验结果证明该系统充分利用了S3C2410芯片提供的资源,具有高性能、低功耗、低成本的优点,在各个方面的性能比传统的水环境参数测控系统有很大提高,通过测试实现了预期的各种功能,完全达到预期要求。
上传时间: 2013-06-28
上传用户:zuozuo1215
进入20世纪90年代后,随着全球信息化、智能化、网络化的发展,嵌入式系统技术获得了前所未有的发展空间。 嵌入式系统的最大特点之_是其所具有的目的性或针对性,即每一套嵌入式系统的开发设计都有其特殊的应用场合与特定功能,这也是嵌入式系统与通刚的计算机系统最主要的区别。由于嵌入式系统是为特定的目的而设计的,且常常受到体积、成本、功能、处理能力等各种条件的限制。因此,如果可以最大限度地提高应用系统硬件上和软件上的灵活性,就可以用最低的成本,最少的时间,快速的完成功能的转换。 本课题的目的在于提出并设计一种基于ARM(Advanced RISC Machines)和CPLD(Complex Programmable Logic Device)的可扩展功能嵌入式系统平台,并完成了系统的硬件设计和PCI(Peripheral Component Interconnect)桥的固件设计。设计过程中采用美国ALTIUM公司的ALTIUM DESIGNER 6.0 EDA软件开发了系统的硬件部分。在整个硬件开发环节中,充分采用高速PCB(Printed Circuit Board)的设计原则,并进行全面的电路仿真试验,保证了硬件系统的高度可靠性。本系统承袭了ARM7系列处理器高性能、低功耗、低成本的优点,并充分考虑到用户的需要,扩展了多种常用的外部设备接口以及蓝牙无线接口等,为将米各种可能的应用提供了完善的硬件基础。概括总结起来本文具体工作如下: 1.完全自主设计了具有高扩展性的基于LPC2292嵌入式处理器的嵌入式系统应用开发平台。基于该硬件平台,可以实现许多基于ARM架构处理器的嵌入式应刚而无需对硬什系统作出大的改变,如多协议转换器、CAN(Control Area Network)总线网关、以太网关、各种工业控制应用等。并在具体的设计实践中,总结出了嵌入式系统硬件平台的设计原则及设计方法。 2.完成了基于CPLD的PCI桥接芯片的同什设计,在ARM硬件平台上成功扩展了PCI设备,成功解决了ARM处理器和PCI从设备之间通讯的问题。 3.完成了对所开发的嵌入式系统硬件平台的测试工作,完成了基于AT89C51的PCI测试卡软硬件设计。基于此测试卡,可以实现对系统中的PCI通讯功能进行有效测试,以保证整个硬件系统正常、高效、稳定地运行。本系统的设计完成,使其可以作为嵌入式应用的二次开发或实验平台,用于工业产品开发及高校相关专业的实践教学。
上传时间: 2013-05-22
上传用户:sztfjm
自上世纪90年代Linux首次应用于嵌入式系统,至今已过了近10年。10年间,随着芯片技术、总线技术以及计算机技术的发展,嵌入式处理器也从8位单片机时代发展到了如今高低端处理器百花齐放的时代。32位、16位处理器的价格不再是那么高不可攀。在这种背景下,本课题拟研究一种适用于小规模现场的,低成本的,具有RS-232C和CAN总线通讯方式且可在线进行软件更新的监控系统。 现今,很多监控系统都以装有微软操作系统的IPC作为监督平台,以单片机、PLC、DSP等作为DDC控制器,通过串口等方式通讯。其开发周期短,但成本总体较高,通讯方式单一。 本课题首先对几种嵌入式处理器和嵌入式操作系统进行比较,确定了以ARM核的处理器和Linux作为本监督平台的处理器和操作系统;其次研究了Linux在ARM上的移植以及运行过程,包括引导加载程序vivi、Linux2.6内核、根文件系统、各种外设(包括触摸屏与以太网等)驱动程序的移植,以及基于Qt/E的串口通讯的图形用户界面的开发;最后对CAN总线以及RS-232C通讯方式在ARM7核的处理器及单片机上的应用进行研究。 基于以上研究开发的监控系统的监督平台以S3C2410处理器为核心,以Linux2.6内核为操作系统,以触摸屏为主要人机界面,具有RS-232C和以太网通讯方式,其成本较低,体积较小,功能较为灵活;其DDC控制器由基于STC5410AD和ARM7核的LPC2119的两块控制板以及一块RS-232C与CAN总线转换板组成,其控制功能更加强大,通讯方式也更加多样化;另外,监督平台与DDC控制器均可在线更新程序,降低了系统维护难度。 经过实践调试,本监控系统的软硬件均工作正常,实现了预期目标。本监控系统可应用于电力、化工、机电等多个领域的现场,具有较强的通用性。
上传时间: 2013-07-08
上传用户:zhch602
北京航空航天大学出版社,深入浅出ARM7--LPC213x214x下册,周立功等编著。本书全面介绍了以LPC213x/LPC214x两个系列ARM芯片为硬件平台的各种应用开发,详细分析了嵌入式实时操作系统μC/OS-II在ARM7上的移植和应用。第101-180页。
上传时间: 2013-06-11
上传用户:tianjinfan
为了改变目前电网现场作业管理的变电巡检、变电检修试验、输电线路巡检检修等管理系统各自独立运行,信息不能共享,功能、效率受限,建设和维护成本高的现状,提出了采用B/S+C/S构架模式,将各现场作业管理模块和生产MIS(管理系统)集成为一体的现场作业管理系统的设计方案,做到各子系统和生产MIS软硬资源共享,做到同一数据唯一入口、一处录入多处使用。各子系统设备人员等基础信息来源于生产管理系统,各子系统又是生产管理系统的作业数据、缺陷信息的重要来源。经过研究试用成功和推广应用,目前该系统已在江西电网220 kV及以上变电站全面应用。 Abstract: In order to improve the status that the substation field inspection system, substation equipments maintenance and testing system, power-line inspection and maintenance system are running independent with each other. They can?蒺t share the resource information which accordingly constrains their functions and efficiency, and their construction and maintenance costs are high. This paper introduces a field standardized work management system based on B/S+C/S mode, integrating all field work management systems based on MIS and share the equipments and employee?蒺s data of MIS,the field work data of the sub systems are the source information of MIS, by which the same single data resouce with one-time input can be utilized in multiple places. After the research and testing, this system is triumphantly using in all 220kV and above substations in Jiangxi grid.
上传时间: 2013-11-15
上传用户:han_zh
本书针对Atmel公司的AVR系列单片机和ImageCraft公司的ICC AVR开发环境,详细地介绍了AT90LS8535的C语言程序设计。全书共有13章,其内容既涉及到了单片机的结构原理、指令系统、内容资源和外部功能扩展,又包含了单片机的编程工具——ICC AVR C编程器的数据类型、控制流、函数和指针等。本书的特点是:深入浅出,从最基本的概念开始,循序渐进地讲解单片机的应用开发;列举了大量实例,使读者能从实际应用中掌握单片机的开发与应用技术。本书适合作为从事单片机开发人员的参考用书。书中先后讲解了C语言基础、AVR单片机基础,并举了一些简单的实例。本书非常适合初学者。 【目录信息】 第1章 单片机系统概述 1. 1 AVR系列单片机的特点 1. 2 AT90系列单片机简介 第2章 AT90LS8535单片机的基础知识 2. 1 AT90LS8535单片机的总体结构 2. 1. 1 AT90LS8535单片机的中央处理器 2. 1. 2 AT90LS8535单片机的存储器组织 2. 1. 3 AT90LS8535单片机的I/O接口 2. 1. 4 AT90LS8535单片机的内部资源 2. 1. 5 AT90LS8535单片机的时钟电路 2. 1. 6 AT90LS8535单片机的系统复位 2. 1. 7 AT90LS8535单片机的节电方式 2. 1. 8 AT90LS8535单片机的芯片引脚 2. 2 AT90LS8535单片机的指令系统 2. 2. 1 汇编指令格式 2. 2. 2 寻址方式 2. 2. 3 伪指令 2. 2. 4 指令类型及数据操作方式 2. 3 应用程序设计 2. 3. 1 程序设计方法 2. 3. 2 应用程序举例 第3章 AT90LS8535单片机的C编程 3. 1 支持高级语言编程的AVR系列单片机 3. 2 AVR的C编译器 3. 3 ICCAVR介绍 3. 3. 1 安装ICCAVR 3. 3. 2 设置ICCAVR 3. 4 用ICCAVR编写应用程序 3. 5 下载程序文件 第4章 数据类型. 运算符和表达式 4. 1 ICCAVR支持的数据类型 4. 2 常量与变量 4. 2. 1 常量 4. 2. 2 变量 4. 3 AT90LS8535的存储空间 4. 4 算术和赋值运算 4. 4. 1 算术运算符和算术表达式 4. 4. 2 赋值运算符和赋值表达式 4. 5 逻辑运算 4. 6 关系运算 4. 7 位操作 4. 7. 1 位逻辑运算 4. 7. 2 移位运算 4. 8 逗号运算 第5章 控制流 5. 1 C语言的结构化程序设计 5. 1. 1 顺序结构 5. 1. 2 选择结构 5. 1. 3 循环结构 5. 2 选择语句 5. 2. 1 if语句 5. 2. 2 switch分支 5. 2. 3 选择语句的嵌套 5. 3 循环语句 5. 3. 1 while语句 5. 3. 2 do…while语句 5. 3. 3 for语句 5. 3. 4 循环语句嵌套 5. 3. 5 break语句和continue语句 第6章 函数 6. 1 函数的定义 6. 1. 1 函数的定义的一般形式 6. 1. 2 函数的参数 6. 1. 3 函数的值 6. 2 函数的调用 6. 2. 1 函数的一般调用 6. 2. 2 函数的递归调用 6. 2. 3 函数的嵌套调用 6. 3 变量的类型及其存储方式 6. 3. 1 局部变量 6. 3. 2 局部变量的存储方式 6. 3. 3 全局变量 6. 3. 4 全局变量的存储方式 6. 4 内部函数和外部函数 6. 4. 1 内部函数 6. 4. 2 外部函数 第7章 指针 7. 1 指针和指针变量 7. 2 指针变量的定义和引用 7. 2. 1 指针变量的定义 7. 2. 2 指针变量的引用 7. 2. 3 指针变量作为函数参数 7. 3 数组与指针 7. 3. 1 指向数组元素的指针变量 7. 3. 2 数组元素的引用 通过指针 7. 3. 3 数组名作为函数参数 7. 3. 4 指向多维数组的元素的指针变量 7. 4 字符串与指针 7. 4. 1 字符串的表示形式 7. 4. 2 字符串指针变量与字符数组的区别 7. 5 函数与指针 7. 5. 1 函数指针变量 7. 5. 2 指针型函数 7. 6 指向指针的指针 7. 7 有关指针数据类型和运算小结 7. 7. 1 有关指针的数据类型的小结 7. 7. 2 指针运算的小结 第8章 结构体和共用体 8. 1 结构体的定义和引用 8. 1. 1 结构体类型变量的定义 8. 1. 2 结构体类型变量的引用 8. 2 结构类型的说明 8. 3 结构体变量的初始化和赋值 8. 3. 1 结构体变量的初始化 8. 3. 2 结构体变量的赋值 8. 4 结构体数组 8. 4. 1 结构体数组的定义 8. 4. 2 结构体数组的初始化 8. 5 指向结构体类型变量的指针 8. 5. 1 指向结构体变量的指针 8. 5. 2 指向结构体数组的指针 8. 5. 3 指向结构体变量的指针做函数参数 8. 6 共用体 8. 6. 1 共用体的定义 8. 6. 2 共用体变量的引用 第9章 A190LS8535的内部资源 9. 1 I/O 口 9. 1. 1 端口A 9. 1. 2 端口B 9. 1. 3 端口C 9. 1. 4 端口D 9. 1. 5 I/O口的编程 9. 2 中断 9. 2. 1 单片机的中断功能 9. 2. 2 AT90LS8535单片机的中断系统 9. 2. 3 1CCAVRC编译器的中断操作 9. 2. 4 中断的编程 9. 3 串行数据通信 9. 3. 1 数据通信基础 9. 3. 2 AT90LS8535的同步串行接口 9. 3. 3 AT90LS8535的异步串行接口 9. 4 定时/计数器 9. 4. 1 定时/计数器的分频器 9. 4. 2 8位定时/计数器0 9. 4. 3 16位定时/计数器1 9. 4. 4 8位定时/计数器2 9. 5 EEPROM 9. 5. 1 与EEPROM有关的寄存器 9. 5. 2 EEPROM读/写操作 9. 5. 3 EEPROM的应用举例 9. 6 模拟量输入接口 9. 6. 1 模数转换器的结构 9. 6. 2 ADC的使用 9. 6. 3 与模数转换器有关的寄存器 9. 6. 4 ADC的噪声消除 9. 6. 5 ADC的应用举例 9. 7 模拟比较器 9. 7. 1 模拟比较器的结构 9. 7. 2 与模拟比较器有关的寄存器 9. 7. 3 模拟比较器的应用举例 第10章 AT90LS8535的人机接口编程 10. 1 键盘接口 10. 1. 1 非矩阵式键盘 10. 1. 2 矩阵式键盘 10. 2 LED显示输出 10. 2. 1 LED的静态显示 10. 2. 2 LED的动态扫描显示 10. 2. 3 动态扫描显示专用芯片MC14489 10. 3 LCD显示输出 10. 3. 1 字符型LCD 10. 3. 2 点阵型LCD 10. 4 ISD2500系列语音芯片的编程 10. 4. 1 ISD2500的片内结构和引脚 10. 4. 2 ISD2500的操作 10. 4. 3 ISD2500和单片机的接口及编程 10. 5 TP-uP微型打印机 10. 5. 1 TP-uP打印机的接口和逻辑时序 10. 5. 2 P-uP打印机的打印命令和字符代码 10. 5. 3 AT90LS8535与TP-uP系列打印机的接口及编程 10. 6 IC卡 10. 6. 1 IC卡读写装置 10. 6. 2 IC卡软件 第11章 AT90LS8535的外围扩展 11. 1 简单I/O扩展芯片 11. 1. 1 用74LS377扩展数据输出接口 11. 1. 2 数据输入接口 11. 2 模拟量输出 11. 2. 1 D/A转换器简介 11. 2. 2 8位数模转换器DAC0832 11. 2. 3 8位数模转换器与单片机的接口及编程 11. 2. 4 12位数模转换器DACl230 11. 2. 5 12位数模转换器与单片机的接口及编程 11. 3 可编程I/O扩展芯片8255A 11. 3. 1 8255A的引脚和内部结构 11. 3. 2 8255A的工作方式 11. 3. 3 8255A的控制字 11. 3. 4 AT90LS8535和8255A的接口 11. 4 带片内RAM的I/O扩展芯片8155 11. 4. 1 8155的引脚和内部结构. 11. 4. 2 8155的I/O口工作方式 11. 4. 3 8155的定时/计数器 11. 4. 4 8155的命令和状态字 11. 4. 5 AT90LS8535与8155的接口及编程 11. 5 定时/计数器芯片8253 11. 5. 1 8253的信号引脚和逻辑结构 11. 5. 2 8253的工作方式 11. 5. 3 8253的控制字 11. 5. 4 AT90LS8535与8253的接口及编程 11. 6 实时时钟芯片DS1302 11. 6. 1 DS1302的引脚和内部结构 11. 6. 2 DS1302的控制方式 11. 6. 3 AT90LS8535与DS1302的接口与编程 11. 7 数字温度传感器DS18B20 11. 7. 1 DSl8B20的引脚和内部结构 11. 7. 2 DS18B20的温度测量 11. 7. 3 AT90LS8535与DS18B20的接口与编程 第12章 AT90LS8535的通信编程 12. 1 串口通信 12. 1. 1 异步串口UART通信 12. 1. 2 同步串口SPI通信 12. 2 I2C总线 12. 2. 1 I2C总线协议 12. 2. 2 采用AT90LS8535的并行I/O口模拟I2C总线 12. 3 CAN总线 12. 3. 1 CAN总线的特点 12. 3. 2 CAN协议的信息格式 12. 3. 3 CAN控制器SJA1000 12. 3. 4 AT90LS8535与SJA1000的接口及编程 12. 4 AT90LS8535单片机与PC的串行通信 12. 4. 1 基于VC 6. 0的PC串口通信 12. 4. 2 应用实例 第13章 系统设计中的程序处理方法 13. 1 数字滤波处理 13. 1. 1 平滑滤波 13. 1. 2 中值滤波 13. 1. 3 程序判断滤波 13. 2 非线性处理 13. 2. 1 查表法 13. 2. 2 线性插值法
上传时间: 2013-11-04
上传用户:元宵汉堡包
新唐科技(原华邦电子逻辑事业群),自2010年成功推出ARM® Cortex™-M0为内核的32位单片机 - NuMicro™ 家族后,持续专注于新一代微控制器系列产品的开发。同时,32位单片机的发展前景备受各方瞩目,在工业控制、消费电子、汽车电子、高速计算与通讯控制等应用领域的推波助澜下,32位单片机的成本和性价比展现令人期待的成长爆发力。2012年新唐再度大展身手,开发出多款新系列32位带有 CAN BUS 设备的低功耗NUC130与NUC140系列单片机。
上传时间: 2013-10-17
上传用户:
2004年初恩智浦(NXP)推出了基于ARM7内核处理器的首个闪存微控制器系列。自此以来,恩智浦ARM系列微控制器阵容不断壮大,占据广阔的应用领域。包括ARM968、ARM926和Cortex-M3内核处理器系列。这些系列产品拥有丰富的外设,如以太网、USB、CAN和电机控制等。
上传时间: 2013-11-12
上传用户:mickey008
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