首页 LIN Bootloader

LIN Bootloader

举报
开通vip

LIN Bootloader Rev. 0.1 2/11 Copyright © 2011 by Silicon Laboratories AN535 AN535 LIN BOOTLOADER 1. Relevant Devices This application note applies to the following devices: C8051F50x, C8051F51x, C8051F54x, C8051F58x, and C8051F59x. 2. Introduction A bootloader enables...

LIN Bootloader
Rev. 0.1 2/11 Copyright © 2011 by Silicon Laboratories AN535 AN535 LIN BOOTLOADER 1. Relevant Devices This application note applies to the following devices: C8051F50x, C8051F51x, C8051F54x, C8051F58x, and C8051F59x. 2. Introduction A bootloader enables field updates of application firmware. A Local Interconnect Network (LIN) bootloader enables firmware updates over the LIN bus. The LIN bootloader described in this application note is based on the Silicon Labs Modular Bootloader Framework. This framework is described in detail in the application note “AN533: Modular Bootloader Framework for Silicon Labs C8051Fxxx Microcontrollers”, which can be downloaded from here: http://www.silabs.com/products/mcu/Pages/ApplicationNotes.aspx The following components are part of the firmware update setup:  Target Bootloader Firmware  Master Programmer Firmware  Active Data Source Software  Application Firmware Image (Hex File) The firmware update setup is shown in Figure 1. Details about the steps involved in updating the firmware can be found in the Firmware Update Process Flow Diagram in application note AN533. AN535 2 Rev. 0.1 Figure 1. Firmware Update Setup PC UART (RS-232) Comm. Interface Device Driver / API Active Data Source Software Target Application Firmware Hex File Master MCU Comm. Interface (LIN) Master Programmer Firmware Comm. Interface (UART) Target MCU Comm. Interface (LIN) Target Bootloader Firmware Target Application Firmware LI N B us Target MCU ... Serial = N Serial = 0 AN535 Rev. 0.1 3 3. Target Bootloader Profile The LIN target bootloader firmware allows application firmware updates in the field over the LIN bus. The LIN bootloader code builds under the Keil toolchain with a total size of 1911 bytes. Because the bootloader and application have to be split on page boundaries, the bootloader takes up a total of 2 kB (= four flash pages) code space, with 512 bytes (= one flash page) of that total located on the last flash page, i.e., the one containing the lock byte. This means that the application firmware starts at address 0x0600 and ends one page short of the last flash page. Figure 2 shows the LIN bootloader memory map. Figure 3 shows the code space utilization of the bootloader grouped by functional blocks. Figure 2. LIN Target Bootloader Memory Map Figure 3. LIN Target Bootloader Code Space Utilization Profile Reset Vector and Interrupt Redirection 0x0000 Bootloader Firmware Lock Byte Area NOT erasable by bootloader Area erasable by bootloader Bootloader FW Project Application FW Project Bootloader FW Project RESERVED Area (on most MCUs) 0x0600 Bootloader InfoBlock Part of Bootloader Firmware [Last flash page] 3% 5% 4% 7% 42% 1% 27% 2% 9% Reset Vector and Interrupt Redirection Device‐Specific Functions Flash Read/Erase/Write Functions Main program loop Bootloader Command Interpreter Target Bootloader InfoBlock Comm Functions (LIN0) CRC (CCITT‐16) Other (compiler init/library code etc) AN535 4 Rev. 0.1 3.1. Configurable Options The target bootloader has the following parameters that can be configured. These parameters are located in two header files as grouped in Table 1 and Table 2. Table 1. Fxxx_Target_Config.h Parameter Options TGT_PRODUCT_CODE1 Any 8-bit value TGT_BL_TYPE2 8-bit value: 0x82 TGT_FLASH_PAGE_SIZE3 Number of bytes per flash page: 512 TGT_FLASH_PAGE_SIZE_CODE4 8-bit value: 9 APP_FW_START_ADDR5 24-bit value: 0x000600 APP_FW_END_ADDR6 24-bit value: 0x00FBFF DEV_SERIAL_CHECK_ENABLED7 Binary: 1 TGT_DEVICE_SERIAL08 8-bit value: 0x01 TGT_DEVICE_SERIAL18 8-bit value: 0x00 Notes: 1. This can be used to identify a product line among many different products. 2. This denotes that the BL uses Silicon Labs-defined LIN bootloader protocol (see “Fxxx_BL130_LIN_Interface.h”). 3. Should be changed based on the MCU data sheet. 4. 2n encoding: 29 = 512 bytes. 5. Starting address of App FW. 6. Ending address of App FW (includes App InfoBlock and Signature bytes). 7. 0 = Disabled; 1 = Enabled. When enabled, device serial number is matched for TGT_ENTER_BL_MODE command. 8. Ensure a UNIQUE serial number for each device on the same LIN network. AN535 Rev. 0.1 5 Table 2. Fxxx_TargetBL_Config.h Parameter Options CODE_BANKING Binary: 01 Binary: 12 BOOTLOADER_PIN_OVERRIDE3 Binary: 1 TGT_BL_FW_INFOBLOCK_LENGTH4 8-bit value: 16 TGT_BL_FW_VERSION_LOW and TGT_BL_FW_VERSION_HIGH5 8-bit values: 0 and 1 TGT_BL_BUF_SIZE6 Max number of bytes in bootloader receive buffer: 32 TGT_BL_BUF_SIZE_CODE6 8-bit value: 3 TGT_CRC_TYPE7 8-bit value: 0x40 TGT_BL_FW_INFOBLOCK_ADDR8 24-bit value: 0x00FCFE Notes: 1. 0 = Disabled; 1 = Enabled. Disable for MCUs with flash memory 64 kB or less. 2. Enable for MCUs with flash memory greater than 64 kB. 3. 0 = Disabled; 1 = Enabled. When enabled, the bootloader will check a pin state on reset to see if it should stay in BL mode. 4. See Table 1 in AN533. 5. BL v1.0Low = 0 and High = 1. 6. 2n encoding: 23 = 8 bytes. 7. This denotes that the BL uses the Silicon Labs-defined 16-bit CRC (CCITT-16) (see “Fxxx_CRC064_CCITT16.c”). 8. Start address of BL InfoBlock so that it ends adjacent to the lock byte. AN535 6 Rev. 0.1 4. Target Application Profile The target application firmware needs to fit within the allocated application area in flash memory. The application firmware memory map is shown in Figure 4. Figure 4. Target Application Memory Map 4.1. Target Application Template A target application template is included for easy integration with existing application code or to use as a starting point. This template includes the following files:  Header Files Fxxx_BL130_LIN_Interface.h Fxxx_Target_Config.h Fxxx_Target_Interface.h Fxxx_TargetApp_Config.h  Source Files F50x_TargetApp_LIN0_BLsupport.c F50x_TargetApp_Startup.A51 Fxxx_TargetApp_InfoBlock.c A typical application would use all files in the template, but that does not mean all the files in the template are required. Files can be omitted or used as a reference to create code that is more suitable to the application. Application Reset Vector Set to 0x0600; Redirected Interrupt Vectors (spacing = 3 bytes) 0x0600 Application Firmware Area NOT erasable by bootloader Area erasable by bootloader Bootloader FW Project Application FW Project Bootloader FW Project RESERVED Area (on most MCUs) 0x0600 Note: The application firmware starts at address 0x0600 in this example. Application InfoBlock Signature Bytes 0x0000 AN535 Rev. 0.1 7 4.2. Configurable Options The application firmware should always keep its version number updated in the Application InfoBlock whenever a new version is built so that the application hex file includes this information. The active data source software can interpret this information from the hex, while the master programmer can retrieve this data using the TGT_Get_Info command. 4.3. Making an Application Bootloader Aware A series of simple steps can be used to make an existing application firmware project “bootloader aware”, i.e., allow it to co-exist with the bootloader. These steps are described in detail in AN533. The following is a summary of the changes needed when using the Keil toolchain for the ‘F50x MCU family: 1. Add “F50x_TargetApp_Startup.A51” to application firmware project and build list; this changes the reset vector from 0x0000 to 0x0600. 2. Add these options to the compiler command line of the project: INTVECTOR(0x600) INTERVAL(3). 3. Add these options to the linker command line of the project: CODE(0x600-0xF9FD, ?CO?FXXX_TARGETAPP_INFOBLOCK(0xF9F4)). 4. Add ‘Fxxx_TargetApp_InfoBlock.c’ to the application project and build list. 5. [OPTIONAL] Add “F50x_TargetApp_LIN0_BLsupport.c” to the application project and build list, then insert calls in the application to call the functions in that source file to recognize the TGT_Enter_BL_Mode command and take appropriate action. 6. Check hardware design to allow the use of a GPIO pin as a fail-safe trigger to enter bootload mode. In the LIN bootloader example, port pin P1.4 is used for this purpose. To disable or change this, see “Fxxx_TargetBL_Config.h” and “F50x_TargetBL_DevSpecific.c” in the Target Bootloader firmware project. If this is disabled, then the application has to provide some other way of entering bootload mode. 4.4. Target Application Examples Two versions of an application firmware example (“F50x_LIN0_Slave_Blinky”) are included with the source code. These examples show the application firmware settings needed to co-exist with the bootloader and also demonstrate firmware updates by showing slightly different functionality between the two versions (v1 and v1.1). See AN533 for the firmware update steps. Table 3. Fxxx_TargetApp_Config.h Parameter Options TGT_APP_FW_VERSION_LOW and TGT_APP_FW_VERSION_HIGH1 8-bit values: 0 and 1 TGT_APP_FW_INFOBLOCK_LENGTH2 8-bit value: 9 Notes: 1. App v1.0Low = 0 and High = 1. 2. See Table 5 in AN533. AN535 8 Rev. 0.1 5. Master Programmer and Data Source Examples A master programmer example that runs on the C8051F500 MCU is included with the LIN bootloader source code. This master programmer example can update the firmware on any Silicon Labs MCU with a LIN interface that implements the LIN protocol as detailed in the above sections and per the specifications in Section 5. This example code can be used as-is, or can be used as a reference to implement this functionality on another MCU. The master programmer includes code to communicate with the active data source PC software via the UART. Code banking support is included, so the master programmer can work with targets that have more than 64 kB of flash memory. The Silicon Labs MCU Serial Bootloader Data Source software included with the modular bootloader framework is an example of an active data source software. This is described in application note “AN533: Modular Bootloader Framework for Silicon Labs C8051Fxxx Microcontrollers”. The software installer and source code are included in the file “AN533SW.zip”, which is available for download from: http://www.silabs.com/products/mcu/Pages/ ApplicationNotes.aspx 6. LIN Protocol Details The LIN protocol details used by the LIN bootloader are shown in Table 4. Any changes to these details would have to be duplicated in all three projects (Master Programmer, Target Bootloader, and Target Application). If changes are made to any of the protocol details, the “TGT_BL_TYPE” value in “Fxxx_Target_Config.h” should also be changed from the Silicon Labs standard value of 0x82 (decimal 130) to a value within the user-defined range of 0x01 through 0x7F, and the “130” in the file name “Fxxx_BL130_LIN_Interface.h” should be changed appropriately as well. Table 4. LIN Protocol Details Parameter Value Parameter Definition and File Name LIN Baud Rate 19200 Comm_Init() function in F50x_Comm_LIN0.c Auto Baud Disabled Comm_Init() function in F50x_Comm_LIN0.c LIN Message Size 8 bytes LIN_MESSAGE_SIZE in Fxxx_BL130_LIN_Interface.h Master Transmit Message ID (Master to Target) 0x04 ID_MASTER_TO_SLAVE_BL_CMD in Fxxx_BL130_LIN_Interface.h Master Transmit Message ID (Master to Target) 0x05 ID_MASTER_TO_SLAVE_WR_CMD in Fxxx_BL130_LIN_Interface.h Master Receive Message ID (Target to Master) 0x06 ID_SLAVE_TO_MASTER_BL_RSP in Fxxx_BL130_LIN_Interface.h AN535 Rev. 0.1 9 NOTES: AN535 10 Rev. 0.1 CONTACT INFORMATION Silicon Laboratories Inc. 400 West Cesar Chavez Austin, TX 78701 Tel: 1+(512) 416-8500 Fax: 1+(512) 416-9669 Toll Free: 1+(877) 444-3032 Please visit the Silicon Labs Technical Support web page: https://www.silabs.com/support/pages/contacttechnicalsupport.aspx and register to submit a technical support request. Silicon Laboratories and Silicon Labs are trademarks of Silicon Laboratories Inc. Other products or brandnames mentioned herein are trademarks or registered trademarks of their respective holders. The information in this document is believed to be accurate in all respects at the time of publication but is subject to change without notice. Silicon Laboratories assumes no responsibility for errors and omissions, and disclaims responsibility for any consequences resulting from the use of information included herein. Additionally, Silicon Laboratories assumes no responsibility for the functioning of undescribed features or parameters. Silicon Laboratories reserves the right to make changes without further notice. Silicon Laboratories makes no warranty, rep- resentation or guarantee regarding the suitability of its products for any particular purpose, nor does Silicon Laboratories assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation conse- quential or incidental damages. Silicon Laboratories products are not designed, intended, or authorized for use in applications intended to support or sustain life, or for any other application in which the failure of the Silicon Laboratories product could create a situation where per- sonal injury or death may occur. Should Buyer purchase or use Silicon Laboratories products for any such unintended or unauthorized ap- plication, Buyer shall indemnify and hold Silicon Laboratories harmless against all claims and damages.
本文档为【LIN Bootloader】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_024492
暂无简介~
格式:pdf
大小:98KB
软件:PDF阅读器
页数:10
分类:互联网
上传时间:2013-12-19
浏览量:65