摘要:
1、固定内存池管理实验 内存管理是操作系统的一个基础功能。uTenux的内存池管理函数提供了基于软件的内存池管理和内存块分配管理。uTenux的内存池有固定大小的内存池和大小可变的内存池之分,它们被看成是互相独立的对象,需要不同的系统调用集来进行操作。内存池管理函数管理的内存全部包含在系统空间以内。1、固定尺寸内存池实验 固定尺寸内存池是一个用来动态管理固定尺寸内存块的对象。每个固定尺寸内存池都有一个用作固定尺寸内存池的内存空间(简称为内存池区)和一个等待内存块分配的任务队列。 uTenux提供了五个供操作固定内存池的API,分别用于创建、删除、获取、释放、查询内存池状态。创建固定尺寸内存池, 阅读全文
摘要:
这个是头一次接触的概念。比较不好理解。内核规范中的说明就要20页! 看了王总写的uTenux内核规范之后,有那么一点明白了但理解不深。 集合点端口就像每次工作前的收集情况会。首长下达收集情况指令,各个部门聆听。当给某个部门下达指令之后,这个部门开始工作。并返回信息。所有部门都会报完信息之后,首长心里就有数了:今天天气不错,昨天的机器故障排除了,原料到位。可以开工了!于是,一天的生产工作就此开始... 阅读全文
摘要:
uTenux的消息缓冲区是一个通过传递大小可变的消息来实现同步和通信的对象。 消息缓冲区由三部分组成:1、待发消息队列 2、等接收消息的任务队列 3、用来保存缓冲消息的空间。 和信号相比,消息队列能够传递更多的信息。与管道相比,消息队列提供了有格式的数据,这可以减少开发人员的工作量。但消息队列仍然有大小限制。 在uTenux中当缓冲区空时,接收消息的任务进入等待状态。当缓冲区满时,发送消息的任务进... 阅读全文
摘要:
互斥体,维基百科中交互斥锁。其定义是这样的:互斥锁(英语:英语:Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。该目的通过将代码切片成一个一个的临界区域(critical section)达成。临界区域指的是一块对公共资源进行访问的代码,并非一种机制或是算法。一个程序、进程、线程可以拥有多个临界区域,但是并... 阅读全文
摘要:
邮箱是一个通过在系统(共享)内存空间传递消息来实现同步和通信的对象。uTenux中每个邮箱都包含一个用来发送消息的消息队列和一个用于等待接收消息的任务队列,其使用邮箱功能的消息内容放置在发送方和接收方共享的内存中,因此,实际发送和接收的只有位于这片共享空间的消息起始地址。消息的内容本身并不复制。 消息邮箱的API包括创建删除发送接收删除的功能。 1、使用tk_cre_mbx创建一个消息邮... 阅读全文
摘要:
事件标志是一个用来实现同步的对象,由多个位组成,用作指示对应事件存在的标志。事件标志由用来指示对应事件存在的位模式(bitpattern)和一个等待事件标志的任务队列组成。 uTenux提供了一组API用于处理事件标志:创建、删除、设置、等待、清除。 1、创建事件标志:tk_cre_flg 为建立的事件标志分配一个控制块 事件结构体: typedef struct t_cflg {... 阅读全文
摘要:
信号量(semaphore)是一个用来指示可用的资源并将可用资源的数量以数值的形式表示出来的对象。当使用一组资源时,信号量用来实现互斥控制和同步。uTenux提供了信号量出来的API,可以很方便地使用信号量。 uTenux中,信号量包含一个资源计数(用来指示是否存在相应的资源以及资源的数量)和一个等待信号量的任务队列。 当一个任务返回m个资源时,信号量资源计数加m。当一个任务获得n个资源时,信... 阅读全文
摘要:
任务就是一个无限循环。uTenux提供的任务管理功能是很强大的,包括建立和删除一个任务,启动或退出任务,取消一个任务的启动请求,改变任务的优先级和査询任务状态,使任务进人睡眠状态和唤醒状态,取消唤醒请求,强制释放任务等待状态,使任务状态变成挂起状态、延迟调用任务的执行和禁止任务等待状态。 任务是一个通过ID来识别的对象,每个任务都有基础优先级和当前优先级,可用来控制任务的执行次序 任务管理的... 阅读全文
摘要:
1、使用的uTenux内核代码:http://www.uloong.cc/cn/download/uTenux_V1.6.00r180.zip 2、uTenux的特性: 1、微内核 2、开放源码、完全免费 3、不需要MMU,占用ROM/RAM少 4、可移植、可固化、可裁剪 5、抢占式实时多任务操作系统 6、支持所有32位ARM7/9和Cortex M系列的微控制器 7、可配置任意多个的任务、任务... 阅读全文
摘要:
嵌入式操作系统uTenux实验汇总贴 阅读全文
摘要:
在输入捕获模式下,当检测到ICx信号上升/下降边沿时,计数器的当前值被存储在捕获比较寄存器TIMx_CCRx中。 当捕获事件发生时,相应的CCxIF 标志(TIMx_SR 寄存器) 被置1。如果中断或者DMA功能被使能,就会产生中断或者DMA请求。如果捕获发生时,CCxIF标志已经被置位,这时过采样标志CCxOF就会被置位。向CCxIF写0或者读去TIM_CCRx中的数据,将清除捕获标志。CCxO... 阅读全文
摘要:
在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的 stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。 所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_para... 阅读全文
摘要:
高级时钟控制定时器TIM1&TIM8简介: STM32F4的高级控制定时器包含一个自动重装载计数器,计数器的输入是一个被预分频的系统时钟。 这个定时器有多种用途,包括车辆输入信号长度(输入捕获模式)或者产生波形输出(输出捕获,PWM,带死区插入的互补PWM输出等) 脉冲长度和波形周期可在通过定时器的预分频器或者RCC的预分频器在几个微秒时钟内调整。 高级控制定时器和通用定时器完全独立,不共享任何资... 阅读全文
摘要:
F4的RTC与F1的RTC有很大的差别。F1系列的RTC就是一个简单的计数器,要想获得时间,得自己计算。F4的就不需要这么麻烦了,读出来的直接就是时间 阅读全文
摘要:
STM32F4的随机数发生器RNG,以环境噪声为种子,产生32位随机数供主机使用。 阅读全文
摘要:
STM32F的窗口看门狗中有一个7位的递减计数器,它会在出现下述2种情况之一时产生看门狗复位:1)当计数器的数值从0x40减到0x3F时2)当刷新看门狗时计数器的数值大于某一设定数值时,此设定数值在WWDG_CFR寄存器定义对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了;如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行非正常地跳过了某些 阅读全文
摘要:
窗口看门狗(WWDG)用于发现由外部接口或者不可预期的逻辑操作导致的软件故障。这些故障会导致程序中断正常运行。当一个程序周期结束时,看门狗电路会产生一个MCU复位信号,除非在看门狗电路复位之前程序返回正常运行逻辑。当计数器减少到预设值的时候,也会产生一个复位信号。这就意味着计数器必须限制在一个指定的窗口内。 【窗口看门狗主要特性】 1、可编程向下计数器 2、复位条件:计数器值小于0x40或者计数器... 阅读全文
摘要:
为了提搞系统的可靠性,STM32F4系列MCU有一个独立看门狗(IWDG)和一个窗口看门狗(WWDG)。今天做的实验是关于独立看门狗的。 独立看门狗使用的时钟源是内部低速振荡器LSI。因为LSE可能没接,HSE可能坏点,HSE耗着的时候HSI却观点了。。。诸多原因,LSI是最好的独立看门狗时钟。 【IWDG主要特性】 1、独立的向下计数器 2、内部RC振荡器作为时钟源 3、当计数器值减到0时,复位... 阅读全文
摘要:
STM32F4的DAC是一个12位,电压输出的DAC。可被配置为12位或者8位,也能和DMA联合使用。DAC具有两个独立转换通道。在双DAC模式下,DA抓换可被配置成独立模式或者同步工作模式。两路DAC参考电压以及ADC都是VREF。 【主要特性】 1、两路 2、12bit时数据可被配置成左对齐或右对齐 3、具有同步更新能力 4、噪声产生 5、三角波产生 6、两个通道独立转换或同步转换 7、每个通... 阅读全文
摘要:
【实验目的】 输出7路占空比不同的PWM信号是各个版本ST库必备的例子。本实验的主要目的不是表现ST芯片PWM功能的强大,而是要完成输出的精确计算。 【实验内容】 输出7路PWM信号,并用示波器测量输出。 【实验原理】 1、时基单元初始化 TIM1和TIM8使用内部时钟时,时钟由APB2提供。但是定时器的时钟并不是直接由APB2提供,而是来自于输入为APB2的一个倍频器。当APB2的与分频系数为1... 阅读全文