summaryrefslogtreecommitdiff
path: root/lib/lufa/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/HID_EEPROM_Loader.c
blob: 35ea2d79b767cec98fa3984246cac34603808cbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*
             DMBS Build System
      Released into the public domain.

   dean [at] fourwalledcubicle [dot] com
         www.fourwalledcubicle.com
 */

/** \file
 *
 *  Special application to extract an EEPROM image stored in FLASH memory, and
 *  copy it to the device EEPROM. This application is designed to be used with
 *  the HID build system module of DMBS to program the EEPROM of a target device
 *  that uses the HID bootloader protocol, which does not have native EEPROM
 *  programming support.
 */

#include <avr/io.h>
#include <avr/eeprom.h>
#include <avr/pgmspace.h>

/* References to the binary EEPROM data linked in the AVR's FLASH memory space */
extern const char _binary_InputEEData_bin_start[];
extern const char _binary_InputEEData_bin_end[];
extern const char _binary_InputEEData_bin_size[];

/* Friendly names for the embedded binary data stored in FLASH memory space */
#define InputEEData       _binary_InputEEData_bin_start
#define InputEEData_size  ((int)_binary_InputEEData_bin_size)

int main(void)
{
	/* Copy out the embedded EEPROM data from FLASH to EEPROM memory space */
	for (uint16_t i = 0; i < InputEEData_size; i++)
	  eeprom_update_byte((uint8_t*)i, pgm_read_byte(&InputEEData[i]));

	/* Infinite loop once complete */
	for (;;);
}