keil For ARM 函数绝对定义

发布者:脑电风暴最新更新时间:2017-02-07 来源: eefocus关键字:keil  ARM  函数  绝对定义 手机看文章 扫描二维码
随时随地手机看文章

我写了一个函数,我要把它放到FLASH 的第31区,地址为0x0801F000 这个地方,我在网上搜了一个方法。
虽然达到了效果网上说加个__at;且包含头文件#include "absacc.h"
这种方法只适用于 数组的绝对定义。方法如下:
u8 TestBUF[8]  __at(0x0801F000 )={0X34,0X66,0X03,0X34,0X23,0X77,0X77,0X77};
但是呢。对于一个函数。比如 void __at(0x0801F000 ) Test_ABC(void){...自己代码}; 这种方法是不行的。。
通过查看keil里的FLASH 发现是空的。说明他的代码就没放进去;
那么,网上还有个方法可行,但是不是我要的。共享出来。方法就是:
1、先为需要定位的函数设置节名,这里我以main主函数为例:
void  __attribute__ ((section ("mymain-这里随便定义英文名,我以mymain为名")))  main  (void)

2、在分散加载文件中设定main存放地址:
APP_LOAD 0x00050000  OVERLAY
{
        MAIN_EXE +0
        {
                app.o(mymain)  ;;app.o就是我的main主函数所在的C文件模块app.c
                                                 ;;mymain就是刚才定义的一个节其实就是代表main主函数
                                 ;;这里可以看到mymain的节(也就是main函数)
                                 ;;被放在地址0x00050000处,这样就完成了函数地址定位的功能
        }
        APP_EXE +0 
        {
               *(+RO)
        }
};
还是拿我的函数为例子,
1.void   __attribute__ ((section ("ABC_MY")))  Test_ABC(void){...自己代码}; 
2.APP_LOAD 0x0801F000 OVERLAY
{
        MAIN_EXE +0
        {
                Test.o(ABC_MY)  ;;    我的这个函数Test_ABC放在Test.c里,那么我这里改成TEST.O    }
        APP_EXE +0 
        {
               *(+RO)
        }
};

以上仿造人家的方法我也实现了。但是发现有问题2;
第一个问题,在我要放的地址0x0801F000 啊,确实有了代码不是过去检测的FF FF FF 了,而且在keil 生成的一个后缀叫.map的文件里也找到了我的函数是放在了0x0801F000 范围里。但是他放的位置 是0x0801F001;加了一位;这里这是我莫名其妙的第一个问题,
第二个问题,在后缀叫.map的文件里。这个文件是介绍本程序的所有涉及内容存放的一个文件。。我发现他身后排列的那些比如 usart_init()函数啊,还有各种函数,。都会随着我改这个0x0801F000 这个地址而顺序排列。,也就是说。我地址一改。其他函数。顺位不变且都跟到了这个地址身后顺序排列。说的还不清楚。举个例子,A是我的测试程序,A放0x01;那么其他程序BCDEFG排列分别是0x02;0x03;0x04;0x05;0x06;0x07; 当我把我的A 放到了0x21;那么我的其他程序。BCDEFG跟过来了。依次跟到了0x22,0x23,0x24,0x25,0x26,0x27;   这是第二个问题。比较头疼。

关键字:keil  ARM  函数  绝对定义 引用地址:keil For ARM 函数绝对定义

上一篇:STM32 对内部FLASH读写接口函数
下一篇:STM32F030 WWDG使用结论

推荐阅读最新更新时间:2024-03-16 15:33

MAX194在ARM单片机系统中的应用
引言 为了实现计算机的自动测量与控制,越来越多的领域采用了A/D转换技术。随着大规模集成电路芯片技术的发展,速度更快、精度更高、使用更方便的集成电路芯片层出不穷。本文介绍了一种笔者使用后取得良好效果的新型A/D转换芯片—MAX194。另外,由于32位处理器的价格不断下降,用户已可以大量使用,而32位RISC处理器则更是受到青睐,并将在某些领域替代原来的8位单片机。其中,ARM嵌入式微处理器系列处于领先地位。笔者所介绍的数据采集系统中采用的是PHILIPS公司生产的以ARM7处理器作为内核的LPC2104单片机。 1 MAX194简介 MAX194是MAXIM公司推出的一种逐次逼近型模数转换器(ADC),具有高速、高精度
[单片机]
MAX194在<font color='red'>ARM</font>单片机系统中的应用
爱特梅尔ARM9嵌入式MCU提供DDR2标准配置
爱特梅尔公司 (Atmel® Corporation) 宣布推出400 MHz ARM926嵌入式微控制器系列之首款产品SAM9G45,该器件支持第二代双倍数据速率DRAM (DDR2),并针对楼宇自控系统、数据记录仪、销售终端机 (POS)、报警系统和医疗设备等工业应用而优化。ARM926 外设包括带有片上物理层的ECHI 兼容高速USB、双EBI、10/100以太网MAC、LCD和触控屏控制器、可编程1.8或3.3V I/O供电电压,以及高数据带宽架构。 DDR2 在嵌入式应用中替代SDRAM:爱特梅尔ARM® 产品总监Jacko Wilbrink指出:“大多数基于ARM9之嵌入式微处理器仅仅支持 SDRA
[单片机]
爱特梅尔<font color='red'>ARM</font>9嵌入式MCU提供DDR2标准配置
arm-linux-ld命令
我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的,我们首先要考虑的如何组合起来;其次,这些.o文件存在相互调用的关系;再者,我们最后生成的bin文件是要在硬件中运行的,每一部分放在什么地址都要有仔细的说明。我觉得在写makefile的时候,最为重要的就是ld的理解,下面说说我的经验: 首先,要确定我们的程序用没有用到标准的c库,或者一些系统的库文件,这些一般是在操作系统之上开发要注意的问题,这里并不多说,熟悉在Linux编程的人,基本上都会用ld命令;这里,我们从头开始,直接进行汇编语言的连接。 我们写一个汇编程序,控制GPIO,从而控制外接的LED,代码如下;
[单片机]
安捷伦脉冲函数任意发生器81160A维修案例
据西安安泰脉冲函数任意噪声发生器维修中心小编所知,Keysight 81160A 脉冲函数任意噪声发生器是一款高精度脉冲发生器,提供了多种信号生成、调制和失真功能,可以对器件实施极限测试。那么81160A坏了怎么办呢?国内哪里有维修81160A好的机构或者厂家呢?下面,安泰维修中心小编将为大家介绍脉冲函数发生器81160A特性以及81160A维修案例,希望对大家有帮助! 脉冲函数发生器81160A特性: 脉冲发生器具有精确的信号生成功能和超高的计时稳定度,保证可以重现测试 噪声发生器能够做到两全其美:既可以生成随机噪声,也可以生成重复时间非常长的重复性噪声,让用户可以轻松发现问题 函数任意波形发生器提供了多种波形生成和调制功能
[测试测量]
安捷伦脉冲<font color='red'>函数</font>任意发生器81160A维修案例
快速学Arm(29)--存储器寻址2
ARM芯片中的片内和片外存储器在芯片中的地址是由芯片厂家或用户分配的.给物理存储器分配逻辑地址的过程称为存储器映射.通过这些逻辑地址,就可以访问到相应存储器的物理存储单元.我们再来看一下下面的lpc2300的物理地址的分布: 从上面图中可以看出,AHB,APB两个内存区域都是分配给外设使用了.每个外设空间大小为16KB,最多可以分配128个外设,总共各2MB左右. 接下来,我们要理解一下存储器重映射的问题,所谓的存储器重映射是指部分存储器单元出现在与之前不同的逻辑地址上,也就是说同一物理地址在用户看来可能有多个不同的逻辑地址.逻辑地址是用户所看到的地址,而物理地址是在存储器中的实际地址.看下面的两个图例:
[单片机]
快速学<font color='red'>Arm</font>(29)--存储器寻址2
ARM嵌入式实验 熟悉PROTEUS电子仿真软件的使用(LPC2138)
一、实验目的 掌握RPROTEUS电子仿真软件的安装过程; 掌握RPROTEUS电子仿真软件的使用方法; 掌握创建电子仿真原理图的过程; 掌握为ARM芯片添加程序并仿真调试的过程。 二、实验内容 实现流水灯仿真实验。安装RPROTEUS电子仿真软件,根据实验原理图创建一个PROTEUS原理图,并添加相应的元件和导线;使用RealView MDK集成开发环境建立并生成实现流水灯的代码,为ARM芯片添加代码,最后查看仿真运行结果。 三、实验要求 了解RPROTEUS电子仿真软件的安装过程; 能够使用RPROTEUS电子仿真软件建立原理图并添加元件和导线; 能够设置元件及芯片的参数,并为ARM芯片添加代码; 能够检查并修改原理图
[单片机]
<font color='red'>ARM</font>嵌入式实验 熟悉PROTEUS电子仿真软件的使用(LPC2138)
手机芯片霸主ARM公司瞄准物联网
    在某个领域登峰造极后,一家极度成功的公司该何去何从?当然是去攀登另一座高峰。随着更多的家电、汽车和机器连入无线网,“物联网”的疆域越来越大,涌现出无限商机。手机芯片霸主英国ARM公司试图在这一领域再续辉煌,但很有可能遭遇该公司在智能手机市场不曾遇到的挑战。     作为一家为计算机处理器生产指令集构架的英国公司,ARM绝对算不上家喻户晓,至少没有苹果(Apple)的iPhone和谷歌(Google)的Android那么出名。但是,ARM与iPhone和Android一样无处不在。如果你兜里揣着一部智能手机,很有可能——不对,是极有可能——它的芯片是ARM出品。     ARM表示,目前全球95%以上的智能手机都在采用该公司
[手机便携]
基于ARM和蓝牙的无线信号采集系统的设计与实现
1 引 言     无线测试技术在工业领域有广泛的应用前景。在连线复杂并需要反复拆装被测设备和测试设备之间连线的场合,使用无线可以降低工作的复杂程度,节约大量的时间,提高测试环节的工作效率,尤其在有时间限制时其优越性更加明显。此外在不适宜连线的场合,如港口、码头、江河湖坝、野外勘测、石油勘探中油井深处环境参数的测量,使用无线测量具有有线测量无法比拟的优越性。   对于近距离的无线传输,蓝牙由于采用快速跳频技术,确保了链路的稳定,同时使干扰可能造成的影响变得很小,适合用于存在大量噪声干扰的工业测试环境中,由于无线传输的是数字量,因此在通常情况下没有传输误差,不会影响到系统的准确度,并且可以单芯片实现,体积功耗都能达到很小的水平。
[网络通信]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved