当前课程知识点:智能车制作:嵌入式系统 >  第四章 MCU外设与开发 >  E0.2 实验零 体验一个例程的编译与下载 >  Video

返回《智能车制作:嵌入式系统》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《智能车制作:嵌入式系统》慕课在线视频列表

Video课程教案、知识点、字幕

各位同学大家好

我是清华大学工程物理系的曾鸣老师

欢迎大家继续回到我们第零次实验的课程

那么在这个单元里呢

大家一看我电脑 开发板

还有调试工具都支起来了

跟前面两个单元不一样

那么前面两个单元我带着大家认识了一下

我们的硬件开发工具

以及带着大家装了一下我们的软件工具链

那么这个单元就来检验我们的工具链有没有装好

能不能正确的把一个工程文件编译

下载到我们的板子里实际运行起来

也就说第零次实验

我们要带着大家真真正正的去体会这么一个

开发的过程

来帮助大家把工具链真的跑起来

那么我们要进行这样一个开发

就像我现在桌子上所放的

我们要有电脑

要有我们的板子和调试器

那么他们的连接关系呢就跟这张图一样

那么我们在开发板和调试器

都通过一个USB的电缆分别与我们的电脑相连

那么相连的时候这两个电缆是不一样的

一个是micro USB

一个是标准的方口的USB口

相信大家肯定不会插错

那么在我们的开发板上micro的USB口有两个

一个只取电

一个除了取电 还可以进行UART的通讯

那么考虑到我们后面实验内容

我们一般都会把它使用有UART通讯功能的USB口

来给我们开发板供电

那么我们的调试器和我们开发板之间会用一个

两个扁平电缆当中比较细比较软的那一根

来进行连接

我这里专门用一个红色的区域

标识了一个注意事项

就是这两个双排的插座

它都在丝印层

用白色的标识标出了引脚1的位置

所以大家在连接的时候呢

尽量注意用你的扁平电缆当中

有红色标记的这个1号线

跟这个引脚1的位置一一对应

同样在调试器的这一端

也使用跟他尺寸匹配的这个插座

正确的插入一号引脚的位置

那么如果大家不小心插反了

从设计上来讲应该是不会烧毁电路的

但是会导致你的调试器无法正确的连接

和找到这样一个开发板的微控制器芯片

那么如前面所示

当大家把自己的开发平台像这样连接好

特别是调试器的USB线插入电脑之后

那么作为一个检验我们在电脑的设备端

也就设备管理器里

可以看到这样一个设备已经被正确的识别出来了

比如说我们现在切换到设备管理器

在我的电脑上如窗口中所示

就应该看到有一个便携设备类下

有一个JLINK设备

这是我们调试设备

同时在端口的串口与并口当中

有一个JLINK的CDC的USB虚拟串口识别出来

我们也可以单击右键

更改他所识别出来的串口号

便于我们后面进行一些串行通讯的实验

那么如果这两个设备正确识别

我们工具链就搭建成功了

那么接下来在这个单元里

要给大家做的第一个步骤呢

是把我提供给大家的MKL25Z128测试例程

这样一个程序给解包

导入到我们的CodeWarrior里头

尝试编译一个老师给的已经写好的程序

看看我们板子能不能正常的运行起来

同时用这个程序测一测

我们的板子是否工作正常

那么它的工作步骤呢是这样的

我们来切换到D盘

任意一个目录来做几个准备性的工作

第一个工作呢

是把我们下载下来的源码包放到任意一个目录里

我们对它进行解压缩

那么我们解压缩以后

就会得到一个解开的目录文件

如果我们进去会发现这个目录里有大量的源码

和工程文件

是一个完全已经写好的这个微控制器的程序工程

那么我们待会会教大家

如何将这样一个工程导入到我们CodeWarrior

以及日后我们自己如何备份

这样一个完整的写好的程序把它备份出来

那接下来我们回到比如说我们D盘的根目录

或者任意一个你喜欢的目录

那么我们建一个新的子目录

这个目录是个空的

那么这将是我们未来使用CodeWarrior进行开发的

一个工程空间或者叫Workspace

工作区

那么根据个人的喜好

比如我自己就会给它起名字叫

Ming_Workspace

那么在这个起名的时候大家注意

尽量在某一个盘的根目录来制作

那么为了初学者避免出问题

一定注意你的文件名

你这个文件夹的名字不要使用任何中文字符

也尽量不要有空格

像我这样比较简单规范的

一个连续字符的英文名称的文件夹是最好的

那么这个目录将会成为我们CodeWarrior里头的

项目的工程空间

换言之 日后我们的CodeWarrior里头

可以开发多个工程文件

每一个项目 每一个应用程序

都会在这个目录里

自动形成一个新的子目录

也就是一个工程一个子目录

我们日后进行备份和打包的时候

只用把对应的子目录打包备份出来就可以了

那么有了这一步

我们接下来启动我们的CodeWarrior

切换到CodeWarrior的界面

那么如果大家是第一次启动CodeWarrior

或者像我这样切换CodeWarrior的Work space

都会看到这样的一个对话框

他询问你请你select a workspace

选择一个工作区域

那么我们刚才建好了一个崭新的空目录

我们将它指向我们刚才所建的这个目录

比如说在D盘ming_workspace我们点确定

那么这样的话我们的CodeWarrior

就会将这个目录作为接下来所有工作的主目录

我们所新建的所有工程都会在里头

形成一个个独立的子目录

我们点一下OK

那么这时候发现CodeWarrior退出了

它自动进行一次重启

最主要呢 是要在这个Workspace里

进行一些基础文件的构建

并且重新启动指向这个目录

我们稍等片刻

等这个CodeWarrior的启动

那么我们CodeWarrior已经完成它的启动

如果把窗口最大化

我们会发现这是一个几乎全空的界面

那么未来这几个区域里

将分别发挥工程管理

代码显示和错误提示的作用

那么我们现在来尝试导入刚才所说的

一个已有的工程文件

我们点files菜单

向下滑动可以看到有一个选项import导入

选择导入后会弹出个对话框

有若干种资源和源码文件可以被导入

我们选择其中的第一类

general里头的第二种

existing projects into Workspace

也就是向工程区间

导入一个已经存在的项目文件

然后点下一步 next

这个时候他会询问你要在哪一个目录

去寻找已经存在的工程文件

大家记得已经刚才提示过从网上下载过

老师提供的测试程序

并且把它解包

所以我们将目录指向

刚才我们解包程序的那个目录

比如download底下的MKL25 Blazar test

然后选中这个目录以后

我们点确定

这个时候我们会发现CodeWarrior的帮助

已经自动在这个目录里找到了一个存在的project

它的名字就是KL25 Blazar test

我们在他前面确保打上勾

选中这个文件

同时我们把底下有一个选项叫

copy project into Workspace这个勾打上

表示说我们接下来的编辑都不改变

刚才这个解包的目录原始位置的文件

而是将这个目录完整复制到

我们新建的工作区域里

成为一个新的子目录

来对他进行编辑和修改

然后点finish

这个时候会有对话框

它完成了将这个工程文件导入和复制的所有工作

这个时候我们回到了CodeWarrior界面

然后我们会看到在CodeWarrior界面的左上角区域

这是我们工程文件的管理区

那么管理区里有若干个目录和文件

我们看到它的最下方一个是sources也就是源代码

这个时候我们把它点开

会发现因为这是一个导入的工程

已经有了大量的源文件

其中大家最最熟悉的一个就是main.c文件

这个时候我们双击

我们就会发现

main.c文件会在右侧的代码编辑窗口被打开

里头有我们熟悉的main函数

那么这样一个编辑界面当中

左边是工程的管理区域

右边是代码区

下面是编译的调试报错区

如果大家还记得我们在第四章的

第二单元里给大家讲过

这个嵌入式微控制器开发背后的

各种基本原理的话

我们会在这个工程区域里

找到我们熟悉的各种文件

比如是指定单片机型号所有寄存器定义的文件

在工程文件的project headers里头

那么我们打开它

可以看到跟我们所使用单片机型号

对应的MKL25Z4也就是Z128的头文件

说明了所有的寄存器

那么在我们链接和编译的装配图里头

比如我们打开第二类

project settings

我们会发现第二类叫linker files

那么我们之前所讲过的

关于flash和RAM在哪的装配文件

其实在这个区域

那么下面第三个类别startup code里头

我们可以找到关于这个程序

如何加载复制和初始化内存

最终跳转到main函数的那一段起始代码

都是在这里

所以说除了后面的main函数

这些真正的用户程序

刚才讲到这些寄存器还有装配图如我所说

都是由CodeWarrior开发工具自动为大家生成的

那么在这样一个工程文件里头

我们怎么来编译它呢

非常简单

我们看一看我们的工具栏

左上角有一个小锤子的标志

如果指向它

它会说这是Build整个project

也就是从编译到链结

我们点击一下

这个时候会弹出一个进度条

尝试对我们所有源码文件进行编译和链接

乃至最终得到可以下载的应用程序

那么因为这是一个导入的工程

它没有任何的错误

我们可以看到这个进度条可以顺利的走完

那么一旦它走完之后

所有的提示信息

会在我们这个界面的下方区域

提示区域给出

可以看到我们现在没有任何的error

只有9个warning

那么这个在日后大家可以看一看是什么含义

那么因为没有error我们的编译和build

实际上是成功的

我们下一个步骤来尝试

将这样一个程序下载到我们板子上

那么下载到板子上这个功能

同样在工具链条里是有一个独特的按纽的

也就是我现在所指向的这个绿色甲壳虫按纽

这个按纽它的含义是debug

也就是除虫

那么包含了对于程序的调试

和程序烧写到微控制器的所有功能

那么我们可以点它右边的小箭头向下

可以看到有一个叫Debug configurations

默认情况下我们不需要做这个操作

但是更多的是一个确认工作

然后我们可以发现在这个操作里

我们可以看到我们现在所使用的调试工具

是我们现在所配置的JLINK工具

那么相应的我们可以通过edit这个配置

来修改使用不同的下载和调试工具

如果我们关闭这个窗口直接点小甲壳虫的图标

就进入了程序的下载和烧写流程

那么如果我们要把这个程序下载到我们开发板里

并且开始调试或者让它运行

那么我们就直接点一下这个甲壳虫图标

那么点完这个图标后

我们可以在界面的右下角看到一个进度条

同时会发现整个界面完成了一次比较大的切换

弹出了一个对话框

这个对话框是JLINK调试工具的一个提示信息

我们可以点accept 接受

也可以把左边的勾打上

提示他下次不再提示类似的这种提示框

那么这个时候

我们看到右下角的进度条在进行行走

那么我们程序正在逐渐的通过我们的调试器

烧写到我们的微控制器里

那么现在这个界面里

已经完成了程序的烧写一切就绪

我们会发现我们切换到了一个新的调试界面

我来简单介绍一下这个调试界面

在这个调试界面里

我们中间区域的左边

是我们正在调试程序的C语言代码

中间区域的右边是我们正在调试程序

一条条逐条对应的汇编指令

所以上过第二章节的课的同学可以回忆一下

我们实际上可以做一做头脑体操

看看我们写的C语言对应的汇编是怎样的

然后左上角是我们的调试进程

右上角呢分别有变量的值 断点

任意一个寄存器和内存任意地址的值

可以由我们再通过调试器随意查看

所以我们日后调试的时候

可以通过这个窗口来随意查看

我们微控制器现在任意地址上当前的值

然后我们整个这个调试界面

是这个开发工具的一个tape页

如果我们想切换回刚才的代码页

只要在右上角点C/C++这个位置

就切换回来代码编辑的界面

而如果我们继续去点debug

就会回到刚才的调试页面

那么现在是一个下载就绪的程序

如果想让我们的程序运行起来

那么非常地简单

只用在对话框里头小小的点一下这个播放按纽

或者说是运行按纽

就会发现我们的程序已经运行起来了

这个时候没有提任何的错误信息

这个程序现在是烧写到了微控制器的flash

也就日后断电的时候

这个程序仍然上电能够自动开始运行

除了我们开始运行程序的播放键

那么我们其实旁边还有暂停和最终停止调试

这样两个按纽

所以我们可以通过点红色的方框

停止这一次调试

完成调试工作

回到代码编辑的页面

继续进行代码的编辑和修改

好 大家看到我们的程序呢

在我们的开发板上已经运行起来了

那么这个程序的基本功能

可以帮助我们测试这个板子的

所有的硬件模块的是否运行正常

左边的四个按键我们依次按下

会发现底部的四个灯会依次点亮

在任意一个灯点亮的情况下

如果我们按右边四个按键

我们会发现这个灯的颜色会发生变化

在红蓝绿当中进行切换

那么通过这种方式

我们可以检查这八个按键

和这四个灯是否工作正常

如果我们调整右上方的旋钮

可以听到一个蜂鸣器的音调

发生逐步的变化

从而检查我们的旋钮

和左下方的蜂鸣器工作是否正常

我们的数码管可以看到有六位数字

左边三位和右边三位

分别是转化为三位数的

读取的当前的光线传感器和温度传感器的值

那么有兴趣同学也可以改变他们的测量量

来看看效果

多说一句呢

我们这样一个测试程序

不仅仅测试了板子上的按键和显示

也对板子上传感器的测量

以及串口通讯进行了测试

如果大家使用windows自带超级终端这样一个工具

可以进行串口的连接

来进行数据读写检验这个板子的串口是否正确

超级终端程序在windowsXP里是自带的

如果用的是windowsXP之后的操作系统

也可以从我们网络上直接下载这样一个工具

来进行使用

我们正确的设置串口编号和波特率

就可以与我们板子进行连接

这时候注意USB连接的

应该是板子上的UART的USB口

那么在超级终端里我们应该看到这样的字符串

它分别代表了我们这个板子

所读取到的加速度传感器的三轴的运动值

可以供大家来试一试

智能车制作:嵌入式系统课程列表:

第一章 概览

-1.1 课程概览

--Video

-1.2 进入嵌入式系统的世界

--Video

-1.3 如何学好嵌入式系统

--Video

第二章 绪论

-2.1 计算机的基本概念、发展历史

--Video

-2.2 从晶体管到CPU

--Video

-2.3 概念CPU、微控制器MCU和嵌入式系统

--Video

-2.4 八卦计算机史

--Video

-2.5 不同领域、不同系列的嵌入式系统

--Video

-2.6 ARM历史与MKL25Z128 MCU

--Video

第三章 MCU基础

-3.1 CPU的基本结构和运行机制

--Video

-3.2.1 堆栈的概念

--Video

-3.2.2 堆栈的概念-头脑体操

--Video

-3.3.1 ARM的体系结构

--Video

-3.3.2 ARM的体系结构-头脑体操

--Video

-3.4 中断的概念和机制

--Video

-3.5 中断子程的概念和编程

--Video

-3.6 复位、时钟、存储器和总线

--Video

-3.7 小结:MCU的总体结构和程序运行机制

--Video

第四章 MCU外设与开发

-4.1 第一种外设:IO

--Video

-4.2 IO外设的编程实操-点亮LED

--Video

-4.3 IO外设的进阶知识

--Video

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

--Video

-4.5 嵌入式开发的进阶知识

--Video

-4.6 嵌入式开发中的C语言(上)

--Video

-4.7 嵌入式开发中的C语言(下)

--Video

-E0.1 实验零 开发板的初步认识与工具链的安装

--Video

-E0.2 实验零 体验一个例程的编译与下载

--Video

-E0.3 实验零 编写第一个程序:点亮核心板LED

--Video

-E1 实验一 点灯秘籍

--Video

第五章 MCU与嵌入式系统设计

-5 智能车视角的嵌入式设计

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。