完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用LiteFwLib原创固件库从零开始建工程 ——基于Keil5和FRDM-KL25板 suyong_yq@126.com 2015年1月 前文提要: 将FRDM-KL25的OpenSDA变身JLink 前文为大家带来了LiteFwLib固件库,可用于快速开始FRDM-KL25开发板的应用开发。在LiteFwLib固件库的开发包中,包含了一些example样例工程,让大家能够简单了解一下固件库里的驱动是怎么用的。然而,对于实际的应用来讲,工程师总会创建自己的应用工程。最快速创建工程的方法就是——“改”,根据实际应用的需要,找一个功能最接近的样例工程作为基础进行修改(别忘记备份原工程呦),这样最安全,而且见效快,省掉同编写程序不相干的步骤。然而,对于刚接触单片机开发的人来说,了解从零开始创建工程的全部过程是非常有必要的,知道如何配置工程和组织代码,才能随心所欲地于扩展程序的规模。 这里,我就跟大家描述一下基于Keil集成开发环境从零开始创建一个适用于FRDM-KL25板的工程。我们的起点是保证电脑上已经安装好了工具软件: • 安装好Keil5的主程序及支持KL25芯片的插件包 • 安装好JLink的驱动程序(或者OpenSDA的驱动程序) • 电脑上有一个串口终端软件,Putty或者Tera Term之类的软件,Windows自带的“超级终端”程序也可以,但是我不会用,呵呵。 我们的终点是让串口终端输出欢迎信息,然后回显在串口终端输入的任何字符。 需要预先准备的一些文件: • CMSIS标准头文件 • 启动文件和典型的时钟配置文件 • 驱动固件库(可选) 实际上这些文件都可以用现成的,不用我们自己编写,变化最大的就是固件库,可是我也帮大家写好啦。至于链接命名文件和flash映像文件啥的先不去管它们,用Keil默认的就OK。但若是深度定制的应用,以后就需要手动更改了。不过即使需要手动改,变化也不大,框子都是一样的。那这些文件从哪里可以找到呢? Keil软件真是一个藏宝箱,不仅提供了开发单片机所需要的所有工具,也为大家提供了创建基本工程所需要的全部文件。在Keil的安装目录下,就可以找到我们需要的大部分文件。 现在切换到目录“C:Keil_v5ARMPackARMCMSIS4.2.0CMSISInclude”,这里假设你的Keil安装在C盘的根目录。 ![]() 图1 对于内核为ARM Cortex-M0+的KL25芯片来说,我们需要的只是其中的core_m0plus.h、core_cmFunc.h和core_cmInstr.h,这些头文件中包含了对ARM Cortex-M0+处理器内核中寄存器的定义及操作的函数。在LiteFwLib固件库中,这些文件已经被复制到“fsl_frdm_kl25include”目录下啦。 切换到目录“C:Keil_v5ARMPackKeilKinetis_KLxx_DFP1.4.0DeviceInclude”,这里可以找到KL25芯片的头文件及CMSIS规范的系统启动头文件。 ![]() 图2 我们需要的是其中的MKL25Z4.h和system_MKL25Z4.h。这两个文件也已经被复制到LiteFwLib固件库的“fsl_frdm_kl25board”目录下啦。 再切换目录“C:Keil_v5ARMPackKeilKinetis_KLxx_DFP1.4.0DeviceSource”下,找到system_MKL25Z4.c文件和“ARM”子目录下的system_MKL25Z4.s文件,它们分别是启动系统时钟配置文件及适用于ARM编译器的启动汇编文件。同样,这两个文件也已经被复制到LiteFwLib固件库的“fsl_frdm_kl25board”目录下啦。 固件库软件使用LiteFwLib中的代码就好了,位于“fsl_frdm_kl25driver”目录下。 为了说明问题,这里我暂时不使用LiteFwLib中的“二段编译”,而是创建全部由源码文件构成的工程。 在“fsl_frdm_kl25example”目录下新建一个“MyFirstProject”的目录,再创建“build”和“application”两个子目录,分别存放我们新建的工程文件和本工程的应用程序源文件。为了节约大家从头开始敲代码的时间,我们直接从01_uart_hello工程中复制“application”目录下的源代码到新建工程的“application”中。这里的文件组织是按照LiteFwLib的统一风格设计的,大家也可以按照自己喜欢的目录结构进行组织。 启动Keil软件,创建一个空的工程。工程文件就存放在我们刚刚新建的“fsl_frdm_kl25exampleMyFirstProjectbuild”目录下。 ![]() 图3 在芯片类型选择对话框中选择“MKL25Z128xxx4”。这个是FRMD-KL25板子上的主控MCU。 ![]() 图4 后面出现的那个“Manage Run-Time Environment”的对话框,我也没用过,“确定”、“取消”或是右上角的小叉叉,随便戳一下把它赶跑就好。然后就是空白的工程。 ![]() 图5 用鼠标左键戳一下“Target 1”选中后按键盘上的“F2”键,开始改名字为“MyFirstProject”。然后在刚改好的工程名字上面用鼠标右键戳一下,在弹出菜单中选中“Manage Project Items ...”,出现“Manage Project Items”对话框,一眼就可以看出这是要在工程中创建目录和添加文件了。此处省略若干字,添加好工程后的工程组织结构如下: ![]() 图6 这个时候编译肯定是不行的,会报错说是找不到某些文件。我们还需要配置一下头文件的搜索路径。用鼠标左键戳一下工具栏上的魔法棒(见上图红圈),就弹出一个工程选项的对话框,这个对话框我们在配置工程时会经常用到。 在“Target”标签页下,选中“Use MicroLib”,这是因为我们要使用Keil自带的标准输入输出组件stdio实现串口打印,用了这个,就可以在程序中使用printf和scanf啦,这么好的工具,LiteFwLib怎么能错过呢。 ![]() 图7 在”Output”标签页中,设定生成的obj文件存放在工程目录“build”中新建的子目录“output”下,把这些细碎的文件都整理到这个目录下,工程目录里会干净不少。当然,最后生成的可执行文件也在这里。“Creat HEX File”的功能我就不多说的,大家根据需要选择。 ![]() 图8 同样在“Listing”标签页下,设定生成的lst文件也存放在“output”目录下。 “C/C++”标签页下才是重点,在这里添加头文件的搜索路径。 ![]() 图9 Keil对路径管理还是相当智能的,在选择路径时,会自动将选中的绝对路径转换成相对路径,这样整个开发包就可以不依赖在电脑中的存放位置了。这里需要加的目录主要有本工程的“application”目录及LiteFwLib开发包提供的“include”、“driver”和“board”目录。 最后一步需要做的配置就是关于调试工具的。切换到“Debug”标签页下,选择使用JLink(这里已经将OpenSDA变身为JLink了,参见坛子里我的另一篇帖子),或者使用OpenSDA也是类似的。 ![]() 图10 到此为止,第一个工程就创建好啦。我们可以试着编译一下这个工程。 ![]() 图11 OK,无错无警告,Bingo! 确保把FRDM-KL25板子连接到电脑上,就可以下载运行了。 ![]() 图12 A oHo,可能会提示下载失败,这是因为刚接上的JLink可能默认识别使用“JTag”调试协议,我们需要把它改为“SWD”协议,OpenSDA变身的Jlink使用串行的调试通信协议,更轻量级。在工程选项对话框中,“Debug”标签页下,我们刚才选择使用JLink的那个下拉菜单右边,有个“Settings”的按钮,戳它一下。 若是在使用JTag协议的情况下,是识别不出来与之对接的目标设备的。切换到“SW”,立马就有内核识别出来了。 ![]() 图13 使用OpenSDA变身的JLink,在每天第一次启动时都会出现一个提示对话框,“Accept”就OK。 ![]() 图14 最后,显示下载成功。 ![]() 图15 此时,打开串口终端软件,设定串口通信波特率为115200,8位有效数据,无校验,1位停止位。 ![]() 图16 然后幸福地戳一下FRDM-KL25板子上的复位按键,见证奇迹的时刻到啦。
评分
|
||
相关推荐
|
||
对初学者来说是福音
|
|
|
|
|
|
|
|
|
|
|
|
谢谢楼主分享,还是下个pdf但比较舒服
|
|
|
|
|
|
不行就用文件搜索功能在mdk的安装根目录下找一下,mdk 4.x安装的时候都会自动把芯片支持的相关文件复制到电脑上的,如果是mdk 5.x 需要安装pack支持包才有芯片支持文件。 |
|
|
|
|
|
对于初次接触KEIL和FRDM非常具有学习意义,多谢贡献!
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1856个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36153 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4256 浏览 0 评论
5871 浏览 1 评论
6629 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4075 浏览 0 评论
512浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
495浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
491浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
574浏览 2评论
619浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-11 10:49 , Processed in 2.809186 second(s), Total 116, Slave 95 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191