在MicroBlaze上跑FreeRTOS V8
来源:互联网 发布:纯粮固态发酵白酒知乎 编辑:程序博客网 时间:2024/06/02 14:31
FreeRTOS已经听说过很久了,但一直也没有时间去玩,终于在最近项目上玩了一次。之前有玩过uCOS II,以及在本科毕业论文时自己为Cortex-M3弄了个“XOS”。本来之前的XOS要移植到MicroBlaze上应该不难,可是毕竟自己搞的小玩意,用在公司产品上可不行。第一功能上不够全,没有这么多事件机制,第二不通用,市面上这些开源的都搞得非常全,都直接支持几十种处理器。而且经过这几年的工作发现,有些东西不一定要自己搞,产品和功能实现是两个概念,太多时间都在“磨”设计,而市场要的是快速把功能转为产品。
废话半天,拿着板子,就如一堆破铜烂铁,就算芯片再贵,就算板子设计再好也只是一堆能上电的破铜烂铁。只有搞点代码才能让这堆破铜烂铁发挥出一点作用。首先我们得在Xilinx Platform Studio里建立一个可以运行FreeRTOS的MicroBlaze系统,我的ISE版本为14.7。这个系统里主要包括MicroBlaze,RAM,Timer,Interrupt,Clock,Reset,当然还有方便调试的UART。为什么要有Timer呢?应该这些嵌入式OS里需要有一个周期性的Tick,用于系统调度和计时。搭好MicroBlaze系统之后我们就可以综合编译导出到Xilinx SDK,开始我们的软件工作。
到了SDK环境,我们得先下个FreeRTOS,然后解压出里面的东西。我下的文件是FreeRTOSv8.0.1.exe,运行解压之后进入FreeRTOS\Demo\MicroBlaze_Spartan-6_EthernetLite\SDKProjects\RTOSDemo\目录,我们以这个作为参考起点。其实在Demo下还有一个MicroBlaze目录,这个是老版本的,而MicroBlaze_Spartan-6_EthernetLite相对来说比较新。至少其中的MicroBlaze IP的版本和最新的差得不大,都是8.xx,这样基本可以确定处理器的指令没特别大的变化,尤其是进程切换的那些context switch不会出错。运行批处理文件CreateProjectDirectoryStructure.bat,在目录下就会生成FreeRTOS_Source目录,这里面就是我们想要的已经为MicroBlaze移植好的FreeRTOS代码。把它拷贝到自己前面XPS导出的SDK工程里,然后开始写我们的main.c。
在写main.c的时候,我们需要参考目录里的main-blinky.c和FreeRTOSConfig.h。main-blinky.c有头文件包含,有Timer的初始化,有FreeRTOS所需要的Hook函数实现,也创建简单FreeRTOS任务的参考。而FreeRTOSConfig.h文件则是FreeRTOS的配置文件。弄清楚这两个文件之后就可以玩起来了。另外需要注意的就是FreeRTOS的内存管理方式。在FreeRTOS\Demo\MicroBlaze_Spartan-6_EthernetLite\SDKProjects\RTOSDemo\FreeRTOS_Source\portable\MemMang里用了heap_3.c,其实还有另外3种方式。heap_3.c里使用的是C库的malloc和free来实现内存管理的,所以需要设置SDK工程的heap大小,以避免创建任务时申请不到内存的情况。
基本上就这个流程,但还是要花点时间去看看FreeRTOS的文章,希望对后来人有所帮助。
- 在MicroBlaze上跑FreeRTOS V8
- 在keil4中将FreeRTOS V8.2.3移植到STM32F103RCT6 cortex-M3平台上
- 在keil4中将FreeRTOS V8.2.3移植到STM32F103RCT6 cortex-M3平台上
- FreeRTOS在STM32F4上移植
- freeRTOS 在arm926ejs上的移植
- FreeRTOS在STM32上移植--详尽篇
- freertos 在arm926-ejs上的移植
- FreeRtos在RH850 D1L芯片上移植
- 2017.11.16 在freertos 上PCF8563驱动程序
- 在Windows上编译V8 javascript引擎
- 将STemWin移植到在STM32F103RCT6上的FreeRTOS上
- arduino上跑freertos 运行多任务
- FreeRTOS系列第5篇---FreeRTOS在Cortex-M3上的移植
- FreeRTOS学习及移植笔记之二:在IAR和STM32F103VET上移植FreeRTOS
- FreeRTOS系列第5篇---FreeRTOS在Cortex-M3上的移植
- FreeRTOS(V8.0.1)系统之xTaskGenericCreate()
- FreeRTOS(V8.0.1)系统之vTaskDelete()
- FreeRTOS(V8.0.1)系统之List
- 实现给windows phone 水印TextBox
- php 表插入数据
- 一,入门基础—— 4,IOS模拟器的使用 截图
- C#学习有感(Lambda表达式)
- 黑马程序员.Android攻城狮.JAVA基础.1.2.基础语法
- 在MicroBlaze上跑FreeRTOS V8
- Spring中的事务传播行为
- Java语言基础特性—第一部分(上)
- SQL Server text field里面有换行符的时候copy到excel数据会散乱
- C#(2)
- 对JAVA的反思和警惕
- Ios设备介绍,android资源文件和区分手机和平板的标准,按钮的状态
- 设计模式——策略模式
- SVN服务器搭建和SVN客户端安装及其…