IAR下载程序后出现的问题,请问怎么解决

IAR下载程序后出现的问题,请问怎么解决,第1张

这不是IAR软件的问题,而是你的JLINK使用了盗版的固件,或者说你的JLINK本事是个几十块买的盗版当用到原厂Segger公司的JLINKV458A软件时,就会报告出来这个非法的问题。

#pragma section( "section-name" [, attributes] ) 作用是由程序指定创建一个段

一般默认段都是由编译器自动指定的 不过看你这样的写法 IAR的时候是没有默认段的 必须由编写者手动指定

比如#pragma section = "data"就是创建一个名字为data的段,

然后下面调用

data_ram = __section_begin("data");

来获取这个段的首地址以备其 *** 作

其他类似

关于pragma section的详细说明如下。 对于#pragma 预处理还有很多功能 感兴趣可以自行搜索

==================================================================================

#pragma section。创建一个段。

其格式为:#pragma section( "section-name" [, attributes] )

section-name是必选项,用于指定段的名字。该名字不能与标准段的名字想冲突。可用/SECTION查看标准段的名称列表。

attributes是可选项,用于指定段的属性。可用属性如下,多个属性间用逗号(,)隔开:

read:可读取的

write:可写的

execute:可执行的

shared:对于载入该段的镜像的所有进程是共享的

nopage:不可分页的,主要用于Win32的设备驱动程序中

nocache:不可缓存的,主要用于Win32的设备驱动程序中

discard:可废弃的,主要用于Win32的设备驱动程序中

remove:非内存常驻的,仅用于虚拟设备驱动(VxD)中

如果未指定属性,默认属性为read和write。

在创建了段之后,还要使用__declspec(allocate)将代码或数据放入段中。

例如:

//pragma_sectioncpp

#pragma section("mysec",read,write)

int j = 0;

__declspec(allocate("mysec"))

int i = 0;

int main(){}

该例中, 创建了段"mysec",设置了read,write属性。但是j没有放入到该段中,而是放入了默认的数据段中,因为它没有使用__declspec(allocate)进

行声明;而i放入了该段中,因为使用__declspec(allocate)进行了声明。

这是因为修改了s启动文件的格式,即使没修改,删除了空格会这样报错的。

最好的解决办法是:IAR工程中remove掉这个启动文件,把原来的启动文件删掉,重新移植一个相同的启动文件过来,再重新在CMSIS文件夹下面Add启动文件,编译即可通过了。

一般情况下错误原因为下列情况或之一:

1、连接触点接触不良;

2、连接线可能有断裂的地方;

3、Flash存储空间超出范围。

4、芯片故障;

以上就是关于IAR下载程序后出现的问题,请问怎么解决全部的内容,包括:IAR下载程序后出现的问题,请问怎么解决、用IAR嵌入式编译程序,“section=”是什么意思、IAR安装过程中出现无法启动可执行程序larldePm.exe等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9776601.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存