K60平台智能车开发工作随手记

(图片仅为示例,并不一定固定为这种造型)

第十二届全国大学生智能汽车竞赛有一个分项是光电四轮车的竞速(任务A),Seven她们组采购到的配件使用了freescale Crotex-M4内核的CPU,TSL1401 CCD摄像头进行道路识别,从网上搜索了一下,应当是K60平台的的一个变种方案。 这个方案基本平台使用IAR系统开发编译、调试及烧录。IAR其实是一个很昂贵的系统,还好这次真的是纯粹的教学需求,经由《计算机软件保护条例》第十七条的豁免说明,这次用一下破解版。 原厂提供的DEMO程序没有考察所使用的编译版本,但是在网上查找一些资料,IAR6的系统可能是有一些兼容性的小问题,需要补丁,所以干脆下载了当前比较新的8.1版本。软件的破解是需要一些技巧的,建议仔细看一下附带的视频了解操作流程。 还收集了一些相关的资料,包含上面说的IAR共有:

  • IAR8.1安装包、破解包、破解说明视频
  • IAR for ARM系列教程,可以当做手册看,IAR系统十分庞大,短时间不可能全部熟悉,一般只要了解自己常用的功能就好。
  • 附件3-第十二届全国大学生“恩智浦”杯智能汽车竞赛规则.pdf,作为命题作文,这个文档是要烂熟于心的。
  • NEWB_K60_OV7725_ZL_.rar,厂方提供的原始demo代码,对于所有新上手的同学,实际练习都应当从这里开始起步。
  • 【野火】K60中文资料整合版.pdf 这个是比较完整的资料。
  • 野火Kinetics开发板教程:三天入门Cortex-M4.pdf建议从这篇文章开始入门,写的非常浅显易懂。
  • 野火K60开发板资料集锦(飞思卡尔智能车).rar 这是一组资料,有些跟上面是重复的,根据自己的时间情况酌情了解。
  • 智能车PID算法.pdf
  • 智能车总结.doc 这篇跟上篇是智能车的基本理论知识,包括调优的一些公式、算法的基本推演,理论上说应当先看懂这些再下手开发,当然很多天生的实践派就当我没说,不过相信我,早晚你会回到这里。

上述所有资料下载链接:https://pan.baidu.com/s/1nv5QH1R 密码:c6t9

厂商demo程序,IAR编译上手记录

  • 解压到自己的工作目录,不要破坏原有的目录结构。
  • 顶层目录中的fire_Kinetis_demo.eww文件就是总工程文件,双击就可以用IAR打开。
  • 打开后左上角是项目文件列表,首先右键点击工程文件(默认是fire_demo-Debug)字样。在左侧列表中选择Linker,右侧的路径中有原开发者的路径,一般情况下这同你的项目文件是不一致的,点选你项目文件夹下面/iar_config_files/LPLD_BOOT_K60DN512.icf文件。然后OK退出设置。
  • 选择Project菜单中Make,开始编译项目,也可以直接按F7快捷键。
  • 编译过程中会有很多警告信息,这些信息中,有因为版本不同造成的,有原有开发者不重视造成的。一般企业开发的要求是不允许存在这些警告信息,都需要改正。但在学习项目中,根据自己情况来定吧,建议有能力的情况下都要修正。当然经验上说,一般情况下警告信息不影响最终的编译结果。
  • 编译完成后,左上角列表窗口中最下面一行Output之后应当有输出内容,本项目中应当是:fire_gpio_demo.out,右键点击这个文件,菜单中Open Containing Folder可以打开编译结果所在文件夹。其中有3个文件,out文件是编译结果,一般是本地调试及其它一些特殊用途,hex文件是可以烧制到智能车中运行的文件。一般烧制使用J-Link,使用不同的烧制工具操作有不同,需要看具体工具的说明书,IAR平台也支持大多常见的工具,在菜单中有J-link菜单,可以参考。
  • 按照一般开发经验,Project菜单中的Download and Debug也是指的烧录到设备进行调试,手头没有测试环境没有尝试。
  • 左上角项目窗上面,Debug可以点击选择成Release,最终正式发布的版本,应当选择为Release方式然后编译、烧录到设备。

代码粗解

项目文件列表中,刚才说到了Output是指编译的输出结果,从下向上看还有:

  • uCOS-II:这是一个极简的嵌入式操作系统,比常见的Windows/Linux都要小很多,虽然功能弱,但也具备了基本的功能,可以在网上搜索查找更全面资料。
  • LIB:各种库文件,所谓的开发,一般情况下都是基于这些库和操作系统的。
  • Header:对应上面库的c语言头文件,通过这些头文件的描述,开发才能使用上面的库。
  • drivers:驱动程序,理论上说除了cpu之外所有的设备都是需要驱动的,不同设备有不同驱动,一般就归类在这个目录。
  • cpu:实际是uCOS-II跟具体硬件之间的一个接口层,不同的配置,比如FLASH大小、RAM大小、型号不同,这部分及驱动部分都会有响应的设置及内容不同,从而保证系统正常启动、加载必要的驱动比如内存、FLASH的驱动,然后才把控制权交给uCOS-II操作系统。
  • common:其它一些必须的、共用的、也是基础的功能,类似基本的i/o,输入输出、内存测试等,这些既是系统必须的,又严重依赖当前的设备从而无法归类到通用的库、驱动、操作系统中。
  • app:终于切入了正题,这里面是我们真正自己要开发的部分,也就是我们应用的主程序。在其中的main.c则又是我们程序的入口。

拉普兰德开源Kinetis固件库使用

拉普兰德开源Kinetis固件库地址:https://github.com/LPLDTeam/LPLD_OSKinetis 项目README.md已经有比较清楚的说明,所有的演示代码及自己的项目,应当放在project中,github上project中还提供了一个windows可执行的exe文件来帮助用户建立基于拉普兰德开源库的项目,自动生成可供iar系统使用的工程文件。 前面介绍的fire_Kinetis_demo.eww这个工程,实际是用官方库+野火K60开发库所建立的工程,和这里介绍的拉普兰德开源库,实际相当于我们企业及应用中所说的软件框架。目前看,官方的标准库肯定是兼容性最好的,其它框架中都可以使用官方库的功能。但官方库也只提供了最基本的功能,已经很少看到有人在官方库的基础上从头开发。而其它的框架之间目前看几乎没有办法直接互相调用,选择一个,基本代表放弃另外一个。所以选择一个适合自己的开发库框架开始来建立自己的项目就比较重要。当然接手一个别人的项目,往往大多只能延续原有的框架。 从网上的评价看,拉普兰德开源项目的完整性比较好,上手容易。而野火库有写的很完善的文档,似乎更适合新手。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

防火墙开通的自动化尝试和感悟

对于一个从零到一的系统或者平台,你会有几十次几百次的调试,为的是能让系统/平台真正跑起来,用起来。我想这背后需要的坚持真是百般煎熬,一方面希望能够像建造...

1061
来自专栏北京马哥教育

给新手的最佳类Windows界面的Linux发行版

糖豆贴心提醒,本文阅读时间5分钟 halo艾瑞巴蒂~最近有新童鞋向小编诉苦,刚刚从熟悉的Windows系统来到陌生的Linux世界里,看到辣么多基于Linux...

3145
来自专栏FreeBuf

BlackHat 2018 | 55款大会软件工具盘点

汇聚了全球信息安全业界精英的年度盛事”Black Hat”上周在美国拉斯维加斯落下帷幕,大佬们也带来了很多有趣的软件工具,其中有一些托管在GitHub上开放下载...

1292
来自专栏北京马哥教育

Python Web 框架大乱斗:哪个框架适合你?

今天,有非常多的Python框架,用来帮助你更轻松的创建web应用。这些框架把相应的模块组织起来,使得构建应用的时候可以更快捷,也不用去关注一些细节(例如so...

3186
来自专栏Linyb极客之路

聊聊微服务架构及分布式解决方案

事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性:

793
来自专栏LEo的网络日志

分享一些好用的软件

3299
来自专栏james大数据架构

NET开发学习项目资源(2)

NET开发学习项目资源 击标题链接即可下载。 目录: 1.征婚交友网站    前台交友信息和后台会员管理两大部分组成。    前台功能模块    该模块主要包括...

2195
来自专栏SAP最佳业务实践

SAP最佳业务实践:ETO–项目装配(240)-12分析项目当前状态

CN41N分析项目当前状态 image.png 在这个步骤中对项目的当前状态进行分析。你可以使用一个合适的报表分析预算、计划和实际成本、日期以及收入。 角色...

3404
来自专栏黑白安全

社会工程学之钓鱼攻击

钓鱼攻击是社会工程学攻击的一种方式。钓鱼攻击使用电子邮件或者恶意网站诱骗人们提供个人信息(通常是金融信息)。

933
来自专栏FreeBuf

如何写好一篇漏洞报告(国外篇)

如何写好一篇漏洞总结报告,这一直都是一些应用开发公司经常忽略的重要事情,一篇好的漏洞总结报告可以有效帮助开发人员,减少寻找和解决漏洞的时间。 接下来我就开始讲述...

3817

扫码关注云+社区