找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11453|回复: 0
收起左侧

k60程序J-link烧写和IAR使用指南

[复制链接]
ID:374198 发表于 2018-7-18 17:09 | 显示全部楼层 |阅读模式
程序烧写和程序使用指南

1程序烧写指南
1.1前言

程序烧写指南旨在介绍:使用 IAR Embedded Workbench 打开工程项目, 以及使用 J-link 烧写器将可执行代码烧写到 K60 中。

1.2打开工作空间

1.2.1  eww简介


Figure 1: workspace

eww 是 Embedded Workbench Workspace 的英文缩写。例如,SmartCar.eww 就是一个工作空间,工作空间基本等同于一个项目,在 SmartCar.eww 中包含 了与本次比赛有关的头文件和源文件。使用工作空间能方便我们管理这些数目 庞大的文件,如图1。




Figure 2: 打开文件 1





Figure 3: 打开文件 2



1.2.2  打开 eww文件

打开 IAR,点击左上角 file » Open Workspace, 如图2所示,弹出文件选择对 话框,选择自己的 SmartCar 解压路径,向下找到.../project/SmartCar/iar/Smartcar.eww,选中后打开,如图3所示。


1.3使用 J-link 烧写程序

1.3.1  J-linkJTAG




Figure 4: LQ-miniLINK

图4为本次比赛提供的仿真器。JTAG(JointTestActionGroup,联合测试行 动组) 是一种国际标准测试协议 (IEEE1149.1 兼容)。K60 的处理器是 ARM-CortexM4,调试 ARM,就要遵循 ARM 的调试接口协议,JTAG 就是其中的一 种。

J-Link 是 SEGGER 公司为支持仿真 ARM 内核芯片推出的 JTAG 仿真器。 J-link 直接接收来自调试命令,进行 RDI->JTAG 协议的转换,然后与 K60 通信,这样烧写和调试速度都要快些。






Figure 5: 对              Figure 6: 错

1.3.2  连接至单片机 使用时一定要注意:连接方向。图5是正确的连接方向,图6是正确的连接

方向。如果连接方向反了,不但烧写不了程序,还有可能损坏单片机、烧写器
甚至电脑。



1.3.3  设置 eww属性


Figure 7: 设置属性


打开 eww 文件,如图7,单击选中 SmartCar..., 右键,选择 option, 弹出

options 对话框。单击 Debugger,在 Setup 下的 Driver 选择 J-Link/J-Trace, 右下角 ok 确定,如图8所示。默认情况下,SmartCar.eww 已经将这些设置好了,不需要另外设置。保险起见,可以检测以下。






Figure 8: options1



1.3.4  烧写

Figure 9: 烧写



将 k60 通过 mini link 连接到电脑 USB,并且设置好属性后,只需要点击

工具栏的 Download and Debug 按钮,程序就将自动烧写到 k60 中,如图9所 示。烧写完成后,弹出界面如图10所示。






Figure 10: 烧写完成


这里的程序烧写是以官方程序为例。提供给选手们的官方程序没有错误, 所以可以正常烧写;当选手自己的程序按相同的方法进行烧写后,如果存在错 误,烧写过程会中断,并会出现错误信息,需要修改错误才能烧写成功。

关于如何鉴别错误信息,或是烧写成功后如何控制程序执行情况,请选手 们阅读文档《5-3 硬件系统调试方法》的第二部分“软件 BUG”。



2程序使用指南

2.1前言

这一部分的内容不光要告诉大家如何使用、管理、修改官方代码,同时要 让大家了解如何去完成一个较大的 C 语言工程。


2.2什么是工程?

工程是一个总体的概念,在 C 语言中,如果要开发一个完整的系统,就必 须要建工程,因为完整的系统包括各种各样的文件和界面设计,单单一个文件





是开发不出大型的系统的。比如这次智能车大赛的官方代码中,就有大量的.h

和.c 文件,同时还有一个用来表示引脚使用的 txt 文件,它们都在这个工程的 目录下。

大家如果仔细查看工程目录下的文件,会发现只有一部分文件是你写的, 还有很大一部分文件并不知道有什么用。这些文件就是由编译器生成的,不同 的编译器有着不同的规则,包括软件运行所必须配置文件、编译运行后生成的 二进制文件和可执行文件等等。

现在回过头来理解我们常说的新建工程和新建文件:新建工程是建立一个 完整的工程目录,里面包含很多资源(文件,图片等等。文件包含.c,.h 还有编 译后的二进制文件),至于新建文件就是在在工程下面建立单独文件可以是.c 或 者.h 文件等等。

而编译器的作用一是方便管理、打开、修改、添加这些工程里的文件,二 是用这些工程里的文件编译出最终需要的东西(VS、code blocks 就可以生成可 执行性文件.exe, 而 IAR 等集成开发环境就可以将代码编译下载到单片机中)。


2.3如何写一个较大的工程

硬件系统设计除了硬件部分的画板子、焊接,软件部分也是一个很困难的 部分。为了实现既定的功能,我们不得不写一大堆代码。代码怎么写是个人的 自由,你要是把所有的代码写在一个文件里也可以,但是要老师愿意看那是不 存在的。如何写一个可读性强的代码呢?我在这里给出一个方案。


2.3.1  建立一个新工程

无论是 IAR,还是其他的什么集成开发环境,它们在新建工程的时候都会 给你做好一个模板。所谓模板,就是一个没有什么实际功能但是可以编译运行 的程序。比如 IAR 就会生成一个只有一个 main.c 文件的模板。



2.3.2  扩充我们的工程

有了这个模板之后,我们就像有了一个空房子,我们现在还需要给它添加 代码和文件,装修它。

众所周知,在 C 语言当中,main 函数, 又称主函数, 是程序执行的起点。我 们将程序烧写到单片机中,单片机也会从 main.c(在官方代码中,我们把它改名 为 SmartCar.c 了,就是项目中含有 main 函数的 c 程序文件) 开始执行,一条 接一条语句。

但是需要注意的是,我们希望单片机上电以后一直工作下去,永不停止,所 以 main 函数中必须有一个死循环 while(1),否则就会报错。

保证 main.c 文件的简洁可以有效提高代码的可读性:我们可以把各个需要 实现的功能封装成函数,然后必要时在 main 函数中调用,这样读起代码来就 会很直观;只需要执行一次的代码写在死循环外,需要不断执行的代码写在死 循环内。

功能函数的代码建议大家按模块分类,比如电机部分的代码就写在 motor.h 和 motor.c 两个文件中。其中,.h 文件存放外部函数声明,.c 文件中对应就是 这些已经声明的函数的具体实现。如果需要使用这个模块中的功能函数,添上 一句 #include ”motor.h” 就可以了。

这里有几个注意事项非常重要:第一个就是为了让头文件不重复包含、编 译不报错,我们需要在头文件中添加预编译指令(在《5-3 硬件调试方法》的编 译 BUG 部分中有具体介绍);第二个就是.h 和.c 中的函数名、函数返回类型必 须一一对应,否则就会报错。

如果有一个变量所有的程序文件都要使用怎么办?这时候我们就要把它定 义为全局变量,比如”extern  int i;”,声明后需要在主函数中对它进行初始化才 能使用,比如”int i=0;”。另外,用好  #define 可以增强代码的可移植性,也更 容易阅读。


2.4如何使用官方代码

官方代码已经将所有可能用到的基本功能帮大家实现好了,大家只要阅 读对应的文档,学会如何调用即可。主要需要修改的文件为 SmartCar.c 中的main 函数,以及部分中断回调函数。

当然,把所有的策略代码都堆放在 main 函数里是非常不被推荐的做法,可 读性和可维护性极差,建议大家建立添加几个自己的程序文件用于存放封装好 的比赛策略。

点击 IAR 左上角的 File-New File,然后就会发现一个名字为 Untitled1 的 文件出现在栏目上,点击右键-Save Untitled1,就会弹出一个窗口,我们把它保 存为“strategy.h”,就会得到一个在 app 文件夹下的.h 文件;同理再创建一个 新文件,保存为 strategy.c,就会得到一个在 app 文件夹下的.c 文件。

这是我们发现左侧的工程列表中并没有这个两个文件,那是因为它们没有 被添加进工程中,右键点击 app-add-add files,把那两个文件添加进来就好啦。 仿照其他模块.c 和.h 文件的格式(千万注意别漏了预编译指令),完成自己 的代码吧。然后在 SmartCar.c 中添加一句 #include ”strategy.h” 就可以使用

这两个文件中的函数了。


完整的pdf格式文档51黑下载地址:
4-2 程序烧写指南和程序使用指南.pdf (818.73 KB, 下载次数: 47)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表