提示:本文内容参考慕课课程:《ARM微控制器与嵌入式系统》

嵌入式开发的基本概念与工具链

  • 前言
  • 一、电路板
    • 1.开发板:EVB(Evaluation board)
    • 2.最小系统板
  • 二、开发软件
    • 1.IDE/Tool chain
    • 2.交叉编译(Cross Compiler)
  • 三、开发工具
    • 1.模拟器(Simulator/Emulator)
    • 2.调试器(Debugger)
    • 3.编程,烧写器(Programmer/Burner)
  • 四、嵌入式开发的进阶知识
    • 1.微控制器的启动过程
    • 2.微控制器软件开发的流程
    • 3.微控制器开发过程中的各种文件

前言

嵌入式开发领域的基本概念以及嵌入式开发流程中所需的工具。


一、电路板

1.开发板:EVB(Evaluation board)

最小系统+大量的外设,如:AD/DA,数码管,液晶,蜂鸣器,步进电机,时钟电路,温度测量等。

把芯片所有的引脚和外设都引出来,板子不会太小,可以很轻松搭建电路。

2.最小系统板

EVB的高度凝练,提供单片机工作所需的最小外围电路。

一般只包括电源,复位电路,振荡电路,以及将IO口全部引出。可灵活设计外围电路。

二、开发软件

1.IDE/Tool chain

IDE:集成开发环境。例如:Visual C++,KEIL,IAR。

微处理器的内核不同,有不同的指令集和寄存器组,所以需要不同的开发工具。
一个完整的工具链构成包括:

  1. Assembler汇编器:把汇编代码一一对应具有映射关系的变成机器码
  2. Compiler编译器:解析高级语言:把它进行语素和逻辑上的拆解,最后翻译成中间语言或者汇编语言。
  3. Linker链接器:把编译的绝对地址定义的代码段,根据内存地址映射,最终形成可执行的,可相互调用的,完整的程序。
  4. Disassemble反汇编器:将机器码反向成汇编代码。

2.交叉编译(Cross Compiler)

交叉编译器是指一个在某个系统平台下可以产生另一个系统平台可执行文件的编译器。在对象系统平台难以或不容易编译时非常有用。

绝大多数的嵌入式开发都是使用计算机的平台进行编程,最终得到在嵌入式平台上可以使用的这样一个程序。

三、开发工具

1.模拟器(Simulator/Emulator)

计算机虚拟出一款硬件平台。

嵌入式平台的指令集与计算机不同,我们在做纯软件和算法验证的时候可以借助模拟器。

可以通过编程语言写出一个虚拟的CPU构架,完成所有指令的功能解析,甚至完成所有对于存储和外设的调用,让程序误以为自己在一个硬件的平台上跑。

2.调试器(Debugger)

使用几根有限的通讯线非常高效的与CPU以及微处理器内置的调试模块接口进行通讯,然后发送和接收调试所用的信息。

有BDM,JTAG,SWD等通讯协议。绝大多数ARM Cortex处理器都使用的是SWD的调试接口。

1.USBDM:开源,使用BDM或SWD的协议,广泛支持一系列MCU。
2.OpenSDA

3.编程,烧写器(Programmer/Burner)

可以把编写好的一个程序放在烧写器里,然后批量更换芯片烧写程序。

四、嵌入式开发的进阶知识

1.微控制器的启动过程

一旦上电复位,在之前烧写的程序中,程序的入口地址会填写在PC指针处。

CPU会自动把堆栈初始地址和PC指针地址加载到CPU里,所以CPU从程序的第一条指令逐条向下执行,执行过程中会访问存储器,在内存中读写定义的变量数组等,在函数调用或参数传递时使用堆栈的内存,控制外设时即访问外设寄存器。

2.微控制器软件开发的流程

写C程序
→ 用工具链编译得到目标代码
→ 交叉编译得到所用的CPU上的程序
→ 通过仿真器验证运行
→ 通过调试器可以把程序以某种通讯协议让芯片执行。

C程序
→程序放到存储器里,被CPU读取
→控制相应的外设

3.微控制器开发过程中的各种文件

链接配置文件:告诉微处理器哪个地址段是flash可以放程序,哪个地址段是RAM可以放变量,哪个地址段是RAM的底部可以是堆栈。

映射文件:详细记录了在链接的时候声明的每个变量,每个函数体所使用的地址空间。


【嵌入式系统开发】学习笔记四:嵌入式开发的基本概念与工具链相关推荐

  1. 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言

    嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...

  2. Polyworks脚本开发学习笔记(四)-利用FILE IMPORT进行数据导入及对齐

    Polyworks脚本开发学习笔记(四)-利用FILE IMPORT进行数据导入及对齐 导入参考及数据 FILE IMPORT_REFERENCE导入参考的CAD文件如igs格式 括号内参数分别为(导 ...

  3. 嵌入式系统设计师学习笔记①:数的进制转换

    嵌入式系统设计师学习笔记:数的转换 进位计数制系统的基本概念:数制,基数,数码,数位,位权 制作了个表格如下: 在十六进制中:A-10,B-11,C-12,D-13,E-14,F-15. 举例各种进制 ...

  4. 嵌入式系统设计师考试笔记之嵌入式系统基础知识

    以下是转帖一位网友的嵌考笔记 嵌入式系统设计师考试笔记之嵌入式系统基础知识 欧浩源(ohy3686@qq.com) 20080818 一.引言 自<嵌入式系统设计师考试复习笔记之存储管理篇> ...

  5. Polyworks脚本开发学习笔记(一)-脚本开发环境

    Polyworks脚本开发学习笔记(一)-脚本开发环境 背景 Polyworks的扫描尺寸测量分析模块是我工作中经常用到的一个模块,我不是做测量的,但是利用Polyworks对扫描获得的点云来进行尺寸 ...

  6. Polyworks脚本开发学习笔记(十)-互动式开发及出错控制

    Polyworks脚本开发学习笔记(十)-互动式开发及出错控制 第八章组合的各种命令,完成了一个对所选的测点名称进行命名的任务.但是,由于任务中没有交互环节,只能机械地将 曲面点 - 包边点改为Flu ...

  7. 《嵌入式系统设计师》笔记之一——嵌入式系统基础知识

    1.1 嵌入式系统的定义和组成 1.1.1 嵌入式系统的定义 以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能.可靠性.成本.体积.功耗严格要求的专用计算机系统. 1.1.2 嵌入式 ...

  8. 敏捷软件开发学习笔记(四)之结构型设计模式

    PHP结构型设计模式 参考 设计模式 PHP 设计模式全集 2018 什么是结构型是设计模式 结构型模式讲的是如何将类和对象按照某种布局组成更大的结构.它分为类结构型模式和对象结构型模式,其中类结构型 ...

  9. 嵌入式系统想学习笔记之五--uboot之常用命令

    1. 常用操作命令 1..1 网络命令 使用网络命令之前,首先需要设置开发板的 IP 地址和 mac 地址: => setenv ipaddr 192.168.0.232=> setenv ...

  10. windows内核开发学习笔记四十四:注册表存储结构-储巢

    上一篇文章学习了注册表的逻辑结构,接下来我这篇文章来学习注册表的存储结构.注册表实际存储是由一组储巢构成,每个储巢包含了一个由键和值构成的层次结构.下面表是windows的各个储巢的注册表路径和文件路 ...

最新文章

  1. 学习使用Bing Maps Silverlight Control(五):离线使用和自定义地图模式
  2. 非常规解释:分类ML模型的十大模型性能指标
  3. 前端基于gulp后端基于freemarker的工作流程总结
  4. 中国磁性材料行业竞争趋势及供需前景分析报告2021年版
  5. VTK:网格之QuadricDecimation
  6. Myeclipse 创建web项目的一些基本操作
  7. mysql如何优化性能优化_如何优化性能?MySQL实现批量插入以优化性能的实例详解...
  8. 支付宝当面付接口如何计算优惠
  9. dj电商-数据表的设计-商品表的设计
  10. 计算机达人成长之路(8)连载
  11. Android 数字格式化
  12. media encoder中文2022已上线
  13. SQL Server 创建索引(index)
  14. C和C++的区别点汇总
  15. zlib——Usage Example翻译
  16. Java实习生常规技术面试题每日十题Java基础(五)
  17. html程序产品目录,产品目录(Catalog)制作大师
  18. 这一周通过了GoogleSummer of Code谷歌编程之夏
  19. markdown中关于空格缩进的问题
  20. Redis基本操作命令(图文详解)

热门文章

  1. PPT个人学习笔记(一)——该用的和不该用的
  2. win10任务栏透明_Win10任务栏美化工具
  3. 根据详细地址获取经纬度
  4. 如何用python打造个人云盘!
  5. 富士施乐DocuPrint m115b加粉后粉盒和硒鼓清零方法
  6. 美利坚驯鹰计划——F-22A战斗机训练状况
  7. 复旦大学计算机学院入营名单,入营信息丨2019夏令营入营名单汇总(6月24日)...
  8. 柔性matlab机械臂运动空间代码,中正平和的机器人学笔记——2. 机械臂逆运动学(附MATAB代码)...
  9. seo SEO工具包
  10. ubuntu18安装好驱动,关机之后失效,NVIDIA驱动失效简单解决方案:NVIDIA-SMI has failed because it couldn‘t communicate with the