Bootrom功能改进经验谈

合集下载

3、创建能够硬盘启动的bootrom【孔令宽】

3、创建能够硬盘启动的bootrom【孔令宽】

创建能够硬盘启动的bootrom孔令宽2009-9-10 本文主要介绍创建bootrom的一般方法,关于添加rtl8139驱动,请参考《8139驱动完全版》。

要在计算机上运行vxworks,就需要一个引导程序来启动内核,bootrom就是这个功能。

而bootrom的运行需要一个载体,可以使软盘,也可以是硬盘。

现在软盘比较难找,所以本文主要介绍在硬盘上安装bootrom。

运行条件:首先要注意,不是所有的PC机都能安装上VxWorks,最基本的条件是,需要PATA硬盘,现在流行的串口硬(SATA)盘vxworks 不支持。

————【华力创通公司工程师说的】。

而且由于X86平台(PC机)不像ARM平台,有JTAG调试接口,所以一旦VxWorks启动过程中出现问题,除了经验之外,没有办法知道到底是哪里出了错误。

这也是比较头疼的问题。

制作bootrom需要使用Tornado自带的BSP包(我们实验室里面用的BSP包是X86架构机器的BSP包,在安装完Tornado后安装的那个)。

根据计算机的CPU型号来选择,一般选择“pcPentium”这个BSP包,如果不能正常工作,再尝试用其他的BSP包。

这个文件夹的目录在C:\Tornado2.2\target\config 。

我们新建一个新的目录,名称自己定,我这里取名为KLKBSPExample,把pcPentium文件夹里面的所有文件复制到KLKBSPExample目录里。

在开始之前我先介绍一个DOS命令:Displays the name of or changes the current directory.CD [drive:][path] 进入到driver:盘path目录下CD [..] 退出一级子目录(文件夹)CD [\] 退出到根目录Specifies that you want to change to the parent directory.我们需要一个2进制文本编辑工具来修改代码内容,这样比较方便,我推荐用UltraEdit-32。

在P2020平台下使用串口更新Bootrom

在P2020平台下使用串口更新Bootrom

在P2020平台下使用串口更新Bootrom周加谊;蒲永材;李中【摘要】针对传统情况下更新bootrom需要取下存储芯片编程,频繁操作会对主板底座造成伤害问题,论文提出了一种在P2020平台下启动vxWorks系统后使用串口在线更新bootrom的方法.定义了一套基于串口的通信传输协议,为保障数据在传输过程中完整性和正确性,在传输过程中采取了校验和重传机制.最后文章介绍了flash烧写的具体实现过程.测试结果显示,该方法具有可靠性高和成功率高的特性.【期刊名称】《机电产品开发与创新》【年(卷),期】2017(030)005【总页数】3页(P92-94)【关键词】P2020;串口;在线烧写;vxWorks;bootrom【作者】周加谊;蒲永材;李中【作者单位】中国兵器装备集团自动化研究所武器装备信息与控制研发中心,四川绵阳621000;中国兵器装备集团自动化研究所武器装备信息与控制研发中心,四川绵阳621000;中国兵器装备集团自动化研究所武器装备信息与控制研发中心,四川绵阳621000【正文语种】中文【中图分类】TN914;N随着嵌入式系统的快速发展,其中VxWorks系统凭借其良好的可持续性、高性能的内核等优点越来越受到人们的关注。

由于该系统的强实时性、高稳定性以及内核的可裁剪性已经使其广泛应用于通讯、船舶、航空等实时性要求特别高的领域中[1]。

Bootrom是基于vxWorks[2]定制的一套类似于uboot的bootloader[3],主要功能是初始化硬件和引导vxWorks操作系统。

P2020由飞思卡尔公司研发一款可实现单线程极高性能功耗比的处理器,适用于联网、电信、军事以及工业领域的各种应用[4]。

针对传统更新bootrom存在的这些问题,本文提出了使用串口的方式更新bootrom,该方法在启动vxWorks系统后使用串口在线更新,而不需要拆卸任何硬件装置。

本方案我们采用型号为am29f040的nor flash存放bootrom引导文件,容量为512KB。

h3c本地tftp方式升级bootrom软件

h3c本地tftp方式升级bootrom软件

通过以太口应用tftp方式升级bootrom软件一组网需求:计算机通过配置线与交换机Console口相连,配置交换机。

交换机通过以太口直接相连到tftp服务器,利用服务器上的bootrom软件对交换机bootrom软件进行升级。

二组网图:三配置步骤:全系列交换机应用tftp方式升级bootrom软件1.如图所示,交换机通过一个以太网口与TFTP Server相连,通过Console口与配置计算机相连。

2.在TFTP Server上运行服务器程序,设定ip地址(这里设为192.168.0.1),指定需要加载的程序所在的文件路径。

3.在配置计算机上运行超级终端程序,启动交换机,根据超级终端显示的提示按Ctrl+B,进入BOOTROM主菜单:BOOT MENU1. Download application file to flash 下载应用程序到Flash中2. Select application file to boot 选择启动文件3. Display all files in flash 显示Flash中所有文件4. Delete file from flash 删除Flash中的文件5. Modify bootrom password 修改BootROM密码6. Enter bootrom upgrade menu 进入BootROM升级菜单7. Skip current configuration file 设置重启不运行当前配置文件8. Set bootrom password recovery 恢复BootROM密码9. Set switch startup mode 设置交换机启动模式0. Reboot 重新启动交换机Enter your choice(0-9):4.键入6然后回车或者键入组合键Ctrl + U,进入加载BOOTROM的菜单。

Bootrom update menu:1. Set TFTP protocol parameter2. Set FTP protocol parameter3. Set XMODEM protocol parameter0. Return to boot menuEnter your choice(0-3):5.在下载程序菜单中键入1,选择采用TFTP协议完成bootrom软件的加载,回车后,开始TFTP协议相关参数的设置:Load File name : S5600_V405.btm s5600_v407.btmSwitch IP address :192.168.0.2Server IP address :192.168.0.16.根据实际情况,完成以上信息的输入,回车后系统界面如下:Are you sure you want to update your bootrom? Yes or No(Y/N)7.键入Y,系统开始文件下载;键入N,系统将返回下载程序菜单。

单片机boot升级逻辑

单片机boot升级逻辑

单片机boot升级逻辑单片机boot升级逻辑是指通过特定的程序或算法,对单片机的引导程序进行升级的过程。

在这个过程中,我们需要注意一些细节和步骤,以确保升级的成功和可靠性。

boot升级的目的是为了更新单片机的引导程序,以修复bug、增加新功能或提升性能。

为了实现这个目标,我们需要明确升级的流程和步骤。

在开始升级之前,我们需要准备好升级文件和相应的工具。

升级文件可以是一个二进制文件,其中包含了新的引导程序的代码和数据。

工具可以是一个烧录器或编程器,用于将升级文件写入单片机的存储器中。

接下来,我们需要确保单片机处于可升级状态。

这意味着单片机的电源供应稳定,并且与烧录器或编程器之间的连接正常。

我们还需要检查单片机的存储器空间是否足够容纳新的引导程序。

在准备完毕后,我们可以开始进行boot升级了。

首先,我们需要将烧录器或编程器连接到单片机,并将升级文件加载到工具中。

然后,我们可以通过工具提供的命令或界面,将升级文件写入单片机的存储器中。

在写入过程中,我们需要注意数据的完整性和正确性。

可以通过校验和或其他校验算法,对写入的数据进行验证。

如果校验失败,说明数据可能出现了错误,我们需要重新写入或尝试其他的解决方案。

写入完成后,我们可以断开烧录器或编程器的连接,并重新启动单片机。

在启动过程中,单片机会加载新的引导程序,并执行相应的初始化操作。

如果一切顺利,我们将会看到新的功能或性能的提升。

需要注意的是,在boot升级的过程中,我们需要保持耐心和谨慎。

如果升级失败或出现其他问题,我们需要及时备份数据,并尝试其他解决方案,以避免数据丢失或单片机损坏。

单片机boot升级逻辑是一个复杂而重要的过程。

通过合理的步骤和注意事项,我们可以实现单片机引导程序的升级,为单片机的应用提供更好的功能和性能。

Bootloader

Bootloader

1. CPU上电之后怎么就启动Bootrom了?比如一个刚生产出来的STB,啥都没有也能启动Bootrom吗?答:能启动。

首先讲能启动的理论支持:Bootrom是一段引导程序,同时也决定从什么地方去获取运行程序。

Bootrom程序本身的数据存在芯片里的eROM里,eROM固化在芯片中。

再说CPU上电之后Bootrom启动的过程:CPU(系统)上电后,芯片立即执行位于eROM中的Bootrom程序。

举例:你给机械手表上好弦了,表就开始走了。

2. eROM里的Bootrom数据是怎么放进去的?答:借助PC外部硬件和软件工具,将数据烧到eROM里。

3. Send Sync byte:Send的Sync byte是指什么?答:Sync byte是芯片设计时约定好的字符。

这个步骤就是Bootrom通过串口(UART)将Sync byte把发给PC,等待PC响应(比如200ms)。

4. UART是什么东西?除了UART还有什么其他的跟PC通信的方式?答:UART是一种通用串行数据总线, 该总线双向通信,可以实现全双工传输和接收。

板子与主机间传输文件时,可以使用串口的xmodem/ymodem/zmodem协议;还可以使用网络通过tftp、nfs协议来传输,这时,主机上要开启tftp、nfs服务;还有其他方法,比如USB等。

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。

USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。

微控制器的BootROM设计及验证

微控制器的BootROM设计及验证

微控制器的BootROM设计及验证
龚华;王一鸣
【期刊名称】《微处理机》
【年(卷),期】2022(43)5
【摘要】以一款国产化基于ARM架构的32位微控制器芯片为实例,对其进行BootROM设计。

从BOOT_BLOCK分布与BOOT_FLASH分布两方面入手,对主流微控制器的BootROM代码逻辑进行分析,总结出FlashMagic的ISP控制流特点及其命令的数据规律,以此自主设计出eFlash控制器的代码逻辑,形成微控制器的BootROM代码工程。

对工程的IAP、ISP命令响应机制展开调试,并进一步验证其烧写或升级BOOT_FLASH的功能。

通过调试验证,BootROMbinary代码被放置在内部写保护闪存,能够实现微控制器芯片的BOOT功能。

【总页数】5页(P1-5)
【作者】龚华;王一鸣
【作者单位】中国电子科技集团公司第四十七研究所
【正文语种】中文
【中图分类】TN402
【相关文献】
1.基于VxWorks的具有双重装载功能的bootrom设计
2.安时-卡尔曼交叉运行的电池荷电状态估算策略及其微控制器在环验证
3.基于Verilog的8051微控制器中
断系统的设计与验证4.一种改进的微控制器FPGA原型芯片设计与验证5.PKU-DSPII中SPI接口与Bootrom程序设计
因版权原因,仅展示原文概要,查看原文内容请购买。

华为交换机bootromFTP方式升级版本

华为交换机bootromFTP⽅式升级版本以MSR5040路由器、FTP/TFTP服务器主机直连为例操作步骤:1.路由器上电⾃检出现如下的信息:InitDDR........system start booting......Version 2.11Press CTRL+D to stop auto-bootBooting Normal Extended BootRomDecompressing...done!Ensure the baudrate is set to 9600bps!Starting at 0xa00000...******************************************************** ** H3C MSR50-40 BOOTROM, Version 2.13 * * ********************************************************Copyright(c) 2004-2007 Hangzhou H3C Technologies Co., Ltd.Compiled date: Jul 31 2007, 14:05:28CPU type : MPC8541CPU L1 Cache : 32KBCPU L2 Cache : 256KBCPU Clock Speed : 833MHzMemory Type : DDR SDRAMMemory Size : 512MBMemory Speed : 333MHzBootRom Size : 4096KBCPLD Version is 2.00HardWare Version is 3.00CF Card is Inserted, now is mounting...cf:/ - Volume is OKMount CF Card OK!CF Card Size:256MBPress Ctrl+B to enter extended boot menu...此时键⼊,系统将进⼊BOOTROM菜单。

干货小谈bootloader和app两重升级

干货小谈bootloader和app两重升级EEWORLD电子资讯犀利解读技术干货每日更新一般设计来说,bootloader作为引导程序和升级APP,改动并不大而且也相对稳定。

但是如果项目中遇到非得更新bootloader的,比如协议的更新替换,这时候就有设计此方案的必要性了。

不多说,直接进入正题。

flash分区图和程序图如下,接下来的描述都是基于这图来进行分析大概说下思路:简单的说就是设计三段程序,bootloader0、bootloader1、APP。

这里假设使用的是ST的STM32F103C8T6,该款单片机有64K flash,每个扇区为1K,一共64个扇区。

在这些扇区的分配中,bootloader0占用1K,也就是一个扇区空间(0x8000000~0x80003FFF);bootloader1占用22K,也就是22个扇区空间(0x8000400~0x80005BFF);标志区占用1K,也同样为一个扇区空间(0x80005C00~0x80006000);APP部分包括APP和DATA,还有40K空间可利用。

这个就flash的分区思路。

此次再来说下1K标志区的存储,在这里我只用了10个字节存储,当然如果有一些必要的标志数据啥的,也可以存储在此空间,在这里我用结构体表示这些变量成员,并把标志区的flash地址转换成此结构体指针。

此次再来说明程序流程图。

正常模式下,系统开始运行是从bootloader0开始的,然后跳转到bootloader1,再者跳转到APP,这就是一个流程。

bootloader0的程序也很简单,无非就是判断标志区的标志变量是否改变,从而选择跳转到Bootloader1或者APP区域。

bootloader0的main函数如下,按照上述的流程图可以明白,只要是标志区的跳转标记是正常模式或者bootloader_flag未被置位,说明是没有升级过bootloader1或者已经升级成功的,进而就跳转到bootloader1。

英飞凌tricore用户手册 第7章 BootROM



产生“Flash 电压缓慢上升”错误代码 Flash 被置于睡眠状态 执行跳转到 SSW 错误处理程序
Flash 电压缓慢上升 只要不超过已定义的超时时间 SSW 会持续检查 Flash“忙碌”状态。一旦所有 Flash Array Bank 处于“就绪”(PBUSY=0),启动过程马上继续。因为器件的差异和操作条件的 不同 Flash 电压上升持续时间不同,那么总体的启动时间就明显地不同。
用户手册 BOOT_TC1728_TS, V1.1
7-4
V1.0,2011-12
TC1728
BootROM内容
7.1.3.3
Flash 电压缓慢上升
每次由硬件引起的复位自动启动 Flash 电压缓慢上升(参见 PMU 章,程序和数据 Flash)。因此 SSW 不会启动电压缓慢上升但是只是观察 Flash SFR 中的标志位,并作出 相应反应。 Flash 电压缓慢上升由 SSW 进一步处理。基本上,Flash“忙碌”状态的检查如以下描 述。 如果在超时后,Flash 仍然处于“忙碌”,那么:
7.1.3.7
最终芯片设置
SSW 执行的设备配置步骤,包括: 唯一芯片 ID 装载 唯一芯片 ID 代表了一个 SSW 写入到 LDRAM 的开始位置地址 D000'0000H 的 16 字节 值。 标定数据装载 标定数据(对于 FADC,也保留作为将来扩展用)代表一个 128 字节值,其在上电复位 后由 SSW 写入到 LDRAM,从地址 D000'0018H 开始。 Flash 保护控制 SSW 根据当前选择的启动模式不同,处理 Flash 保护不同: 1. 在用户代码从内部 Flash 启动的模式—内部启动、带有 CRC OK 的内部 ABM: a)如果读保护不被激活(FCON.RPA=0): —SSW 使能所有从 Flash 的特殊数据读取(DMA,PCP,Debug) —不需要 SSW 设置从 Flash 的代码和数据读取—其普遍由硬件使能

C8051单片机BootLoader心得

C8051单片机BootLoader心得8051至今仍占据着MCU的大量市场,以其通用、价格低廉等众多原因而被学校和大多公司作为微控制开发的首选。

随着ARM等32位控制器的出现,使得8051的追随者对于其使用编程器烧片子的方式逐渐的难以接受。

不论是从易用性、以及程序的可靠性来说,都添加了诸多不便。

此时很多人想到了ARM中常用的BootLoader得概念,其实这是一个很好的方法。

要想在MCU中实现BootLoader,首先要求单片机具有IAP功能,或是可以对其自身的FLASH进行擦除、写入的功能。

其次要考虑FLASH的空间,毕竟加入一个boot的代码是需要付出代价的。

下面以C8051F340为例说明一下我的心得与体会。

1.整体规划分区作用说明中断向量区中断向量保存 1.1APP区应用程序区 1.2BOOT区BootLoader代码存放区1.31.1中断向量区中断向量区提供复位以及异常中断的跳转, 鉴于51的特点,这部分必须存放在0地址开始的区域。

1.2 APP区应用程序区存放用户应用程序,亦即boot操作区。

这部分可以存放在FLASH的任意区域。

下载程序时,bootloader需要将下载的数据写入该区。

正常启动时,bootloader需要让CPU跳转至此执行。

1.3 BOOT区BootLaoder代码存放区。

这部分可以存放在FLASH的任意区域。

2.实现方法地址作用说明0000H -- 0002H Boot入口地址2.10003H -- D_APP_LIMIT APP程序 2.2D_RUN_ADDRESS APP入口地址2.3D_BOOT_ADDR Boot程序 2.42.1 Boot入口地址8051上电后执行的第一条便是0x0000—0x0002处的指令,考虑到程序的通用性,此处必须跳转到Boot 程序区,以便从boot开始引导或是装入程序。

STARTUP.A51文件中:CSEG AT 0?C_STARTUP: LJMP STARTUP1这两条语句便是实现了程序的跳转。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Bootrom功能改进经验谈
摘 要: 以VxWorks嵌入式实时操作系统为例,介绍了改进启动代码(Bootrom)功能
的四点经验:(1)具备故障保护功能的Bootrom的自我在线更新;(2)增加重启重启功能;
(3)自动运行应用软件应用软件;(4)多种应用软件的选择。 关键词: Bootrom 嵌
入式实时操作系统 FTP

VxWorks 是美国 Wind River System 公司于1983年设计开发的一个运行在目标机上
的高性能、可裁减的嵌入式实时操作系统(RTOS)。它是一种功能强大而且比较复杂的操作系
统,包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几部分。
VxWorks为程序员提供了高效的实时多任务调度、中断管理、实时的系统资源以及实时的任
务间通信。其核心功能主要有微内核、任务间通信机制、网络支持、文件系统和I/O管理、
POSIX标准实时扩展以及C++等其他标准支持。在各种CPU平台上提供了统一的编程接口和一
致的运行特性,尽可能地屏蔽不同CPU 之间的底层差异。应用程序应用程序员可以将尽可能
多的精力放在应用程序本身,而不必关心系统资源的管理。VxWorks以其良好的可靠性和卓
越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域
中,如卫星通信、弹道制导、飞机导航等。 设计师通常利用VxWorks开发Bootrom
代码。Bootrom相当于PC机中的BIOS,它完成对加载过程中所需设备的初始化及驱动;然后,
通过某种可选择的通信手段(如网口、串口),将VxWorks内核加载。VxWorks内核相当于PC
机上的操作系统,如Linux、Windows。此外,Bootrom还提供了一些辅助功能,如地址内容
查看、地址内容修改和Bootrom菜单显示信息控制等功能。但是,在实际应用实际应用中,
这些功能不够丰富,便利性不足。本文介绍了几点笔者在工作中行之有效的改进Bootrom功
能的经验。1 具备故障保护功能的Bootrom的自我在线更新 Bootrom一般以二进制文
件的方式保存在非易失性存储介质,例如Flash、CF卡、EPROM中。通常需要仿真器、烧结
器或JTAG工具等才能将代码烧入这类介质,在实际应用中非常不便。以Flash为例介绍如何
在线更新Bootrom。 首先,为了做到故障保护,防止在更新过程中发生更新文件出错、
断电等灾难性故障,Bootrom的数据必须在更新之前备份在Flash的另一区域。因此,Flash
中必须存在两片物理区域,暂且命名为PA和PB,每片512KB(假设Bootrom文件小于512KB)。
两片物理区域的起始地址可以互换,其中一片区域的起始地址必须为系统的上电启动地址,
这个地址因处理器而异,例如, PowerPC体系结构的处理器的启动地址一般是0xfff00100,
而MIPS体系结构的处理器的启动地址是0xbfc00000。在逻辑上,以启动地址开始的区域为
主Boot区,另一片区域为备Boot区。 为了实现地址互换,在CPU模块和Flash芯片
之间,增加了一片CPLD(可编程逻辑器件)和一个跳线或拨号开关,开关信号JP输入到CPLD。
CPU访问Flash的地址信号和片选信号经过CPLD进行地址互换,再到Flash芯片。如果不跳
线(默认情况),JP信号为高,则PA的起始地址为启动地址,PA为主Boot区,PB为备Boot
区;否则,JP信号为低,PB的起始地址为启动地址,PB为主Boot区,PA为备Boot区。默
认情况下,PA为主Boot区。。 switch
(*(pLine++)){ „„ case 'o': /*启动另一应用软件
*/ LoadAnotherApplicationImage(); /*复制另一应用程
序映象到起始地址为Entry的内存中
*/ AutoSystemVersionSet(); /*询问用户是否将另一应用
软件设置为默认启动*/ go ((FUNCPTR ) Entry ); /*从Entry
地址开始运行*/ break; „„ } 在Bootrom代码中定
义一个变量defaultVersion,用于记录谁是默认的启动软件,该变量保存在Flash等非易失
媒质中。上电后,如果在倒计时期间没有任何输入,系统自动启动defaultVersion指定的应
用软件;否则,用户进入命令界面。如果键入“o”命令,Bootrom调用函数
LoadAnotherApplicationImage()将另一应用程序映象复制到起始地址为Entry的内存区域,
然后询问用户是否希望将另一应用程序设置为默认启动;如果用户回答“是”,更改
defaultVersion值;否则,defaultVersion值不变。最后运行当前选定的应用软件。 上
述的几点经验大部分是修改文件bootConfig.c的代码。因为bootConfig.c是一个公用文件,
为了不影响其它底层软件的开发,建议将它复制到当前Bootrom开发目录下,并且在Makefile
文件中增加定义:BOOTCONFIG=bootConfig.c。 嵌入式系统开发需要经常开辟新的思
路,一些微小的简单改动通常能够带给产品新的功能和特征。启动代码是嵌入式系统的重要
组成部分。笔者的以上四点经验在PowerPC处理器(MPC8260)平台和MIPS处理器(RM7000A)
平台上得到了验证,希望对其它系统的启动代码的开发有所借鉴和启迪。

相关文档
最新文档