roboot/boot/roboot.c File Reference


Detailed Description

ROBOOT image processor.

License:
ROBOOT ver. 0.1.0 - Copyright (C) 2010 AGH UST
This file is part of the ROBOOT (RObus BOOTloader) project. ROBOOT is developed at the Department of Electronics, AGH University of Science and Technology in Krakow, Poland.

The ROBOOT project uses dual-licensing. You can use it for free for non-commercial, open source projects. See license.txt for details or visit project home page at http://www.wsn.agh.edu.pl/?q=roboot

THIS SOFTWARE IS PROVIDED 'AS IS'. NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. AGH UST SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.

Author:
Artur Lipowski
Purpose:
ROBOOT
Compiler:
GCC
Hardware:
independent
Documented in:
doxygen
Comments:

Definition in file roboot.c.

#include <string.h>
#include "roboot.h"
#include "xtea.h"

Go to the source code of this file.

Defines

#define GET_BYTE(val, byte_no)   ((uint8_t) (((val) >> ((byte_no)*8)) & 0xff))
#define MIN(val1, val2)   ((((uint32_t) (val1)) > ((uint32_t) (val2))) ? ((uint32_t) (val2)) : ((uint32_t) (val1)))
#define PS_FILE_MAGIC_LEN   4
#define PS_DEV_MAGIC_TYPE_LEN   1
#define APP_ID_LEN   5
#define DEV_VER_LEN   1
#define PS_DEV_MAGIC_LEN   (PS_DEV_MAGIC_TYPE_LEN + APP_ID_LEN + 2 * DEV_VER_LEN)
#define PS_FILE_MAGIC_OFF   0
#define IMG_VER_MSB_OFF   PS_FILE_MAGIC_OFF
#define HASH_CIPHER_OFF   (IMG_VER_MSB_OFF + 1)
#define CIPHER_PARAMS_OFF   (HASH_CIPHER_OFF + 1)
#define IMG_VER_LSB_OFF   (CIPHER_PARAMS_OFF + 1)
#define PS_DEV_MAGIC_OFF   0
#define PS_DEV_MAGIC_TYPE_OFF   PS_DEV_MAGIC_OFF
#define DEV_ID_OFF   (PS_DEV_MAGIC_TYPE_OFF + PS_DEV_MAGIC_TYPE_LEN)
#define APP_ID_OFF   (PS_DEV_MAGIC_TYPE_OFF + PS_DEV_MAGIC_TYPE_LEN)
#define DEV_VER_MIN_OFF   (APP_ID_OFF + APP_ID_LEN)
#define DEV_VER_MAX_OFF   (DEV_VER_MIN_OFF + DEV_VER_LEN)
#define KEY_LEN   128
#define USER_DATA_LEN   128
#define NO_SECTIONS_LEN   4
#define PS_CHECK_AREA_LEN   (PS_FILE_MAGIC_LEN + PS_DEV_MAGIC_LEN + USER_DATA_LEN + NO_SECTIONS_LEN)
#define FM_CHECK_OFF   0
#define DM_CHECK_OFF   (FM_CHECK_OFF + PS_FILE_MAGIC_LEN)
#define USER_DATA_OFF   (DM_CHECK_OFF + PS_DEV_MAGIC_LEN)
#define NO_SECTIONS_OFF   (USER_DATA_OFF + USER_DATA_LEN)
#define SECTION_MAGIC_LEN   4
#define SECTION_ADDR_LEN   4
#define SECTION_LEN_LEN   4
#define SECTION_HASH_LEN   32
#define SECTION_MAGIC_OFF   0
#define SECTION_ADDR_OFF   (SECTION_MAGIC_OFF + SECTION_MAGIC_LEN)
#define SECTION_LEN_OFF   (SECTION_ADDR_OFF + SECTION_ADDR_LEN)
#define SECTION_HASH_OFF   (SECTION_LEN_OFF + SECTION_LEN_LEN)
#define PS_SECTION_DATA_OFF   (SECTION_HASH_OFF + SECTION_HASH_LEN)
#define PS_SECTION_HEADER_LEN   (SECTION_MAGIC_LEN + SECTION_ADDR_LEN + SECTION_LEN_LEN + SECTION_HASH_LEN)
#define GET_HASH_TYPE(byte)   (((byte) & 0xf0) >> 4)
#define GET_CIPHER_TYPE(byte)   ((byte) & 0x0f)
#define GET_ASSYMETRIC_FLAG(byte)   (((byte) & 0x80) != 0)
#define GET_CIPHER_KEY_LEN(byte)   ((byte) & 0x7f)
#define IMG_VER_MAGIC_MSB   0xa2
#define IMG_VER_MAGIC_LSB   0x75
#define SECTION_MAGIC   0xdeadbeefUL

Functions

const uint8_t * ROBOOT_GetFileMagic (void)
const uint8_t * ROBOOT_GetDeviceMagic (void)
const uint8_t * ROBOOT_GetUserData (void)
uint8_t ROBOOT_GetHashType (void)
uint8_t ROBOOT_GetCipherType (void)
bool ROBOOT_IsAsymetricKeyCipherUsed (void)
uint32_t ROBOOT_GetNumberOfSections (void)
uint8_t * ROBOOT_InitProcessing (const ROBOOT_FLASH_Operations_T *flash_oper)
int8_t ROBOOT_ProcessPacket (uint32_t size, uint8_t **new_buf)


Generated on Tue Mar 9 07:57:32 2010 for 'ROBOOT' by  doxygen 1.5.8