之前一直是用v5编译,编译速度慢,换成V6编译速度差不多快50% ,而且arm后期只维护v5编译器不在更新v5编译器。切换到V6编译器大势所趋,把之前v5且换到v6需要如下更改:

1. CMSIS包需要更新到5.0以上

2. v5在指定地址定义常量: const uint32_t AppStartCfg[2] __attribute__((at(0x0))) = {0xffffffff,0xaaaaaaaa};

v6在指定地址定义常量: const uint32_t AppStartCfg[2] __attribute__((section(".ARM.__at_0x0")))= {0xffffffff,0xaaaaaaaa};

3, 在定义函数在RAM中运行:(做BootLoader时,freescal单片机要求flash操作相关函数必须在ram中运行)

v5编译器:

#pragma arm section code = "RAMCODE"
       static uint8_t ExecRamCmd (uint8_t *cmd, uint8_t len)
       {
       }
      #pragma arm section

然后添加链接文件:

RW_m_data m_data_start m_data_size { ; RW data
      *.o(RAMCODE)
       .ANY (+RW +ZI)
       }

v6编译器:

#pragma clang section text = "RAMCODE"
     static uint8_t ExecRamCmd (uint8_t *cmd, uint8_t len)
     {

}
    #pragma clang section

同样V5修改链接文件

keil 编译器V6 定义函数在ram中运行-和在指定地址定义常量的更多相关文章

  1. 链接脚本(Linker Script)应用实例(一)使用copy table将函数载入到RAM中运行

    将函数载入到RAM中运行需要以下三个步骤: (1)用编译器命令#pragma section "<section name>" <user functions&g ...

  2. Bootloader升级方式一————擦、写flash在RAM中运行

    在汽车ECU软件运行中,软件代码运行安全性是第一,在代码中尽可能的不要固化有flash_erase.flash_write操作存在,主要是防止当出现异常情况时,程序跑飞,误调用erase.write对 ...

  3. 应用C#和SQLCLR编写SQL Server用户定义函数

    摘要: 文档阐述使用C#和SQLCLR为SQL Server编写用户定义函数,并演示用户定义函数在T-SQL中的应用.文档中实现的 Base64 编码解码函数和正则表达式函数属于标量值函数,字符串分割 ...

  4. [二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口

    函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type use ...

  5. Entity Framework 6 Recipes 2nd Edition(11-1)译 -> 从“模型定义”函数返回一个标量值

    第11章函数 函数提供了一个有力代码复用机制, 并且让你的代码保持简洁和易懂. 它们同样也是EF运行时能利用的数据库层代码.函数有几类: Rowset Functions, 聚合函数, Ranking ...

  6. Entity Framework 6 Recipes 2nd Edition(11-2)译 -> 为一个”模型定义”函数返回一个计算列

    11-3. 为一个”模型定义”函数返回一个计算列 问题 想从”模型定义”函数里返回一个计算列 解决方案 假设我们有一个员工(Employee)实体,属性有: FirstName, LastName,和 ...

  7. SQL——用户定义函数

    根据用户定义函数返回值的类型,可将用户定义函数分为如下三个类别: (1) 返回值为可更新表的函数 若用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表也可更新,这样的函数称为内嵌 ...

  8. Python(调用函数、定义函数)

    函数的返回值: return 值:只能返回一次,只要执行return函数就终止 返回值:没有类型限制,也没有个数限制 没有return:None 返回一个值 返回多个值:元组 先定义,后使用,定义阶段 ...

  9. SqlServer——用户定义函数

    根据用户定义函数返回值的类型,可将用户定义函数分为如下三个类别: (1) 返回值为可更新表的函数 若用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表也可更新,这样的函数称为内嵌 ...

随机推荐

  1. <Android Studio> 4.Adapter的那些事 <一>

    android 的表格显示和Windows桌面开发原理不同,其他平台转过来的同学要有心理准备,不要拿桌面开发的思维模式来思考android上的各种表格. 一.原理 此处使用ArrayAdapter来记 ...

  2. mysql查询表大小

    工作中常用命令参考,收集如下: 查询表大小:select table_name, data_length from information_schema.tables where table_sche ...

  3. Django框架(十)--常用字段、参数、元信息、多对多关联关系

    一.ORM字段 # AutoField() int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列 # IntegerField() ...

  4. nbu虚拟机恢复样例(之后补图)

    9.2.1进入Backup,Archive,and Restore管理器 9.2.2选择客户端和策略类型 9.2.3选择恢复的虚拟机 9.2.4恢复虚拟机到不同目录 9.2.5更改虚拟机名称和存储 因 ...

  5. 解决nginx反向代理webservice的soap:address location问题

    原文:https://blog.csdn.net/mn960mn/article/details/50716768 一:首先来发布一个web service package com.ws.servic ...

  6. django中运行定时任务脚本

    需要使用到django_apscheduler模块,因此先安装: pip install django-apscheduler 然后在工程的settings.py文件中的INSTALLED_APPS模 ...

  7. Vue中swiper手动滑动后不能自动播放的解决方法

    用户操作swiper之后,是否禁止autoplay.默认为true:停止.如果设置为false,用户操作swiper之后自动切换不会停止,每次都会重新启动autoplay.操作包括触碰,拖动,点击pa ...

  8. Python面试题(3)

    整理的最全 python常见面试题(基本必考) python 2018-05-17 作者 大蛇王 1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in ...

  9. 201871010112-梁丽珍《面向对象程序设计(java)》第四周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...

  10. 201871010105-曹玉中《面向对象程序设计(java)》第四周学习总结

    201871010105-曹玉中<面向对象程序设计(java)>第四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...