集成Cortex-M0内核-- Integration and Implementation Manual手册学习

2023-05-16

根据使用场景,配置并集成一个Cortex-M0的内核,暂时不涉及的实现的部分

目录

阅读手册

Chapter1 Introduction

1.1 About the processor

1.2 About integration and implementation

Chapter2 Configuration Guidelines

2.1 About configuration guidelines

2.2 Configuration options

2.2.1 CORTEXM0 configuration options

2.2.2 CORTEXM0INTEGRATION configuration options

2.2.3 CoreSight ROM table base address

Chapter 3  Key Integration Points

3.1 About key integration points

3.2 Key integration tasks

Chapter 4  Functional Integration Guidelines

4.2 时钟

4.2.1 CORTEXM0 level clocks

4.2.2 CORTEXM0INTEGRATION level clocks

4.3 复位

4.3.1 CORTEXM0 level resets

4.3.2 CORTEXM0INTEGRATION level resets

4.4 Interfaces



阅读手册

参考文献:Cortex™ -M0 Revision: r0p0  Integration and Implementation Manual

Chapter1 Introduction

1.1 About the processor

Cortex-M0处理器是具有极低门数节能处理器

它旨在用于需要小面积处理器的微控制器深度嵌入式应用

 

支持两种层次的集成:

  • 纯粹的处理器级别
  • 集成了WIC和DAP的处理器级别

可以看到,集成层次的Cortex-M0多了WICDAP

 

Cortex-M0是高度可配置的处理器,可以配置:大端小端,中断数,是否能debug,SysTick timer 等等

 

提供了两个配置好的层级样例

 

可以根据自己的需求配置Cortex-M0处理器,并且并更改管脚以匹配单元库的状态保持功率门控(SRPG)要求。

1.2 About integration and implementation

集成的操作根据你所使用的tools可能会有所不同

 

将处理器集成到SoC上,是第一步

 

集成的步骤:
  • 将时钟和复位连接到处理器
  • 将处理器连接到外设和总线
  • 执行对处理器的测试
  • 验证SoC

在此过程中,你必须要考虑的事情:

  • 接口,尤其是未使用的接口
  • 验证
 

撒旦法

Chapter2 Configuration Guidelines

介绍如何对处理器进行配置

2.1 About configuration guidelines

想要成功的配置处理器,你需要对所有的选项都进行配置

上面提到过,有两种集成的策略

不同的级别有不同的配置选项(通过参数parameter配置)

可以通过添加一个wraper对模块进行实例化,以完成对参数的配置;

也可以使用这些wraper在处理器上指定其他输入和输出,以进行电源门控或测试;

例如,提供的实例

  • CORTEXM0IMP.v
  • CORTEXM0INTEGATIONIMP.v

2.2 Configuration options

2.2.1 CORTEXM0 configuration options

 

  • ACG:指定是否包含时钟门,以最大程度的降低动态功耗;如果使用architectural clock gating,你必须在实现它的时候使用目标工艺库的cell替换

  parameter  ACG      =  1;      // Architectural clock gating:

                                 //   0 = absent

                                 //   1 = present

  • AHBSLV:指定实现SLV端口的总线协议;如果集成了Cortex-M0 level,需要使用到其他的debug infrastructure,ARM推荐设置这个参数为1

  parameter  AHBSLV   =  1;      // SLV port AHB-Lite compliance:

                                 //   0 = non-compliant

                                 //   1 = more-compliant

  • BE:指定处理器数据传输的endianness端,大端或者小端

  parameter  BE       =  0;      // Data transfer endianess:

                                 //   0 = little-endian

                                 //   1 = byte-invariant big-endian

  • BKPT:断点比较器的数量

  parameter  BKPT     =  4;      // Number of breakpoint comparators:

                                 //   0 = none

                                 //   1 = one

                                 //   2 = two

                                 //   3 = three

                                 //   4 = four

  • DBG:是否包含调试特性,和BKPT,WPT一块使用

  parameter  DBG      =  1;      // Debug configuration:

                                 //   0 = no debug support

                                 //   1 = implement debug support

  • NUMIRQ:指定外部中断的数量

  parameter  NUMIRQ   = 32;      // Functional IRQ lines:

                                 //   1 = IRQ[0]

                                 //   2 = IRQ[1:0]

                                 //   . . ...

                                 //  32 = IRQ[31:0]

  • RAR:指定是否重置所有的寄存器还是仅仅架构寄存器

  parameter  RAR      =  0;      // Reset-all-register option

                                 //   0 = standard, architectural reset

                                 //   1 = extended, all register reset

  • SMUL:乘法器的配置

  parameter  SMUL     =  0;      // Multiplier configuration:

                                 //   0 = MULS is single cycle (fast)

                                 //   1 = MULS takes 32-cycles (small)

  • SYST:是否使用系统滴答计时器,一般实现操作系统的时候会用到

  parameter  SYST     =  1;      // SysTick timer option:

                                 //   0 = SysTick not present

                                 //   1 = SysTick present

  • WIC:是否支持唤醒中断控制器
  parameter  WIC      =  1;      // Wake-up interrupt controller support:

                                 //   0 = no support

                                 //   1 = WIC deep-sleep supported

  • WICLINES:WIC支持的行;如果没有使用WIC的行,这个参数没有影响
  • parameter  WICLINES = 34;      // Supported WIC lines:

                                     //   2 = NMI and RXEV

                                     //   3 = NMI, RXEV and IRQ[0]

                                     //   4 = NMI, RXEV and IRQ[1:0]

                                     //   . . ...

                                     //  34 = NMI, RXEV and IRQ[31:0]

  • WPT:设置数据观察点的个数
  •   parameter  WPT      =  2;      // Number of DWT comparators:

                                     //   0 = none

                                     //   1 = one

                                     //   2 = two

2.2.2 CORTEXM0INTEGRATION configuration options

  • JTAGnSW

parameter  JTAGnSW  =  0;      // Debug port interface

                                 //   0 = SerialWire interface

                                 //   1 = JTAG interface

2.2.3 CoreSight ROM table base address

Cortex-M0处理器包括一个符合CoreSight的ROM表,该表提供了指向内存映射的NVIC和调试资源的指针。

该ROM表固定在处理器内存映射中的地址0xE00FF000处。

必须确保将此ROM表设置为系统中的单个主ROM表,或被系统中的另一个有效CoreSight ROM表引用

如果是CORTEXM0INTEGRATION level

单master的ROM table已经被配置好,并且在地址0xE00FF000处

 

如果是Cortex-M0级别:

参考技术手册:the CoreSight Components Technical Reference Manual

 

Chapter 3  Key Integration Points

3.1 About key integration points

本章列举了将Cortex-M0处理器集成到SoC设计中时要考虑的要点;可以使用这章检查是否完成相关集成步骤

3.2 Key integration tasks

 

Chapter 4  Functional Integration Guidelines

处理器集成到SoC的功能集成指南。

4.2 时钟

4.2.1 CORTEXM0 level clocks

4.2.2 CORTEXM0INTEGRATION level clocks

可以知道:FCLK,SCLK,HCLK,DCLK需要给一个同步时钟,SWCLKTCK给一个异步的调试时钟

4.3 复位

4.3.1 CORTEXM0 level resets

4.3.2 CORTEXM0INTEGRATION level resets

4.4 Interfaces

 

 

 

 

 

 

 

 

 

 

 

 
 
 
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

集成Cortex-M0内核-- Integration and Implementation Manual手册学习 的相关文章

  • Drools(专家系统)与 Android 项目的集成

    我有兴趣使用 Drools JBoss 专家系统基于规则的系统开发 Android 应用程序 它通过 Eclipse 每个工具 v3 2 都有一个插件 但我不完全知道如何成功地将 Drools Jars 集成到 Android 项目中 有一
  • 为什么 ThreadLocalRandom 的实现如此奇怪?

    这个问题涉及到实施ThreadLocalRandom在 OpenJDK 版本 1 8 0 中 ThreadLocalRandom提供每线程随机数生成器 没有 Random 带来的同步开销 最明显的实现 IMO 是这样的 它似乎保留了向后兼容
  • 如何从命名空间实现函数?

    本质上 这是我的源代码 namespace name int func void int main void name int func void body return 0 现在 我想在不同的地方编写该函数 声明为 int 命名空间 您不
  • DDD:Dto 汇编器应该是域层的一部分吗?

    提前致谢 我有一些骨料 in the 领域层图书馆 另外 一些DTO位于一个单独的库中 该库在之间共享Server and Client side An 总计的实体的信息量比其本身的信息量更丰富DTO 所以 为了从DTO to 总计的 a
  • Linux 用户空间 ELF 加载器

    我需要做一件相当不寻常的事情 手动执行 elf 可执行文件 IE 将所有部分加载到正确的位置 查询 main 并调用它 然后进行清理 可执行文件将被静态链接 因此不需要链接库 我还控制基地址 所以不用担心可能的冲突 那么 有没有相关的库呢
  • 使用节点实现重新填充堆栈

    在我把它全部取下来打印出来后 我很难重新填充堆栈 我正在使用节点实现 所以我认为这个事实让我感到困惑 任何建议将不胜感激 谢谢 这是我原来的 stack print Function to print Gumball info field
  • C++ 中的头文件和 Java 中的抽象类/接口实现都是相同的想法,这是否正确?

    我对 C 有点熟悉 我知道对于几乎每个头文件 我都必须创建源文件来配合它 现在我正在研究java接口和实现 它看起来是一样的 首先 您只需在一个类中命名变量和方法 然后在其他类中定义它们 C 和Java中的这些东西是不是基本相同或者相似 J
  • Spring-Drools 集成:引用的文件 (kie-spring.xsd) 包含错误

    我正在尝试将 drools 与 Spring 一起使用 春季版本4 01 Drools Kie 版本 6 0 1 我的 kie context xml 有以下错误 在 Eclipse 中 引用的文件包含错误 http drools org
  • 使用黎曼和进行数值积分 (Python)

    我有以下代码 但是当它运行时 它给出0 0它应该返回一个值2因为我正在尝试整合sin x 在区间内 0 pi 请指教 from math import sin pi def Rsum a b for i in range 1001 s 0
  • 我可以创建一个 Android 应用程序作为模板吗?

    我不确定它的标题是否正确 但我会解释我的意思 我正在制作多个 Android 应用程序 但它们具有相同的结构 滑动菜单 列表视图 关于我 服装对话框 复制 分享 喜欢 对样式进行一些修改 颜色 背景 字体 菜单字符串 我的问题是 有没有办法
  • 如何通过 Emacs 23.1 内置集成设置 SVN 密码?

    我正在 CentOS 6 2 上做一个项目 使用发行版提供的 Emacs 23 1 1 和使用 svnserver 的 subversion 我无法在任何地方找到如何设置存储库访问密码 关于此还有另一个问题 SVN for Emacs 如何
  • Spring 3 MVC Controller集成测试-将Principal注入到方法中

    作为 Spring 3 MVC 的一部分 可以将当前登录的用户 原理 对象注入到控制器方法中 E g Controller public class MyController RequestMapping value update meth
  • SVG 1.1:什么是“用户单位”以及如何将用户单位转换为绝对单位(例如:毫米)?

    我正在实现 SVG Tiny 1 1 但我无法理解 用户单元 的概念 SVG 1 1 规范将每个没有指定单位 例如 mm cm pt 等 的 定义为 用户单位 在实现 SVGLength 接口时 我遇到了4个与长度值相关的属性 value
  • 我应该在实现文件中使用未命名的名称空间吗?

    我在外部 cpp 文件中定义了一些函数 这里不涉及类 当然还有一个合适的 h 文件 使用了 cpp文件中的一些函数only在该 cpp 文件中没有其他地方 它们甚至没有在 h 文件中提及 我应该将这些函数放入未命名的命名空间中 还是可以将它
  • (n - 乘法) 与 (n/2 - 乘法 + 2 加法) 哪个更好?

    我有一个具有 n 次乘法 n 次乘法的单次乘法 的 C 程序 并且我发现了另一个具有 n 2 次迭代 1 次乘法 2 次加法 的逻辑 我知道两者的复杂度都是 O n 但就CPU周期而言 哪个更快 在您的计算机上测试 或者 查看您的处理器的规
  • BigInteger 数字的实现和性能

    我用 C 编写了一个 BigInteger 类 它应该能够对任何大小的所有数字进行运算 目前 我正在尝试通过比较现有算法并测试它们最适合哪些位数来实现非常快速的乘法方法 但我遇到了非常意外的结果 我尝试进行 20 次 500 位数字的乘法
  • GitHub 错误 Probot:未找到集成,documentation_url

    我在使用 GitHub 的 Probot 应用程序时遇到身份验证问题 当我使用 npm start 运行应用程序时 我会得到 github Github request GET app installations 404 Not Found
  • 为什么 split(' ') 试图变得(太)聪明了?

    我刚刚发现以下奇怪的行为String split a tb c nd split gt a b c d a tb c nd split gt a b c d a tb c nd split gt a tb c nd 来源 https git
  • git 可以与 Xcode 集成吗?

    有没有办法将 git 存储库与 Xcode 内置的 SCM 功能一起使用 Xcode 4 原生支持 git WWDC 2010 上的开发者工具国情咨文演讲 在这里了解更多 Xcode 4 中的新增功能 http developer appl
  • Akka 与现有 java 项目集成的示例

    如果我已经有现有的javaWeb 应用程序使用spring and servlet容器 将 Akka 集成到其中的正确方法是什么 就像我将会有Actor1 and Actor2互相沟通的 开始使用这些演员的切入点是什么 例如 1 把它放在那

随机推荐

  • 程序是怎样运行的

    一 CPU的内部结构解析 1 程序运行流程 程序员用C语言等高级语言编写程序 int a a 61 1 43 2 printf 34 d 34 a 将程序编译后转换成机器语言的EXE文件 01000101000010111 00110100
  • 人性的弱点 --卡耐基

    自序 成就此书的因缘 和人类所具备的潜能相比 xff0c 我们仍处于蒙昧之中 人类的身心只有极小部分得到了发挥 广义而言 xff0c 人类个体远未到达极限 人类囿于自身习惯 xff0c 从未将与生俱来的诸多能力发挥至极致 本书 xff0c
  • git-flow分支模型

    分支模型 xff1a 用 git flow 初始化工程目录完成后 xff0c 只能看到两个分支 xff08 长期分支 xff09 xff1a master 分支 xff1a 用于上线的分支 xff0c 保护性分支 xff0c 只包含经过测试
  • MySQL show关键字用法

    SHOW DATABASES 列出 MySQL Server 上的数据库 SHOW TABLES FROM db name 列出数据库中的表 SHOW TABLE STATUS FROM db name 列出数据库的表信息 xff0c 比较
  • windows10共享文件夹挂载到Ubuntu

    程序开发人员一般都会把开发目录放在windows系统下 xff0c 开发环境却是linux 以前我是linux下文件挂载到windows xff0c 有同事前车之鉴 xff0c 万一虚拟机linux挂壁了 xff0c 很难恢复 现在准备把w
  • 闭包函数中use使用

    匿名函数中的use xff0c 其作用就是从父作用域继承变量 下例是最常见的用法 xff0c 如果不使用use xff0c 函数中将找不到变量 msg 1 2 3 4 5 6 7 8 lt php msg 61 1 2 3 func
  • for update秒杀

    Mysql InnoDB 排他锁 用法 xff1a select for update 例如 xff1a select from goods where id 61 1 for update 排他锁的申请前提 xff1a 没有线程对该结果集
  • UNION 和 UNION ALL

    UNION用的比较多union all是直接连接 xff0c 取到得是所有值 xff0c 记录可能有重复 union 是取唯一值 xff0c 记录没有重复 UNION 和 UNION ALL 的语法都是 xff1a SQL 语句 1 UNI
  • php网站压测(ab)

    一般来说核心页面都需要进行压测 xff0c 特别是秒杀页面 xff0c 从而知道网站的承受能力 xff0c 方便暴露一些问题 xff0c 更好的把控网站 压测工具有很多种 xff0c 最简单 方便的可以使用ApacheBench xff0c
  • CSV文件读取 C++版本

    代码 span class token comment 创建结构体 xff0c 把读取数据可以放入结构体成员中 span span class token keyword struct span span class token class
  • 四种常见的 POST 提交数据方式

    HTTP 1 1 协议规定的 HTTP 请求方法有 OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT 这几种 其中 POST 一般用来向服务端提交数据 xff0c 本文主要讨论 POST 提交数据
  • json_decode

    json 61 34 34 errorno 34 0 34 errormsg 34 34 可以 34 34 data 34 34 guid 34 34 5762340 34 34 username 34 34 wiu370468 34 34
  • csv乱码处理

    handle 61 fopen 34 war csv 34 34 r 34 row 61 1 while data 61 fgetcsv handle 1000 34 34 data 61 eval 39 return 39 iconv 3
  • OR和AND关键字一起使用的情况

    OR和AND关键字一起使用的情况 OR关键字和AND关键字 xff0c 可以一起使用 xff0c 需要注意 xff0c AND的优先级高于OR 因此 xff0c 当两者一起使用时 xff0c 应该先运算AND两边的条件表达式 xff0c 再
  • Ubuntu cron 定时执行任务

    cron xff0c 是一个Linux定时执行工具 xff0c 可以在无需人工干预的情况下运行作业 1 关于crontab 在Ubuntu server 下 xff0c cron是被默认安装并启动的 通过 etc crontab文件 xff
  • Linux服务器上监控网络带宽的18个常用命令

    本文介绍了一些可以用来监控网络使用情况的Linux命令行工具 这些工具可以监控通过网络接口传输的数据 xff0c 并测量目前哪些数据所传输的速度 入站流量和出站流量分开来显示 一些命令可以显示单个进程所使用的带宽 这样一来 xff0c 用户
  • Linux系统使用iftop查看带宽占用情况

    Linux系统下如果服务器带宽跑满了 xff0c 查看跟哪个ip通信占用带宽比较多 xff0c 可以通过iftop命令进行查询 xff0c 使用方法如下 xff1a 1 安装方法 软件官网地址 xff1a http www ex parro
  • linux基础命令

    1 curl amp wget 使用curl或wget命令 xff0c 不用离开终端就可以下载文件 如你用curl xff0c 键入curl O后面跟一个文件路径 wget则不需要任何选项 下载的文件在当前目录 代码如下 curl O we
  • find_in_set

    1 in查询相当于多个or条件的叠加 xff0c 例如 xff1a select from user where user id in 1 2 3 等效于 select from user where user id 61 1 or use
  • 集成Cortex-M0内核-- Integration and Implementation Manual手册学习

    根据使用场景 xff0c 配置并集成一个Cortex M0的内核 xff0c 暂时不涉及的实现的部分 目录 阅读手册 Chapter1 Introduction 1 1 About the processor 1 2 About integ