From 2367c4913794441c2c0875bacffe20671b88fa4d Mon Sep 17 00:00:00 2001 From: Wu Jian Gang Date: Sun, 20 May 2018 20:22:08 +0800 Subject: [PATCH] feat(esp8266): Add new esp attr defines Remove ICACHE_FLASH_ATTR --- components/esp8266/include/c_types.h | 14 --------- components/esp8266/include/esp_attr.h | 41 +++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 components/esp8266/include/esp_attr.h diff --git a/components/esp8266/include/c_types.h b/components/esp8266/include/c_types.h index 54ee4c21..b659176c 100644 --- a/components/esp8266/include/c_types.h +++ b/components/esp8266/include/c_types.h @@ -86,20 +86,6 @@ typedef enum { #define REG_SET_BIT(_r, _b) (*(volatile uint32 *)(_r) |= (_b)) #define REG_CLR_BIT(_r, _b) (*(volatile uint32 *)(_r) &= ~(_b)) -#define STORE_ATTR __attribute__((aligned(4))) - -#define SHMEM_ATTR - -#ifdef ICACHE_FLASH -#define ICACHE_FLASH_ATTR __attribute__((section(".irom0.text"))) -#else -#define ICACHE_FLASH_ATTR -#endif - -#define DMEM_ATTR __attribute__((section(".bss"))) -#define IRAM_ATTR __attribute__((section(".text"))) -#define ICACHE_RODATA_ATTR __attribute__((section(".irom.text"))) - #ifndef __cplusplus #define BOOL bool #define TRUE true diff --git a/components/esp8266/include/esp_attr.h b/components/esp8266/include/esp_attr.h new file mode 100644 index 00000000..e0bdf029 --- /dev/null +++ b/components/esp8266/include/esp_attr.h @@ -0,0 +1,41 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef __ESP_ATTR_H__ +#define __ESP_ATTR_H__ + +//Normally, the linker script will put all code and rodata in flash. +//These macros can be used to redirect particular functions/variables +//to other memory regions. + +// Make compatible to old SDK +#define ICACHE_FLASH_ATTR + +// Make compatible to old SDK +#define ICACHE_RODATA_ATTR + +// Forces code into IRAM instead of flash. +#define IRAM_ATTR __attribute__((section(".text"))) + +// Forces data into DRAM instead of flash +#define DRAM_ATTR __attribute__((section(".data"))) + +// Forces data to be 4 bytes aligned +#define WORD_ALIGNED_ATTR __attribute__((aligned(4))) + +// Forces a string into DRAM instead of flash +// Use as ets_printf(DRAM_STR("Hello world!\n")); +#define DRAM_STR(str) (__extension__({static const DRAM_ATTR char __c[] = (str); (const char *)&__c;})) + +#endif /* __ESP_ATTR_H__ */