📄 readme.txt
字号:
small RTOS(AVR) 1.22.1v 说明文件
CPU: ATmega8L
Compile: avr-gcc3.4.3
Stack: 静态
我在使用陈明计先生写的small RTOS和51单片机做过几个小项目,起初都很好,开发变的容易了,程序变的容易修改。后来随着任务个数的增多,RAM很快就不够用了。51系列的芯片内部RAM普遍都是256个,很难找出1024个字节RAM或更多,而价格又合适的。记得上一次我没有办法被迫使用了64K flash内部带768字节的XRAM的51芯片,而我根本用不到那么多flash。
然而AVR的mega系统芯片内部集成数量适中的flash,较大内部RAM(1024Bytes)特别是mega8和mega16这两款芯片性能价格比极高。特别适合做一些小项目。而且同样的时钟频率下AVR运行速度又快。理论上同样时钟频率下,AVR会比51快12倍,然而我在特定环境下测试small RTOS做任务切换的速度AVR会比51快7~8倍。这有可能同样是8位机,51的指针可以是8位的而AVR的却必须是16位的。16位的数据自然就要使用更多的指令完成处理操作。
small RTOS移植到AVR上以后,就不用考虑函数的可重入问题了。只要不使用全局变量就可以了。因为我用的编译器是能产生可重入型代码的AVR-GCC.我重新写了和硬件相关的部分,2个OS_CPU_C.c和OS_CPU_A.c都是用C写的。第2个文件使用了几处嵌入式汇编语句。这个文件本来应该用汇编写,但考虑实现难度与可读性也是使用了C编写而成。
要想无需任何改动就可以编译这个程序,就必须安装winavr20050214和uv2,先点击uv2的工程文件打开这个工程然后在Tools---->Customize Tools Menu...嵌入gcc编译命令make all和make clean即可立即编译。编译后可以使用avr studio进行代码级仿真,在仿真之前最好把这个软件能打的补丁都打上,这个软件实在是让人不敢恭维。
优化级别必需为s,其他优化级别也不会导致编译时出错,但会导致运行时出错。原因涉及局部变量分配堆栈处理方式不同,也就是OS_CPU_A.c那个文件中的移植部分。还有就是其他优化涉及的中断自动保存寄存器的数量有所出入。
再次感谢陈明计先生,是他把我引入了RTOS的世界。
徐宝田
2005年7月5日
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -