小猿送你freeRTOS移植详细笔记

本篇笔记主要介绍如何移植freeRTOS嵌入式实时操作系统到恩智浦kinetis k64系列MCU上,以NXP的塔式系统TWR-MK64F为硬件平台,移植freeRTOS v9.0.0源码包,实现按键点灯,LED 闪烁,web server等功能,以IAR7.4版本为开发环境,移植前,要求熟悉freeRTOS源码目录结构。

1、准备工作

  • 官网下载freeRTOS源码包V9.0.0 解压到本地电脑上
  • 装有IAR的电脑
  • 塔式系统平台TWR-K64F120M

之前曾多次提到过,移植一个源码包,必须熟悉他的源码目录结构,所以本次移植前,假设你已经熟悉freeRTOS源码目录结构,如果不熟悉,请自行学习。我们以源码包里的在k60上的例程为基础来移植到k64上。

2、工程搭建

复制freeRTOS的demo目录文件夹下CORTEX_Kinetis_K60_Tower_IAR文件夹所有内容。并将复制的CORTEX_Kinetis_K60_Tower_IAR文件夹改名为CORTEX_Kinetis_K64_Tower_IAR,并将k60_tower.h改为k64_tower.h,修改k64_tower.h文件.

因为K64塔式系统用的是UART1做调试输出口,所以修改为UART1

3、头文件修改

因为k64和k60的头文件不一样,所以必须修改common.h文件,首先包含刚刚我们修改的文件k64_tower.h文件,在包含k64的头文件,

完后需要修改工程配置,修改芯片,和编译选项等的配置,还需注意链接文件,修改链接文件,因为k60的例程用的是512Kflash的配置文件,我们移植的K64可以使用K60的配置文件,这个可以不用改,但这一点需要注意,如果是移植到其他不同的芯片或者同一厂家相差很大的芯片要注意链接配置文件相对应。

4、底层代码修改

修改pll_init函数,这个函数位于mcg.c 文件。

因为k60和k64的时钟配置上,有的寄存器是不一样的,这个要对照数据手册修改,还需修改初始化函数,和freeRTOS的配置文件

5、应用程序修改

根据硬件平台,修改应用程序对应的硬件管脚配置,这部分的修改根据自己的需要和板子硬件原理图修改相应管脚配置,中断函数,中断向量号,中断函数声明等。

4、代码修改

还有其他对应管脚映射修改等,这里不在赘述。

6、编译测试

编译修改完的移植工程

将编译好的工程输出文件下载到板子上运行,可观察到,按动SW1按键,LED会闪亮,证明中断,led等功能正常。同时可以打开浏览器,输入TWR-K64的IP地址http://192.168.0.200进行web server的测试。

可以点击不同的标签进行测试,可以看到web server也可以正常工作。至此可以得出在k64上的移植成功。

7、移植总结

经过此移植过程,可以证明我们的工程已经成功从K60移植到了K64MCU上,同理可以移植其他功能,如可以添加移植Modbus通信,CAN通信,ADC等功能,完善工程,添加更多的应用程序模块,可以应用于实际开发。

原文发布于微信公众号 - 嵌入式程序猿(InterruptISR)

原文发表时间:2017-03-16

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java学习网

提升效率的Linux终端快捷操作汇总

提升效率的Linux终端快捷操作汇总 很多普通 Linux 桌面用户都对使用终端感到排斥和恐惧,其实它没大家想的那么复杂,很多常见操作都可以直接在终端中进行,如...

33970
来自专栏马涛涛的专栏

使用leancloud给简历加数据库,实现留言功能

数据必须存在服务器上,这样任何设备访问服务器都可以得到数据,如果存在客户端的本地,那么其他客户端设备无法读取到.所以数据必须存储在服务器的数据库上

23550
来自专栏Linyb极客之路

使用Jmeter进行http接口性能测试

在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。

34460
来自专栏古时的风筝

用python实现的百度音乐下载器-python-pyqt-改进版

之前写过一个用python实现的百度新歌榜、热歌榜下载器的博文,实现了百度新歌、热门歌曲的爬取与下载。但那个采用的是单线程,网络状况一般的情况下,扫描前100首...

31980
来自专栏云计算教程系列

如何在CentOS 7上添加Swap

使服务器响应更快,并防止应用程序中出现内存不足错误的最简单方法之一是添加一些swap空间。Swap是存储驱动器上的一个区域,操作系统可以在该区域临时存储无法再保...

20220
来自专栏沃趣科技

ASM 翻译系列第二弹:ASM 12C 版本新特性

原作者:Bane Radulovic 译者: 邱大龙 审核: 魏兴华 随着Oracle 12c的发布,也就意味着全新版本的ASM面世了。已知的重大新...

37840
来自专栏枕边书

用Lua定制Redis命令

前言 Redis作为一个非常成功的数据库,提供了非常丰富的数据类型和命令,使用这些,我们可以轻易而高效地完成很多缓存操作,可是总有一些比较特殊的问题或需求需要解...

51570
来自专栏技术博文

linux下添加定时任务

linux下定时执行任务的方法  在LINUX中你应该先输入crontab -e,然后就会有个vi编辑界面,再输入0 3 * * 1 /clearigame2内...

40670

Apache ZooKeeper vs. etcd3

在实现分布式服务协调方案时,有许多出色的系统,如 Apache ZooKeeper,etcd,consul 和 Hazelcast。如果您还没有听说过分布式协调...

69720
来自专栏网络

Nginx 系列实用教程#2:性能

协作翻译 原文:Nginx Tutorial #2: Performance 链接:https://www.netguru.co/codestories/ngi...

24060

扫码关注云+社区

领取腾讯云代金券