ImageCraft IDE 中的非法存储 class __flash
Illegal storage class __flash in ImageCraft IDE
我正在尝试构建一个最初在 Atmel Studio 中构建的项目,该项目编译良好,没有任何错误或警告,但如果我尝试在 ImageCraft IDE 中构建项目,它说没有错误,但无法构建。
我试图在 ImageCraft 中构建的源代码片段:
static inline void PORTA_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode)
{
if (pull_mode == PORT_PULL_UP)
{
DDRA &= ~(1 << pin);
PORTA |= 1 << pin;
}
else if (pull_mode == PORT_PULL_OFF)
{
PORTA &= ~(1 << pin);
}
}
这是构建日志的结果
iccavr.exe: 'C:\iccv8avr\bin\iccomavr.exe' returns error code
-1073741819 Process terminated with status -1073741819 (0 minute(s), 2 second(s))
Build Failed: 0 error(s), 158 warning(s) (0 minute(s), 2 second(s))
尝试构建项目时显示的警告
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(63):[warning] Illegal storage class __flash for parameter 'pin'. Storage class removed.
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(63):[warning] Illegal storage class __flash for parameter 'pull_mode'. Storage class removed.
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(92):[warning] Illegal storage class __flash for parameter 'mask'. Storage class removed.
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(92):[warning] Illegal storage class __flash for parameter 'direction'. Storage class removed.
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(123):[warning] Illegal storage class __flash for parameter 'pin'. Storage class removed.
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(123):[warning] Illegal storage class __flash for parameter 'direction'. Storage class removed.
__flash
是一个 命名地址 space 用于指定某个常量
应保存在闪存中,而不是复制到 .data
程序启动时的 RAM 部分。它不是真正的标准 C,但是
属于一组名为 embedded C 的扩展。这是一个非常
AVR 上的有用功能,有助于节省宝贵的 RAM。 支持
由 gcc,并且显然被你正在尝试的 port.h header 使用
用你的代码编译。
从您显示的警告来看,您的编译器似乎不支持
这项特征。您可以尝试将 #define __flash
作为空字符串
在包括 header 之前。但是你会失去这个的好处
RAM-saver.
我正在尝试构建一个最初在 Atmel Studio 中构建的项目,该项目编译良好,没有任何错误或警告,但如果我尝试在 ImageCraft IDE 中构建项目,它说没有错误,但无法构建。
我试图在 ImageCraft 中构建的源代码片段:
static inline void PORTA_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode)
{
if (pull_mode == PORT_PULL_UP)
{
DDRA &= ~(1 << pin);
PORTA |= 1 << pin;
}
else if (pull_mode == PORT_PULL_OFF)
{
PORTA &= ~(1 << pin);
}
}
这是构建日志的结果
iccavr.exe: 'C:\iccv8avr\bin\iccomavr.exe' returns error code -1073741819 Process terminated with status -1073741819 (0 minute(s), 2 second(s)) Build Failed: 0 error(s), 158 warning(s) (0 minute(s), 2 second(s))
尝试构建项目时显示的警告
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(63):[warning] Illegal storage class __flash for parameter 'pin'. Storage class removed.
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(63):[warning] Illegal storage class __flash for parameter 'pull_mode'. Storage class removed.
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(92):[warning] Illegal storage class __flash for parameter 'mask'. Storage class removed.
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(92):[warning] Illegal storage class __flash for parameter 'direction'. Storage class removed.
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(123):[warning] Illegal storage class __flash for parameter 'pin'. Storage class removed.
!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(123):[warning] Illegal storage class __flash for parameter 'direction'. Storage class removed.
__flash
是一个 命名地址 space 用于指定某个常量
应保存在闪存中,而不是复制到 .data
程序启动时的 RAM 部分。它不是真正的标准 C,但是
属于一组名为 embedded C 的扩展。这是一个非常
AVR 上的有用功能,有助于节省宝贵的 RAM。 支持
由 gcc,并且显然被你正在尝试的 port.h header 使用
用你的代码编译。
从您显示的警告来看,您的编译器似乎不支持
这项特征。您可以尝试将 #define __flash
作为空字符串
在包括 header 之前。但是你会失去这个的好处
RAM-saver.