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开发库所建立的工程,和这里介绍的拉普兰德开源库,实际相当于我们企业及应用中所说的软件框架。目前看,官方的标准库肯定是兼容性最好的,其它框架中都可以使用官方库的功能。但官方库也只提供了最基本的功能,已经很少看到有人在官方库的基础上从头开发。而其它的框架之间目前看几乎没有办法直接互相调用,选择一个,基本代表放弃另外一个。所以选择一个适合自己的开发库框架开始来建立自己的项目就比较重要。当然接手一个别人的项目,往往大多只能延续原有的框架。
从网上的评价看,拉普兰德开源项目的完整性比较好,上手容易。而野火库有写的很完善的文档,似乎更适合新手。
K60平台智能车开发工作随手记的更多相关文章
- Hyperledger Fabric 智能合约开发及 fabric-sdk-go/fabric-gateway 使用示例
前言 在上个实验 Hyperledger Fabric 多组织多排序节点部署在多个主机上 中,我们已经实现了多组织多排序节点部署在多个主机上,但到目前为止,我们所有的实验都只是研究了联盟链的网络配置方 ...
- 智能车学习(十五)——K60野火2013版例程
一.中断函数注册方法: 1.格式: 配置某个功能的中断 注册中断函数 开启中断 2.一个例子 pit_init_ms(PIT0,);//定时中断初始化 set_vector_handler(PIT0_ ...
- 智能合约开发solidity编程语言开发一个以太坊应用区块链投票实例
智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力.智能合约其实是"执行合 ...
- 【树莓派+.NET MF打造视频监控智能车】控制篇(树莓派)
对已经具备一定Linux基础的人来说,树莓派学习起来应该非常简单自然.在他们眼中,树莓派就是一个简易版的,卡通版的Linux而已.但是对我这样一个早已习惯微软技术生态系统的人或者初学者来说,要实现一个 ...
- 区块链入门到实战(27)之以太坊(Ethereum) – 智能合约开发
智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethe ...
- Outfit7 庆祝其开发工作大获丰收
走不寻常路之经验总结 每位合格应用开发人员都拥有相同的目标:灵机一动,构建独创性原型,克服各种困难,最终吸引投资者将其想法推向市场. 名声.财富以及构建更多应用的机会将接踵而至. 焦虑.改善和重复是开 ...
- fir.im Weekly - 聊聊让人向往的远程开发工作
6月30 日,苹果开发者后台贴出一封关于广电总局的醒目通知,申报一个游戏 APP 上架AppStore,你需要文网文+ICP证+软著+版号,审批难度将越来越大,不禁让人感慨中国独立开发者的成长 &qu ...
- 云平台编程与开发(七)-使用X5Cloud云平台开发网络彩讯
云平台编程与开发(七)-使用X5Cloud云平台开发网络彩讯 博客分类: 云平台 云计算 Java Android Android 云平台 Java 网络彩讯定义以及工作大概流程 下载试用地址:ap ...
- 智能合约开发环境搭建及Hello World合约
如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约 ...
随机推荐
- codeforces contest1082
C 维护前缀和 题意 每一个id给一个权值序列,从每个id选出数量相同的权值,对他们进行求和,使得他们的和最大 题解 注意负数对结果没有贡献,直接跳过. 当时写的比较挫,连排序都写错了!cf的编译器比 ...
- PMP测试实践- 内附PMBOK中字与备考资料
最近笔者考了PMP(Project Management Professional )项目管理专业人士认证考试,主要为了系统学习下项目管理的整个过程与方法,结合PMP的理论与工作实践去更好的完成项目工 ...
- 转载 CSDN 谈谈我对证券公司一些部门的理解(前、中、后台)
谈谈我对证券公司一些部门的理解(前.中.后台) 2018年02月08日 15:11:07 unirong 阅读数:2165 文中对各大部门的分析都是从作者多年经历总结出来的有感之谈,尤其是前台的6 ...
- 05解决flask循环引用的问题
1, 什么是循环引用问题?为什么会导致循环引用? 1.1先讲是什么? 主文件中class类过多会导致主文件冗余,如下图,所以我们单独给class类一个文件,然后再引用它. 1.2再讲为什么? 主文件为 ...
- Exp4 恶意代码分析 20164302 王一帆
1.实践目标 1.1监控自己系统的运行状态,看有没有可疑的程序在运行. 1.2分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systra ...
- user-agent | what is the "user-agent" ?
User Agent(用户代理) UA是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等 通过抓包可以得到 下面是几个 ...
- NOIP2012提高组day2 T2借教室
这题骗分可以骗到满分(可能是数据不太强给强行过去了) 这道题如果是按照题意去模拟用循环去修改区间的话只有45分,正解是二分+差分数组,骗分也是差分数组但是没有使用二分,时间复杂度在最坏的情况下是O(n ...
- Largest Rectangle in a Histogram [POJ2559] [单调栈]
题意一个围挡由n个宽度为1的长方形挡板下端对齐后得到,每个长方形挡板的高度为hi.我们把其抽象成一个图形,问这个图形中包含的面积最大的长方形是多大? 输入多行数据,每行第一个为n,后面n个数,代表hi ...
- ES6学习
一.ES6的特点 1.let(变量),const(常量) 2.在ES6中不能重复定义 3.块级作用域 普通作用域 if(true){ var test =1; } console.log(test); ...
- codeforces_Codeforces Round #541 (Div. 2)_abc
A. Sea Battle time limit per test 1 second memory limit per test 256 megabytes input standard input ...