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

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


前言

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


一、电路板

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以及微处理器内置的调试模块接口进行通讯,然后发送和接收调试所用的信息。
STlink

有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的底部可以是堆栈。

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

在这里插入图片描述


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KkKde小火柴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值