<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[MrJang_的专栏]]></title><description><![CDATA[Programming on the fly]]></description><link>https://blog.youkuaiyun.com/MrJang_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MrJang_]]></copyright><item><title><![CDATA[uCOS-II移植（Freescale  MPC5644A）]]></title><link>https://blog.youkuaiyun.com/MrJang_/article/details/43793403</link><guid>https://blog.youkuaiyun.com/MrJang_/article/details/43793403</guid><author>MrJang_</author><pubDate>Fri, 13 Feb 2015 13:25:19 +0800</pubDate><description><![CDATA[uCOS-II移植（Freescale  MPC5644A）
1、从官网上下载源码：点击打开链接
如果官网上有对应芯片移植好的源码，那么拿过来略微改动就可以用。



32位的MPC5644A支持两种汇编指令集--BookE（32位）和VLE（可变指令集，32位&16位），所以在新建工程或者导入工程时要统一选择其中的一种。



下载解压后会有这么一个文件夹,内部文件结构如下：]]></description><category></category></item><item><title><![CDATA[FreeRTOS源码解析 -> vTaskStartScheduler()]]></title><link>https://blog.youkuaiyun.com/MrJang_/article/details/42297909</link><guid>https://blog.youkuaiyun.com/MrJang_/article/details/42297909</guid><author>MrJang_</author><pubDate>Wed, 31 Dec 2014 18:19:36 +0800</pubDate><description><![CDATA[xPortStartScheduler（）会在后面介绍port.c的时候详细说明。

void vTaskStartScheduler( void )
{
    portBASE_TYPE xReturn;

	/* Add the idle task at the lowest priority. */
	/*空闲任务的责任是要将分配给已删除任务的内存释放掉。
    在vTaskDele]]></description><category></category></item><item><title><![CDATA[FreeRTOS源码解析 -> vTaskResume（）]]></title><link>https://blog.youkuaiyun.com/MrJang_/article/details/42297799</link><guid>https://blog.youkuaiyun.com/MrJang_/article/details/42297799</guid><author>MrJang_</author><pubDate>Wed, 31 Dec 2014 18:02:53 +0800</pubDate><description><![CDATA[#if ( INCLUDE_vTaskSuspend == 1 )

	void vTaskResume( xTaskHandle pxTaskToResume )
	{
	    tskTCB *pxTCB;

		/* It does not make sense to resume the calling task. */
		configASSERT( pxTaskToResume );]]></description><category></category></item><item><title><![CDATA[FreeRTOS源码解析 -> vTaskSuspend]]></title><link>https://blog.youkuaiyun.com/MrJang_/article/details/42297627</link><guid>https://blog.youkuaiyun.com/MrJang_/article/details/42297627</guid><author>MrJang_</author><pubDate>Wed, 31 Dec 2014 17:50:24 +0800</pubDate><description><![CDATA[“挂起(suspended)”是非运行状态的子状态。处于挂起状态的任务对调度器而言是不可见的。让一个任务进入挂起状态的唯一办法就是调用vTaskSuspend() API函数；而把一个挂起状态的任务唤醒的唯一途径就是调用vTaskResume()或vTaskResumeFromISR() API函数。大多数应用程序中都不会用到挂起状态。
#if ( INCLUDE_vTaskSuspend ==]]></description><category></category></item><item><title><![CDATA[FreeRTOS源码解析 -> vTaskDelayUntil()]]></title><link>https://blog.youkuaiyun.com/MrJang_/article/details/42297435</link><guid>https://blog.youkuaiyun.com/MrJang_/article/details/42297435</guid><author>MrJang_</author><pubDate>Wed, 31 Dec 2014 17:32:35 +0800</pubDate><description><![CDATA[vTaskDelayUntil()的参数就是用来指定任务离开阻塞态进入就绪态那一刻的精确心跳计数值。
     API函数vTaskDelayUntil()可以用于实现一个固定执行周期的需求(当你需要让你的任务以固定频率周期性执行的时候)。
   由于调用此函数的任务解除阻塞的时间是绝对时刻，比起相对于调用时刻的相对时间更精确(即比调用vTaskDelay()可以实现更精确的周期性)。
vo]]></description><category></category></item><item><title><![CDATA[入职三个月的那些事  From 2014.8.12]]></title><link>https://blog.youkuaiyun.com/MrJang_/article/details/42297321</link><guid>https://blog.youkuaiyun.com/MrJang_/article/details/42297321</guid><author>MrJang_</author><pubDate>Wed, 31 Dec 2014 17:23:12 +0800</pubDate><description><![CDATA[第一阶段：学习蓝牙4.0协议栈开发。 
 完成内容： 
 1、BLE模块传输速度测试。
 2、BLE从机模块。
 3、USBdongle模块。


    很幸运的能有这么一块大段的时间来系统的学习蓝牙，因为之前没有接触过的缘故，刚拿到开发套件和资料时对于一切都显得那么茫然。看着光盘带的资料，一点点去加深对协议栈的理解，去试着在IAR上改动工程，让两个蓝牙模块按照我设定的方式交流；去]]></description><category></category></item><item><title><![CDATA[FreeRTOS源码解析 -> vTaskDelete()]]></title><link>https://blog.youkuaiyun.com/MrJang_/article/details/42297051</link><guid>https://blog.youkuaiyun.com/MrJang_/article/details/42297051</guid><author>MrJang_</author><pubDate>Wed, 31 Dec 2014 17:06:01 +0800</pubDate><description><![CDATA[vTaskDelete()
API 函数
任务可以使用API函数vTaskDelete()删除自己或其它任务。
任务被删除后就不复存在，也不会再进入运行态。
空闲任务的责任是要将分配给已删除任务的内存释放掉。因此有一点很重要，那就是
   使用vTaskDelete() API函数的任务千万不能把空闲任务的执行时间饿死。
需要说明一点，只有内核为任务分配的内存空间才会在任务被删除后自动]]></description><category></category></item><item><title><![CDATA[FreeRTOS源码解析 ->  xTaskCreate()]]></title><link>https://blog.youkuaiyun.com/MrJang_/article/details/42295995</link><guid>https://blog.youkuaiyun.com/MrJang_/article/details/42295995</guid><author>MrJang_</author><pubDate>Wed, 31 Dec 2014 15:57:27 +0800</pubDate><description><![CDATA[signed portBASE_TYPE xTaskGenericCreate( pdTASK_CODE pxTaskCode, const signed char * const pcName, unsigned short usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pxCr]]></description><category></category></item><item><title><![CDATA[FreeRTOS 在STM32上的移植 V1.0]]></title><link>https://blog.youkuaiyun.com/MrJang_/article/details/42262139</link><guid>https://blog.youkuaiyun.com/MrJang_/article/details/42262139</guid><author>MrJang_</author><pubDate>Tue, 30 Dec 2014 09:51:21 +0800</pubDate><description><![CDATA[这篇文章是我从网上看到的，介绍的移植以及一些底层的细节，可以在看源码看到底层实现时配合着来看。主要（要弄明白）的部分是FreeRTOS是如何实现任务之间切换的（SVC、pendSV后面会有相关资料）。可以在看完源码后思考一下FreeRTOS这种实时操作系统的设计相较于其他小型操作系统有什么优点。
下面是这篇文章：


FreeRTOS
 在STM32上的移植 V1.0


Free]]></description><category></category></item><item><title><![CDATA[BLE4.0 cc2540速度测试]]></title><link>https://blog.youkuaiyun.com/MrJang_/article/details/40585135</link><guid>https://blog.youkuaiyun.com/MrJang_/article/details/40585135</guid><author>MrJang_</author><pubDate>Wed, 29 Oct 2014 13:31:16 +0800</pubDate><description><![CDATA[建立周期事件：]]></description><category></category></item></channel></rss>