IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 嵌入式系统开发05——MDK5的安装、汇编语言编程入门实践以及Hex文件的分析 -> 正文阅读

[嵌入式]嵌入式系统开发05——MDK5的安装、汇编语言编程入门实践以及Hex文件的分析

本文主要叙述如何搭建并配置Keil嵌入式开发环境,并在此基础上完成基于STM32汇编程序的编写,以及对hex文件的简单分析。

一、环境搭建

1、MDK是什么

MDK 源自德国的 KEIL 公司,是 RealView MDK 的简称,在全球 MDK 已经有超过 10 万的嵌入式开发工程师使用。Keil MDK 是基于 Arm 的微控制器最全面的软件开发解决方案,包括创建、构建和调试嵌入式应用程序所需的所有组件。

2、软件下载

首先需要下载安装 MDK5 软件和 STM32 包,STM32包中附带配置MDK所需要的芯片支持包。
下面提供两种选择:

(1)官网下载

官网下载比较慢,可以使用 Edge 的多线程下载功能来提高下载速度,打开方式如下:
首先在edge的地址栏输入 edge://flags/ ,然后在搜索框中输入 Parallel downloading,在其后面的选项中选择 Enabled,接着重启 Edge 即可
打开多线程下载
打开后

MDK-ARM:
下载地址: https://www.keil.com/download/product/

依次点击 “MDK-Arm”->“MDK537.EXE” ,下载 MDK537.exe
选择arm
注意下载正确版本,选择 MDK-Arm
在这里插入图片描述

芯片支持包:
在上面的操作结束后,在当前页面点击 Device List
Device List
进入如下页面,滑动滚轮向下翻页,直到找到 STMicroelectronics ,点进去
芯片支持包1
选择 STM32F1 Series,点击 STM32F103,选择 STM32F103ZE
芯片支持包2
下载
点击右下角的 Download,下载芯片支持包

(2)百度网盘下载

网盘链接:https://pan.baidu.com/s/1HnfzWk4CYgGr_rSfuM-Gyw
提取码:plt3
网盘里面的文件和官网上面的一样,我打包在一起的
注册
因为官网上面的是上面提供的MDK软件是试用版本,只能编译32K程序,超过32K程序需要注册,未注册软件编译程序会提示错误信息。学生工程师学习研究用途需要使用MDK,可以使用文件夹内的注册工具生成注册码

3、MDK(Keil)软件安装

(1)双击打开 MDK537.EXE 应用程序文件,点击 Next>>

1
2

(2)勾选 I agree… 后,点击 Next>>

3

(3)选择安装路径,并点击 Next>>

4

(4)随意输入 NameE-mail,再点击 Next>>

5

(5)等待安装完成,点击 Finish

6
7
(6)浏览器会自动打开网页,弹出以下信息,点击 OK 后,鼠标会变成转圈圈的,因为正在进行在线安装各种 pack 支持包 ,但会安装失败,不用着急,右上角关掉窗口,下面开始手动安装 pack 支持包
8
9

4、安装芯片支持包

(1)双击打开 Keil.STM32F1xx_DFP.2.4.0.pack 支持包,出现安装界面后点击 Next>> ,开始安装

10
11

(2)需要等待一会

12

(3)点击 Finish,完成安装

13

5、注册

(1)点击运行注册器程序

14
15

(2)在桌面找到 Keil uVision5 软件图标,点击 鼠标右键以管理员身份运行

16
17
(3)点击 File–>Lincense Management–>Single-User Lincense ,找到 CID,复制 CID 中的内容填写到注册器的 CID 空白处,将注册器中 Target 选择为 ARM ,点击 Generate ,得到注册码
18
19
20

(4)将生成的注册码复制粘贴到 KeilNew Lincense ID Code 空白处,点击 Add LIC
21
22

(5)添加成功后,可以看到如下信息,点击Close就完成注册了

23
至此MDK5安装完成!

二、STM32汇编程序

1、新建工程

(1)打开 Keil,选择 Project ,点击 New μVision Project…

24

(2)选择文件保存的路径以及文件的名称,点击 保存

25

2、选择设备

在弹窗中选择相应的目标环境,此处我选的是 STM32F103ZE
26
27

3、选择运行环境

ARMCMSIS 已经把开发所需要的软件组件都封装好了,因此直接选择即可;
(1)CMSIS下选择 CORE
(2)Device下选择 Startup,其中包含了启动文件
28

4、添加源文件

(1)右击 Source Group 1 ,点击 Add New Item to Group ‘Source Group 1’…
29

(2)点击 Asm Files (.s) 添加汇编文件,然后输入文件名 test,并点击 Add

30
31

5、编写汇编程序

 AREA MYDATA, DATA
	
 AREA MYCODE, CODE
	ENTRY
	EXPORT __main

__main
	MOV R0, #10
	MOV R1, #11
	MOV R2, #12
	MOV R3, #13
	;LDR R0, =func01

	BL	func01
	;LDR R1, =func02
	BL	func02
	
	BL 	func03
	LDR LR, =func01
	LDR PC, =func03
	B .
		
func01
	MOV R5, #05
	BX LR
	
func02
	MOV R6, #06
	BX LR
	
func03
	MOV R7, #07
	MOV R8, #08	
	BX LR

32

6、设置仿真器

(1)点击 魔法棒 ,点击 Debug,设置仿真器为 Use Simulator
33
设置下面的 Dialog DLL 项为:DARMSTM.DLLTARMSTM.DLL
Parameter 项为:-pSTM32F103ZE
34

或者通过右键 Target 1,选择 Options for Target ‘Target 1’…,进入设置
35
(2)在 Output 下勾选 Create Hex File ,这样就可以生成 hex 文件了
36

7、编译程序

点击 Build 或者 Rebuild
37
没有报错,编译成功,并且生成了 hex 文件
38

39

8、调试

点击 1 处的按钮进入调试,多次点击 2(Step Over),直到调试结束,此时可以看到寄存器 R5,R6,R7,R8 与程序设置一致
40
若看不到调试结果,可以点击一次 Stop
41

三、Hex文件分析

1、什么是Hex文件

它是由一行行符合 Intel HEX 文件格式的文本所构成的ASCII 文本文件。每一行包含一 个 HEX 记录 ,由对应机器语言码和/或常量数据的十六进制编码数字组成。Hex文件通常用于传输将被存于ROM 或者EPROM 中的程序和数 据。大多数EPROM 编程器或模拟器使用Intel HEX 文件。Hex文件是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式由很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。

2、Hex文件内容分析

(1)从编译的 Output 可看出最终生成的 hex 文件各部分的大小
43
(2)用记事本打开 hex 文件,发现其是一连串的十六进制数
44
45
(3)扩展线性地址记录
hex 文件的第一排字符称之为 扩展线性地址记录,也称为 32位地址记录HEX386记录
在第一行数据 020000040800F2 中,其实际表达为0x02 0x00 0x00 0x04 0x08 0x00 0xf2。具体含义为:

第一个字节 0x02表示本行数据的长度;
第二、三字节 0x00 0x00表示本行数据的起始地址;
第四字节 0x04表示数据类型;
0x08 0x00是数据;
最后一个字节 0xf2为校验和,计算方法是01h+NOT(02h+00h+04h+08h+00h)

其中第四字节的数据类型有:0x00、0x01、0x02、0x03、0x04、0x05,分别有以下含义

数据类型作用
0x00用来记录数据,HEX文件的大部分记录都是数据记录
0x01用来标识文件结束,放在文件的最后,标识HEX文件的结尾
0x02用来标识扩展段地址的记录
0x03开始段地址记录
0x04用来标识扩展线性地址的记录
0x05开始线性地址记录

(4)hex文件的数据格式
42

Intel HEX 由任意数量的十六进制记录组成。每个记录包含5个域,每一组字母 对应一个不同的域,每一个字母对应一个十六进制编码的数字。每一个域由至少两个十六进制编码数字组成,它们构成一个字节。

字节作用
:(冒号)每个Intel HEX 记录都由冒号开头
LL数据长度域, 代表记录当中数据字节 (D…D) 的数量
aaaa地址域, 代表记录当中数据的起始地址
TT代表HEX 记录类型的域
D…D数据域,代表一个字节的数据
CC校验和域,表示这个记录的校验和

记录格式可表示为::[1字节长度][2字节地址][1字节记录类型][n字节数据段][1字节校验和]

一个记录可以有许多数据字节。记录当中数据字节的数量必须和数据长度域(LL)中指定的数字相符
校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足

对照第一行的扩展线性地址记录 :020000040800F2 中,可以看做是 0x02 0x00 0x00 0x04 0x08 0x00 0xf2
第一个 0×02 表示该行数据中有两个数据
第二个,第三个 0x00 0x00 表示本行数据的起始地址位
第四个字节 0x04 表示扩展线性地址记录,对应上述的 TT 域
第五个、第六个 0x08 0x00 表示数据字节,与 数据长度域(LL) 中对应,即第一个 0x02
最后一个字节 0xf2 为校验和。校验和= 0x100 - 累加和

(5)文件尾
在文件的最后一排,是一个文件的结束标志::00000001FF

内容描述
00记录的长度为 0
0000LOAD OFFSET为0000
01TYPE = 01
FF校验和为FF

四、总结

通过本次练习,我能够更加熟练的搭建并配置 Keil 嵌入式开发环境,初步掌握了 Keil 的使用方法,并在此基础上完成了基于 STM32 汇编程序的编写,并且实现了汇编程序的编译和调试。通过查阅资料了解了hex文件的内容和数据格式。但是由于没有学过汇编语言,实现过程也遇到了很大的阻碍,希望可以通过后面的学习来完善相关知识的储备。


参考列表:
1.https://blog.csdn.net/qq_45659777/article/details/120496577
2.https://blog.csdn.net/qq_43279579/article/details/108880667?utm_source=app
3.https://blog.csdn.net/ssj925319/article/details/108919862
4.https://blog.csdn.net/u010632165/article/details/106481146
5.https://blog.csdn.net/ssj925319/article/details/111868500
6.https://blog.csdn.net/xwmrqqq/article/details/111824539
7.https://blog.csdn.net/qq_43279579/article/details/111717607

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:58:04  更:2022-10-08 20:59:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:53:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码