Stone
|
18f782b7d5
|
|
2016-01-13 17:30:05 +00:00 |
nnhy
|
999369a6b2
|
F1不需要分散加载,那是130才有的问题,需要把重点代码放到系统最前面
|
2015-12-05 09:06:48 +00:00 |
nnhy
|
59baca7be6
|
增加获取系统启动时间的Sys.Ms(),等同于Time.Current(),但是无需再引用Time.h
|
2015-11-03 08:52:31 +00:00 |
nnhy
|
2921f7a2f9
|
频繁调用的代码,分散加载到Flash前面,因为GD32F130/150最后32k比较慢
|
2015-10-28 12:14:46 +00:00 |
nnhy
|
7116f2a986
|
精简不再使用的功能
|
2015-10-22 01:25:29 +00:00 |
nnhy
|
2ee5521bfa
|
系统时间,以毫秒作为基本精度
编译测试通过
|
2015-10-05 13:22:23 +00:00 |
nnhy
|
547e0759fd
|
调整写法,消灭任务调度的全局变量,编译通过,未测试
|
2015-08-22 06:26:46 +00:00 |
nnhy
|
6a8c3da4d4
|
系统时钟虽然很重要,但是并非所有系统都需要用到系统时钟
|
2015-07-28 15:18:15 +00:00 |
nnhy
|
6b8f12b948
|
强化任务调度管理,为了精确统计任务时间做准备
|
2015-07-15 07:59:35 +00:00 |
nnhy
|
d0b9ff5000
|
线程池部分完成,编译通过。考虑到维持多个线程在池里面会大量占用栈内存,不划算。因此暂停线程池开发
|
2014-10-19 04:35:45 +00:00 |
nnhy
|
f5e1953c69
|
改善多线程的线程安全
|
2014-10-19 02:36:33 +00:00 |
nnhy
|
f230628456
|
修真线程名称Name没有初始化形成野指针的BUG
|
2014-10-12 08:08:47 +00:00 |
Stone
|
8fd39cf5d1
|
OnEnd以后加上死循环,避免指针满天飞
每个线程默认0x100栈空间太小了,加大
|
2014-09-29 15:33:49 +00:00 |
Stone
|
a0349d6d85
|
完善多线程模块,全面兼容STM32F0,仅仅是汇编指令有所不同
|
2014-09-29 13:36:42 +00:00 |
Stone
|
7b067ce7e4
|
进一步融合Sys和多线程调度,统一使用Sys.Start
|
2014-09-26 07:45:28 +00:00 |
Stone
|
087ba3c1b9
|
保护线程栈需要8+8=16个双字,原来少算了一个,导致STM32F1不可用。
在STM32F4可用估计是以破坏FPU寄存器为代价。
测试通过。
|
2014-09-26 06:58:33 +00:00 |
Stone
|
d40b6d5ea0
|
默认初始化多线程
|
2014-09-25 15:15:44 +00:00 |
Stone
|
044acd716f
|
如果用空闲线程Idle驱动系统定时Sys.Start,可能出现Sleep导致线程挂起,然后没有可用线程供调度。
为此专门增加独立的Main线程。
|
2014-09-19 20:17:57 +00:00 |
Stone
|
6de7986f35
|
多线程调度与Sys定时调度联动,由多线程调度器的空闲线程负责驱动Sys.Start实现传统定时任务。要小心线程栈溢出
测试通过
|
2014-09-19 16:36:18 +00:00 |
Stone
|
187b4d7a21
|
如果有挂起的切换,则不再切换。否则切换时需要保存的栈会出错。
解决不停创建、销毁线程时,内存暴涨不消的问题。这个问题估计跟没法完全释放线程有关
|
2014-09-19 03:28:16 +00:00 |
Stone
|
6e0727217f
|
重构系统、时间、线程三者的关系,Sleep优先使用线程级睡眠
|
2014-09-18 16:33:14 +00:00 |
Stone
|
cce81bf91c
|
优化建立就绪队列的操作,提升性能
|
2014-09-18 15:28:25 +00:00 |
Stone
|
fe933042c6
|
每个线程结束时执行该方法,销毁线程。
测试通过,成功销毁Led线程
|
2014-09-18 09:24:11 +00:00 |
Stone
|
315fa99f8b
|
StackSize保存完整的栈大小,包括用户部分和STK部分
|
2014-09-18 09:01:25 +00:00 |
Stone
|
33192897fe
|
增加线程栈溢出检测
|
2014-09-18 04:50:29 +00:00 |
Stone
|
5eff87f132
|
使用调度入口函数,测试通过。
小灯闪烁例程通过。
Idle例程出现异常
|
2014-09-17 21:04:25 +00:00 |
Stone
|
844cf441f5
|
当前线程栈的指针。需要保存线程栈,所以需要指针
测试通过
|
2014-09-17 19:45:31 +00:00 |
Stone
|
537ab2d480
|
Thread::Sleep/Suspend/Resume测试通过,挂起指定时间后可以恢复
|
2014-09-17 19:15:41 +00:00 |
Stone
|
e3fdeb1009
|
删除无用的代码注释,测试通过
|
2014-09-17 18:09:37 +00:00 |
Stone
|
3a8bbe0d0b
|
重新整理PendSV_Handler实现,更好性能更好逻辑。
使用模版列表重构Thread链表实现
测试通过,单一小灯线程闪烁
|
2014-09-17 16:53:51 +00:00 |
Stone
|
da0381de95
|
Thread增加日志输出,恢复使用4字节ID
|
2014-09-17 13:45:30 +00:00 |
Stone
|
71608df485
|
注释Thread.ID,它导致了对齐问题,堆栈溢出到隔壁。
每次时间片调度时,支持Sleep睡眠处理
|
2014-09-17 12:18:48 +00:00 |
Stone
|
ffe948b038
|
增加基于线程调度的睡眠支持
|
2014-09-17 06:51:39 +00:00 |
Stone
|
7ea0d4b135
|
线程调度小灯闪烁成功,代码还需要进一步巩固
|
2014-09-16 19:42:57 +00:00 |
Stone
|
b8ef6a8fd2
|
无法用纯C/C++实现整个中断,最主要的问题是它会编译生成压栈操作,使得函数内的栈操作出错
|
2014-09-16 19:30:58 +00:00 |
Stone
|
e800e0d27f
|
已经可以主动调度任务,但是在时间片到来时无法正确调度。怀疑跟编译警告里面的2字节对齐有关
|
2014-09-16 19:22:06 +00:00 |
Stone
|
4698b4481f
|
抢占式任务调度,使用系统滴答作为时间分片提供源
|
2014-09-16 17:14:12 +00:00 |
Stone
|
cb9a152edf
|
很多RTOS在这里设置PSP为0,然后这个函数最后是一个死循环。
其实,PSP为0以后,这个函数就无法正常退出了,我们把它设置为MSP,确保函数正常退出,外部死循环
|
2014-09-16 14:22:16 +00:00 |
Stone
|
5c239c4c51
|
|
2014-09-15 05:44:30 +00:00 |
Stone
|
0f5cd80398
|
通过PendSV_Handler实现任务切换,在线程栈的处理上还有问题
|
2014-09-14 12:32:34 +00:00 |
Stone
|
a1c93b4a64
|
编译通过,未完成
|
2014-09-12 16:22:58 +00:00 |
Stone
|
26f51abc65
|
增加线程封装,基于优先级的时间片抢占式任务调度
编译未通过,诡异的错误
|
2014-09-10 19:34:24 +00:00 |