Presentation is loading. Please wait.

Presentation is loading. Please wait.

IPMC Firmware Fatih Bellachia

Similar presentations


Presentation on theme: "IPMC Firmware Fatih Bellachia"— Presentation transcript:

1 IPMC Firmware Fatih Bellachia
Sébastien Cap, Nicolas Dumont‐Dayot, Jasmin Fragnaud, Nicolas Letendre, Guy Perrot, Isabelle Wingerter

2 Intelligent platform management Controller softwARE
Software project name ICARE stands for Intelligent platform management Controller softwARE Intelligent platform management Controller softwARE Tutorial Fatih Bellachia

3 IPMC Overview The IPMC supports an intelligent hardware management system for ATCA board and ATCA carrier board (see Figure) which provides the ability to manage the power, cooling, and interconnect needs of intelligent devices; to monitor events; to log events to a central repository and also the ability to manage the mezzanine modules according to user’s implementation, as well as the communication with the Shelf Manager. Tutorial Fatih Bellachia

4 IPMC Specifications The IPMC software solution is fully compliant with the following specifications: IPMI v1.5 (document revision 1.1) and some relevant subset of IPMI v2.0 (document revision 1.0). PICMG 3.0 R3.0 (AdvancedTCA base specification). AMC.0 R2.0 (AdvancedMC base specification). Tutorial Fatih Bellachia

5 Software Environment Features
Linux host development 32-bit ARM Cortex-M4 microcontroller Written in standard ANSI C GCC (4.7.0) tool chain Open Source Configuration Management environment: - CMT FRU (ATCA board) generation utility (using M4 preprocessor) OpenOCD (0.9.0) utility (Linux/Windows) Need USB to JTAG interface Debug-Adapter-Hardware Olimex ARM-USB-TINY-H NGX technology Tutorial Fatih Bellachia

6 Software design Focus Distributed bare-metal application
Event (message) driven architecture Design of the IPMC firmware is based on the components (modules) Tutorial Fatih Bellachia

7 Software architecture
Bare-metal application Component IPMC CMC sensors FwUpgrade JTAG Mst OEM I/O E-keying Middleware IPMB IMC LWIP (BSD) OEM… Channel MessageQueue MessageDispatcher HAL USART USB I2C SPI RCC GPIO WDG Driver libopencm3 (LGPL) ethernet MCU STM32F4x7 Tutorial Fatih Bellachia

8 SuperLoop Task 4 Task 3 Task 2 Task 1 (Timer Task) Infinite Loop Time Non-preemtible Pseudo FIFO scheduler These architecture is called foreground/background systems An application consists of an infinite loop which calls the tasks to perform the desired operations (in background) Interrupt Service Routine (ISR) manage asynchronous events (in foreground) Foreground is also called "interrupt level"; background is called "task level" Tutorial Fatih Bellachia

9 IPMC component Intelligent Platform Management Controller synoptic
SDR repository FRU Manager Sensors Handle switch Payload Event FRU Information Event Event/Message Dispatcher SDR Manager Event Message LED Message Message IPMC Event Notifier IPMB-0 Message Receiver IPMB-0 Message Tutorial

10 CMC component Carrier Management Controller synoptic
IPMB-L Module State Machine Device Discovery Message Message Outputs Message Event Event Message Carrier IPMB-0 Message Event/message Dispatcher Message Inputs Event Event Event Event IPMB-L Message Receiver Inputs Monitoring IPMC Event Receiver Tutorial

11 Message Dispatcher Channel Filter Receivers Message Dispatcher
Incoming Queue Outgoing Queue Message Dispatcher Filter Receivers Performer Channel Virtual Communication channel Ethernet IMC Mailbox IPMB Tutorial Fatih Bellachia

12 Module The software "module" concept allows user to  extend functionalities of IPMC without modifying existing code. MAIN SuperLoop CMC E-Keying Sensors F/W upgrade IPMC JTAG server OEM Tutorial Fatih Bellachia

13 Module User need to provide 3 entry point functions and information.
Init Cleanup Process (periodic or not) E.g. /* */ bool led0_init(void) { LED_Off(LED_0); hTask = TimerTaskCreate(led0_blink, NULL, DELAY); return true; } /* */ void led0_process(void *pvArg) printf("\rLEDs [%c", bOn? '*': '\''); fflush(stdout); MODULE_BEGIN_DECL(led0) MODULE_NAME("Blinky LED 0") MODULE_INIT(led0_init) MODULE_CLEANUP(NULL) MODULE_PROCESS(led0_process, NULL) MODULE_END_DECL module manifest see module/module.h Tutorial Fatih Bellachia

14 EEPROM prom.c Used to store FRU/SDR information
The Framework support EEPROM M24256 or 24xx256 For an unsupported EEPROM the user must overwriting the following functions: bool prom_init(void) bool prom_reset(void) int prom_erase(unsigned addr, int len) bool prom_busy(void) int prom_read(void *dst, unsigned src_addr, int len) int prom_write(unsigned dst_addr, void *src, int len) By default FRU/SDR data are stored in 'IOIF' MCU memory. Tutorial Fatih Bellachia

15 Sensor sensors.c The Framework support the following sensors AD7414
LTC4151 LTC2499 IQ65033QMA10 Register your sensor with the ResourceBroker library e.g.: /* */ bool SensorsInit() { RBResource_t stResource; // AD7414 Temperature stResource.ucChannelId = CHANNEL_I2C_SENSOR; stResource.ucAddress = SDR_AD7414_I2C_ADDR; stResource.ucIdentifier = SDR_NUM_AD7414_TEMP; stResource.fnInit = InitSensorAD7414; stResource.fnRead = ReadSensorAD7414; stResource.fnWrite = WriteSensorAD7414; if (ResourceBrokerAddResource("AD7414 Temp", &stResource) == false) return false; return true; } Channel # I2C address Unique sensor ID User’s functions Tutorial Fatih Bellachia

16 SDR sdr_data.c Channel ID
The channel IDs are defined in channel/channel.h CHANNEL_I2C_MGT (managed by IPMC) CHANNEL_I2C_SENSOR (managed by IPMC) CHANNEL_I2C_USER_IO CHANNEL_I2C_IPM_IO <Full|Compact> Sensor Record set BYTE 7 [4:7] channel_num Sensor Number Unique number identifying the sensor (e.g. see cfg_data.h) set BYTE 8 [0:7] sensor_number I2C address of sensor Compact Sensor Record set BYTE 31 [0:7] OEM - Reserved for OEM use Full Sensor Record set BYTE 47 [0:7] OEM - Reserved for OEM use There are 2 kinds of record to describe the sensors. Full Sensor Record: The Full Sensor Record can be used to describe any type of sensor Compact Sensor Record: The Compact Sensor Record saves space, but has limitations in the sensors it can describe Tutorial Fatih Bellachia

17 E-Keying p2p_ekeying.c Register your backplane channel with ekeying library e.g. /* */ bool set_port_state_callback(linkDescriptor linkInfo, char state) { if (linkInfo == 0x ) do something… else if (linkInfo == 0x ) do something else… return true; } bool my_init(void) EKRegisterFunc(0x , set_port_state_callback); EKRegisterFunc(0x , set_port_state_callback); Link Descriptor (32-bit word) Link Grouping ID: Indicates whether the Ports of this Channel are operated together with Ports in other Channels. A value of 0 always indicates a Single-Channel Link. A common, non-zero Link Grouping ID in multiple Link Descriptors indicates that the Ports covered by those Link Descriptors must be operated together. A unique non-zero Link Grouping ID also indicates Single-Channel Link. Link Type Extension: Identifies the subset of a subsidiary specification that is implemented and is defined entirely by the subsidiary specification identified in the Link Type field. Link Type: Identifies the PICMG® 3.x subsidiary specification that governs this description or identifies the description as proprietary; see Table 3-52, "Link Type.“ Link Designator: Identifies the Interface Channel and the Ports within the Channel that are being described; see Table 3-51, "Link Designator." Base I/F – channel 1 Base I/F – channel 2 Tutorial Fatih Bellachia

18 Firmware & Tools F/W Upgrade
Configuration Flash Memory Factory Firmware will be initially stored in both the Configuration flash memory and micro-controllers internal flash memory. The factory firmware always remains available in the IPMC flash memory. The micro-controllers will revert to it after 3 failing consecutive attempts of upgrading the internal flash memory. Firmware update requires a new firmware in the IPMC CPLD. Version 5.2 is available from the ICARE twiki page. Requires the USB-JTAG Adaptor and openOCD tool for upgrading. For those requiring it, IPMCs will be exchanged if you do not want to do the update yourselves. IPMC update factory IOIF CPLD MCU IPMC IOIF Tutorial

19 Firmware & Tools FRU/SDR generator
Tutorial

20 Software project area ICARE-00-01-00
HAL Middleware main FwUpgrade IPMC master_MCU IOIF slave_MCU User OEM sensors E-keying GCC tool chain Linker Binary Target IPMC bmc_IPMC STM32F407 IOIF bmc_IOIF STM32F407 CMC Tutorial Fatih Bellachia


Download ppt "IPMC Firmware Fatih Bellachia"

Similar presentations


Ads by Google