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

BMS协议

  • 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

  • MODBUS主/从协议栈

    MODBUS主/从协议栈:MODBUS协议是MODICOM公司1979年开发的一个为很多厂商支持的开放规约。它用来为各种智能设备建立相互通信。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。目前仅在北美和欧洲有超过7百万个这样的设备,越来越多的厂家为他们的产品增加MODUBS功能。

    标签: MODBUS 协议栈

    上传时间: 2014-12-28

    上传用户:wsq921779565

  • Microchip ZigBee协议栈

    Microchip ZigBee协议栈:ZigBee™ 是专为低速率传感器和控制网络设计的无线网络协议。有许多应用可从ZigBee 协议受益,其中可能的一些应用有:建筑自动化网络、住宅安防系统、工业控制网络、远程抄表以及PC 外设。与其他无线协议相比, ZigBee 无线协议提供了低复杂性、缩减的资源要求,最重要的是它提供了一组标准的规范。它还提供了三个工作频带,以及一些网络配置和可选的安全功能。如果您正在寻求现有的控制网络技术(例如RS-422、RS-485)或专有无线协议的替代方案, ZigBee 协议可能是您所需的解决方案。此应用笔记旨在帮助您在应用中采用ZigBee 协议。 可以使用在应用笔记中提供的Microchip ZigBee 协议栈快速地构建应用。为了说明该协议栈的用法,本文包含了两个有效的演示应用程序。可将这两个演示程序作为参考或者根据您的需求经过简单修改来采用它们。此应用笔记中提供的协议栈函数库实现了一个与物理层无关的应用程序接口。 因此,无需做重大修改就可以轻松地在射频(Radio Frequency,RF)收发器之间移植应用程序。在此文档末尾的“常见问题解答”中提供了有关Microchip 协议栈和用法的一些常见问题及其答案。

    标签: Microchip ZigBee 协议栈

    上传时间: 2013-10-08

    上传用户:u789u789u789

  • TM-CIA与TMvideoDVR通讯协议.doc

    TM-CIA与TMvideoDVR通讯协议.doc

    标签: TMvideoDVR TM-CIA 通讯协议

    上传时间: 2013-11-20

    上传用户:妄想演绎师

  • Xmodem协议中CRC算法的FPAG实现

    基于解决Xmodem协议中CRC校验的目的,以经典的LFSR硬件电路为基础,采用了按字节并行运算CRC校验码,以及多字节CRC算法的方法。在Quartus II环境下,通过以VHDL语言仿真试验,得出Xmodem协议中CRC校验,以多字节循环并行CRC算法能够满足高速实时性要求的结论。

    标签: Xmodem FPAG CRC 协议

    上传时间: 2013-11-18

    上传用户:lty6899826

  • HDLC协议RS485总线控制器的FPGA实现

    介绍了HDLC协议RS485总线控制器的FPGA实现

    标签: HDLC FPGA 485 RS

    上传时间: 2013-11-04

    上传用户:heart_2007

  • BACnet协议网关介绍

    BACnet协议网关介绍 SymLink家族,采用生态开放技术体系,可迅速响应客户的定制开发服务。SymLink工业智能机,是工业物联网时代物与物、人与物的交流利器  

    标签: BACnet 协议 网关

    上传时间: 2014-12-28

    上传用户:jinyao

  • 非标通讯协议转标准以太网Modbus协议模块定制

    以太网 Modbus协议是当今世界上应用最为广泛的 工业自动化通信协议,国家标准为 GB/T 19582-2008《基于Modbus协议的工业自动化网络规范》, 以太网 Modbus的优点:

    标签: Modbus 通讯协议 标准 以太网

    上传时间: 2014-01-09

    上传用户:Bert520

  • 基于RS485的数据通信协议的设计与实现

    基于现场可编程门阵列(FPGA),设计了采用RS485标准的数据通信协议。其中,高速信号接收,采用同步485通信协议,高速接口包括时钟和数据两个信号,时钟速率3.6864 MHz,利用同步时钟上升沿检测数据。低速信号接收采用异步485通信协议,波特率115.2 kbps,每字节1个起始位,8个数据位,1个截止位。针对高速数据接收时的情况,加入1 MB 容量的静态存储器SRAM作为缓存,保证接收数据的可靠性。

    标签: 485 RS 数据通信 协议

    上传时间: 2013-10-10

    上传用户:笨小孩

  • zigbee协议栈各层分析

    对协议栈的各层分析

    标签: zigbee 协议栈

    上传时间: 2013-10-09

    上传用户:ligi201200