Firmware
Classes | Macros | Functions
otp.h File Reference

One TIme Programmable ( OTP ) Flash routine/s. More...

#include <unistd.h>
#include <stdint.h>
#include <stdio.h>

Go to the source code of this file.

Classes

struct  flash_registers
 
struct  otp
 
struct  otp_lock
 
union  udid
 

Macros

#define ADDR_OTP_START   0x1FFF7800
 
#define ADDR_OTP_LOCK_START   0x1FFF7A00
 
#define OTP_LOCK_LOCKED   0x00
 
#define OTP_LOCK_UNLOCKED   0xFF
 
#define F_BUSY   1
 
#define F_ERROR_WRP   2
 
#define F_ERROR_PROGRAM   3
 
#define F_ERROR_OPERATION   4
 
#define F_COMPLETE   5
 
#define PERIPH_BASE   ((unsigned long)0x40000000)
 
#define AHB1PERIPH_BASE   (PERIPH_BASE + 0x00020000)
 
#define F_R_BASE   (AHB1PERIPH_BASE + 0x3C00)
 
#define FLASH   ((flash_registers *) F_R_BASE)
 
#define F_BSY   ((unsigned long)0x00010000)
 
#define F_OPERR   ((unsigned long)0x00000002)
 
#define F_WRPERR   ((unsigned long)0x00000010)
 
#define CR_PSIZE_MASK   ((unsigned long)0xFFFFFCFF)
 
#define F_PSIZE_WORD   ((unsigned long)0x00000200)
 
#define F_PSIZE_BYTE   ((unsigned long)0x00000000)
 
#define F_CR_PG   ((unsigned long)0x00000001)
 
#define F_CR_LOCK   ((unsigned long)0x80000000)
 
#define F_KEY1   ((unsigned long)0x45670123)
 
#define F_KEY2   ((unsigned long)0xCDEF89AB)
 
#define IS_F_ADDRESS(ADDRESS)   ((((ADDRESS) >= 0x08000000) && ((ADDRESS) < 0x080FFFFF)) || (((ADDRESS) >= 0x1FFF7800) && ((ADDRESS) < 0x1FFF7A0F)))
 
#define ADDR_F_SIZE   0x1FFF7A22
 

Functions

__BEGIN_DECLS __EXPORT void F_unlock (void)
 
__EXPORT void F_lock (void)
 
__EXPORT int val_read (void *dest, volatile const void *src, int bytes)
 
__EXPORT int val_write (volatile void *dest, const void *src, int bytes)
 
__EXPORT int write_otp (uint8_t id_type, uint32_t vid, uint32_t pid, char *signature)
 
__EXPORT int lock_otp (void)
 
__EXPORT int F_write_byte (unsigned long Address, uint8_t Data)
 
__EXPORT int F_write_word (unsigned long Address, uint32_t Data)
 

Detailed Description

One TIme Programmable ( OTP ) Flash routine/s.

Author
Lorenz Meier lm@in.nosp@m.f.et.nosp@m.hz.ch
David "Buzz" Bussenschutt david.nosp@m.buzz.nosp@m.@gmai.nosp@m.l.co.nosp@m.m