1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-07 16:23:38 +03:00

Move some functions to .irom0.text

This commit is contained in:
Ivan Grokhotkov 2015-04-11 10:59:36 +08:00
parent 5c94d333c5
commit 1866ef0c98
2 changed files with 32 additions and 32 deletions

View File

@ -66,13 +66,13 @@ static inline void i2c_wait() {
delayMicroseconds(s_i2c_delay); delayMicroseconds(s_i2c_delay);
} }
void i2c_freq(int freq_hz) { void ICACHE_FLASH_ATTR i2c_freq(int freq_hz) {
s_i2c_delay = 1000000 / freq_hz / 4 - 1; s_i2c_delay = 1000000 / freq_hz / 4 - 1;
if(s_i2c_delay < 0) if(s_i2c_delay < 0)
s_i2c_delay = 0; s_i2c_delay = 0;
} }
void i2c_init(int sda_pin, int scl_pin) { void ICACHE_FLASH_ATTR i2c_init(int sda_pin, int scl_pin) {
s_sda_pin = sda_pin; s_sda_pin = sda_pin;
s_scl_pin = scl_pin; s_scl_pin = scl_pin;
pinMode(ESP_PINS_OFFSET + sda_pin, OUTPUT_OPEN_DRAIN); pinMode(ESP_PINS_OFFSET + sda_pin, OUTPUT_OPEN_DRAIN);
@ -81,7 +81,7 @@ void i2c_init(int sda_pin, int scl_pin) {
i2c_wait(); i2c_wait();
} }
void i2c_release() { void ICACHE_FLASH_ATTR i2c_release() {
pinMode(ESP_PINS_OFFSET + s_sda_pin, INPUT); pinMode(ESP_PINS_OFFSET + s_sda_pin, INPUT);
pinMode(ESP_PINS_OFFSET + s_scl_pin, INPUT); pinMode(ESP_PINS_OFFSET + s_scl_pin, INPUT);
} }
@ -151,7 +151,7 @@ void i2c_write(uint8_t val) {
i2c_set_sda(1); i2c_set_sda(1);
} }
size_t i2c_master_read_from(int address, uint8_t* data, size_t size, bool sendStop) { size_t ICACHE_FLASH_ATTR i2c_master_read_from(int address, uint8_t* data, size_t size, bool sendStop) {
i2c_start(); i2c_start();
i2c_write(address << 1 | 1); i2c_write(address << 1 | 1);
int ack = i2c_get_ack(); int ack = i2c_get_ack();
@ -171,7 +171,7 @@ size_t i2c_master_read_from(int address, uint8_t* data, size_t size, bool sendSt
return size; return size;
} }
size_t i2c_master_write_to(int address, const uint8_t* data, size_t size, bool sendStop) { size_t ICACHE_FLASH_ATTR i2c_master_write_to(int address, const uint8_t* data, size_t size, bool sendStop) {
i2c_start(); i2c_start();
i2c_write(address << 1); i2c_write(address << 1);
int ack = i2c_get_ack(); int ack = i2c_get_ack();
@ -193,11 +193,11 @@ void twi_init(void) {
void twi_setAddress(uint8_t) { void twi_setAddress(uint8_t) {
} }
uint8_t twi_readFrom(uint8_t addr, uint8_t* data, uint8_t size, uint8_t sendStop) { uint8_t ICACHE_FLASH_ATTR twi_readFrom(uint8_t addr, uint8_t* data, uint8_t size, uint8_t sendStop) {
return i2c_master_read_from(addr, data, size, sendStop); return i2c_master_read_from(addr, data, size, sendStop);
} }
uint8_t twi_writeTo(uint8_t addr, uint8_t* data, uint8_t size, uint8_t wait, uint8_t sendStop) { uint8_t ICACHE_FLASH_ATTR twi_writeTo(uint8_t addr, uint8_t* data, uint8_t size, uint8_t wait, uint8_t sendStop) {
return i2c_master_write_to(addr, data, size, sendStop); return i2c_master_write_to(addr, data, size, sendStop);
} }

View File

@ -111,15 +111,15 @@ int strncmp(const char *s1, const char *s2, size_t len) {
return ets_strncmp(s1, s2, len); return ets_strncmp(s1, s2, len);
} }
char *strncpy(char * dest, const char * src, size_t n) { char* strncpy(char * dest, const char * src, size_t n) {
return ets_strncpy(dest, src, n); return ets_strncpy(dest, src, n);
} }
char *ets_strstr(const char *haystack, const char *needle) { char* strstr(const char *haystack, const char *needle) {
return strstr(haystack, needle); return ets_strstr(haystack, needle);
} }
char * strchr(const char * str, int character) { char* strchr(const char * str, int character) {
while(1) { while(1) {
if(*str == 0x00) { if(*str == 0x00) {
return NULL; return NULL;
@ -144,11 +144,11 @@ char * strrchr(const char * str, int character) {
} }
} }
char * strcat(char * dest, const char * src) { char* ICACHE_FLASH_ATTR strcat(char * dest, const char * src) {
return strncat(dest, src, strlen(src)); return strncat(dest, src, strlen(src));
} }
char * strncat(char * dest, const char * src, size_t n) { char* ICACHE_FLASH_ATTR strncat(char * dest, const char * src, size_t n) {
uint32_t offset = strlen(dest); uint32_t offset = strlen(dest);
for(uint32_t i = 0; i < n; i++) { for(uint32_t i = 0; i < n; i++) {
*(dest + i + offset) = *(src + i); *(dest + i + offset) = *(src + i);
@ -159,7 +159,7 @@ char * strncat(char * dest, const char * src, size_t n) {
return dest; return dest;
} }
char * strtok_r(char * str, const char * delimiters, char ** temp) { char* ICACHE_FLASH_ATTR strtok_r(char * str, const char * delimiters, char ** temp) {
static char * ret = NULL; static char * ret = NULL;
char * start = NULL; char * start = NULL;
char * end = NULL; char * end = NULL;
@ -213,7 +213,7 @@ int strcasecmp(const char * str1, const char * str2) {
return d; return d;
} }
char * strdup(const char *str) { char* ICACHE_FLASH_ATTR strdup(const char *str) {
size_t len = strlen(str) + 1; size_t len = strlen(str) + 1;
char *cstr = malloc(len); char *cstr = malloc(len);
if(cstr) { if(cstr) {
@ -441,7 +441,7 @@ int isblank(int c) {
static int errno_var = 0; static int errno_var = 0;
int * __errno(void) { int* ICACHE_FLASH_ATTR __errno(void) {
os_printf("__errno is called last error: %d (not current)\n", errno_var); os_printf("__errno is called last error: %d (not current)\n", errno_var);
return &errno_var; return &errno_var;
} }
@ -450,67 +450,67 @@ int * __errno(void) {
// __ieee754 functions // __ieee754 functions
// ########################################################################## // ##########################################################################
double __ieee754_sinh(double x) { double ICACHE_FLASH_ATTR __ieee754_sinh(double x) {
return sinh(x); return sinh(x);
} }
double __ieee754_hypot(double x, double y) { double ICACHE_FLASH_ATTR __ieee754_hypot(double x, double y) {
return hypot(x, y); return hypot(x, y);
} }
float __ieee754_hypotf(float x, float y) { float ICACHE_FLASH_ATTR __ieee754_hypotf(float x, float y) {
return hypotf(x, y); return hypotf(x, y);
} }
float __ieee754_logf(float x) { float ICACHE_FLASH_ATTR __ieee754_logf(float x) {
return logf(x); return logf(x);
} }
double __ieee754_log10(double x) { double ICACHE_FLASH_ATTR __ieee754_log10(double x) {
return log10(x); return log10(x);
} }
double __ieee754_exp(double x) { double ICACHE_FLASH_ATTR __ieee754_exp(double x) {
return exp(x); return exp(x);
} }
double __ieee754_cosh(double x) { double ICACHE_FLASH_ATTR __ieee754_cosh(double x) {
return cosh(x); return cosh(x);
} }
float __ieee754_expf(float x) { float ICACHE_FLASH_ATTR __ieee754_expf(float x) {
return expf(x); return expf(x);
} }
float __ieee754_log10f(float x) { float ICACHE_FLASH_ATTR __ieee754_log10f(float x) {
return log10f(x); return log10f(x);
} }
double __ieee754_atan2(double x, double y) { double ICACHE_FLASH_ATTR __ieee754_atan2(double x, double y) {
return atan2(x, y); return atan2(x, y);
} }
float __ieee754_sqrtf(float x) { float ICACHE_FLASH_ATTR __ieee754_sqrtf(float x) {
return sqrtf(x); return sqrtf(x);
} }
float __ieee754_sinhf(float x) { float ICACHE_FLASH_ATTR __ieee754_sinhf(float x) {
return sinhf(x); return sinhf(x);
} }
double __ieee754_log(double x) { double ICACHE_FLASH_ATTR __ieee754_log(double x) {
return log(x); return log(x);
} }
double __ieee754_sqrt(double x) { double ICACHE_FLASH_ATTR __ieee754_sqrt(double x) {
return sqrt(x); return sqrt(x);
} }
float __ieee754_coshf(float x) { float ICACHE_FLASH_ATTR __ieee754_coshf(float x) {
return coshf(x); return coshf(x);
} }
float __ieee754_atan2f(float x, float y) { float ICACHE_FLASH_ATTR __ieee754_atan2f(float x, float y) {
return atan2f(x, y); return atan2f(x, y);
} }