-
[综合] 提取文件后缀名,生成随机字符串
生成随机字符串 functionrandom_string(len){len=len||32;varchars='ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';varmaxPos=chars.length;varpwd='';for(i=0;i...
63
热度 -
[综合] 页面禁止复制css实现
Css禁用选取操作: <divclass="live"v-if="jurisdiction"unselectable="on"style="-moz-user-select:none;-webkit-user-select:none;"onselectstart="returnfalse;"...
0
热度 -
44
热度 -
[综合] STM32F4 SPI RX/TX DMA 读写FLASH数据
STM32使用DMA读写FLASH数据需要注意以下几点: 1.SPI全双工模式下,无论读写FLASH数据均需要同时使能RX/TXDMA。 2.写数据时回读数据应当丢弃,读数据时应当发送0xff来启动SPI读周期。 3.使用DMA时应当使能DMAStream,然后再使能SPIDMA请求。 以下为测试...
76
热度 -
[综合] USB DEVICE调试心得
一、USB设备链接后无法HUB不上报发现新设备。USB控制器未打开,USBDP/DM引脚配置不正确。二、能够发现设备,但HOST端提示获取描述符失败。获取描述符是USBDEVICE链接后HOST向DEVICE发送的第一个命令。调试过程中需要注意下位机能否正确收到该命令。1.如果DEVICE不能收到命...
63
热度 -
[综合] 2015.07.01-初始化BOOT堆栈卡死
【问题现象】 系统启动到初始化BOOT任务CORESTACK过程中打印堆栈地址时发生BUSFAULT。 【定位过程】 fa_vxnprintf函数打印指针时访问字符串数组charset取16进制数字时指针为0x004b5453("STK"),非stm32有效RAM或ROM地址。在CORE_Stack...
57
热度 -
[综合] 2015.07.02-IPC对象释放失败
【问题现象】任务测试完成后释放MUTEX和EVENT失败。【定位过程】 释放对象时发现所释放对象的PoolID不正确而无法释放,PoolID属于对象HANDLE成员中的b11:20 #defineOBJECT_SID_BITS11 #defineOBJECT_PID_BITS10 #defineO...
76
热度 -
[综合] 2015.07.03-keil中解决sct连接脚本告警和错误的一些方法
【问题现象1】 错误..\..\source\platform\board\stm32\lite\armcc\stm32-lite.sct(17):error:L6236E:Nosectionmatchesselector-nosectiontobeFIRST/LAST. 【问题原因1】 没有段与...
83
热度 -
[综合] fans-rt 内存管理设计方案(1)引言
修订记录 版本 作者 修订记录 日期 V1.0 姜勇 生成初稿 2014.09.26 引言 内存管理在实时系统中需要具备分配、回收速度快,管理内存容量跨度大(小到几KB,大到几十MB),碎片少等特性。F...
93
热度 -
[综合] fans-rt 任务调度-堆栈切换篇(1)任务切换的基本原理
一个多任务的操作系统可以同时运行多个任务,在只有一个CPU的情况下,怎么同时运行多个任务呢?其实就是操作系统控制CPU在多个任务之间来回切换,这种切换对于任务来说,可以是主动发起的(休眠、阻塞),也可以是不可感知的(优先级抢占、时间片流失)。由于切换的频率极高,速度极快,给用户的感觉就好像是同时在运...
86
热度 -
[综合] fans-rt 任务调度-堆栈切换篇(2)堆栈模型
前面我们提到,任务的切换就是堆栈的切换(当然首先是任务上下文的切换),也通过代码简单的描述了堆栈切换的切换过程。但是,要成功从一个任务切换到另一个任务还必须了解CPU当前运行模式下,中断处理时的特性。例如,进入堆栈时会保存哪些寄存器,CPU是否支持硬件双堆栈(甚至更多层次的堆栈),如果支持多层堆栈,...
48
热度 -
[综合] fans-rt 内存管理设计方案(5)局部堆管理模块设计-需求分析
5.1需求分析 1.创建堆 根据传入的内存指针、长度以、堆内块大小、最大行的块数量创建一个堆并返回堆对象指针。 2.删除堆 根据传入的堆对象指针删除堆。 3.从堆中分配行 根据传入的堆对象指针和需要分配的内存长度从堆中分配若干个连续的块组成一行。如果分配的行的块个数不是2的幂,则需要将分剩余部分分割...
29
热度 -
[综合] 【open】fans-rt系统全局内存管理和全局堆管理优化点
MMS服务的BUDDY算法部分抽取为公共库kbuddy.cMMS和HMS通过调用kbuddy.c中的公共函数实现域/堆的创建/分配/释放功能。
41
热度 -
[综合] 【close】fans-rt 对象管理支持同类不同长度的对象(新需求)
【需求】 对象管理需要支持同类且不同长度的对象的分配和释放(新需求,来源于任务局部变量)。 【方案】 删除KCLASS_DESCRIPTOR中的ObjectSize成员变量,增加fnSizeofObject方法,通过函数获得对象长度。
56
热度 -
[综合] fans-rt 介绍(3)-可选组件(待实现)
二、可选组件(待实现)1.设备和驱动管理(DDM)提供TINY模式和HUGE模式的设备管理架构TINY架构以节省内存为目的的简易设备管理架构,提供对设备节点的管理,不提供设备树的管理结构,提供电源管理支持,不提供热拔插支持,适用于64KB以下内存较小的单片机系统。HUGE架构支持总线(PCI/USB...
94
热度 -
[综合] fans-rt 介绍(4)-源码文件夹介绍
三、源码文件夹介绍 ├─boot ├─build(编译配置文件夹) │└─stm32 ├─include │├─armcc │├─gcc │└─stdc ├─libs │├─libapi(fans-rtAPI接口层) │├─libcal(fans-rt内核适配层) │├─libcmini(fans-...
11
热度 -
[综合] fans-rt 任务调度-堆栈切换篇(3)关于cortex-m3堆栈的入栈顺序说明
cortex-m3STM32MCU支持单条PUSH/POP指令对多个寄存器执行入栈出栈操作,入栈顺序按照寄存器编号的反序进行入栈,不以用户的编码顺序进行入栈(因为操作码以mask值运算),例如: PUSH{R0-R3} PUSH{R1,R0,R2,R3} PUSH{R3,R1,R2,R0} PUS...
53
热度 -
[综合] 【open】fans-rt 任务销毁的对象释放流程
任务销毁的对象释放流程未完成。 任务创建流程包括 1.任务上下文对象分配 2.任务用户栈对象分配 3.任务内核栈对象分配 4.任务局部变量对象分配 5.任务局部堆分配 以上动作的逆向操作如果全部一次在内核服务中完成可能严重影响系统实时性,如果按步骤调用单个服务分次完成则无法解决任务自销毁问题,如果放...
86
热度 -
[综合] 【close】任务局部变量相关功能
【需求】 1.创建局部变量对象 2.获得局部变量键 3.释放局部变量键 4.根据局部变量键设置变量值 5.根据局部变量键查询变量值 6.释放局部变量对象 功能已实现,基本测试用例已通过,完整测试用例遗留 Revision:65Author:fans-rtDate:2015年7月17日星期五1:48...
94
热度 -
[综合] 【close】任务上下文对象长度超过128字节
原因:包含在TASK_CONTEX对象中的ARCH_CONTEX长度32字节,需要从任务上下文中移除,使用指针处理。需要为ARCH_CONTEXT单独分配空间。 解决方案:为节省空间,STM32中ARCH_CONTEXT结构体不单独分配空间,改为去掉STACK_DESCRIPTOR结构中的stack...
10
热度