天籁是音
舞是视
齐是齐心协力
小组成员如下:
成员名 | 擅长方向 | 所在地 | 工作学习状况 | 备注 |
andery88 | 底层驱动、硬件架构 | 北京海淀 | 研二 | |
qqjiaqq001 | uCOS-ii操作系统 | 江西萍乡 | 本科毕业后工作3年 | |
zhangpeng759 | 工业控制 | 湖南长沙 | 本科毕业后工作近2年 | |
tuyukui2 | 制造业 | 山东威海 | 有待完善 | |
最近,我也一直再玩MCU,一次偶然的机会再我用一款同样也是32位的MCU做开发时,发现一个很棘手的问题:在做系统开发时发现直接用C语言来编写的传统的前后台运行的系统感觉系统设计太复杂,而且最关键的是当要向其中增加新功能时,就要对前面所设计的整个系统都要修改,工作量很大,于是我就寻找有没有更好的办法来解决这个问题,答案是肯定的了,那就是嵌入式操作系统,多少专家学者根据各种不同的需求设计出了各式各样的操作系统,他们的应用场合不尽相同,需要根据需要有区别的选择。
由于我是在嵌入式操作系统方面还是一个新手,就选择了一个结构相对简单,易于理解的操作系统----uCOS ii操作系统,据查,该系统性能稳定,经过美国航空航天安全局(FAA)的认证,可将该操作系统应用于航天航空器上。说大了也没有用,接下来我就在网上查找在该芯片上是否有已经移植好的uCOS ii操作系统,巧了,还真被我找到了,与是二话没说先在MDK上将所给的系统代码编译一下(系统代码是在MDK上编写的),如下是项目的文件:
哈哈!果真开源!程序没有任何错误和警告,如下是编译完后的结果:
为了弄明白编译后得出的这些数据是什么含义,我又在网上查了查相关的资料,得知:
Code是指编译后二进制代码所占用的字节,
RO(ReadOnly)是指程序中的常量(只可读不可写),
RW(Read/Write)是指程序中已经初始化的变量(即可读又可写),
ZI(Zero)就是未初始化的变量(这类变量的值被默认赋值为0),
还有就是这些代码、常量、变量数据并不全部都作为image文件下载到MCU芯片的ROM里,这是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可,包含进去反而浪费存储空间,所以,在程序下载时真正下载到ROM中的也只有:
Code+RO+RW=8630+482+100=9212(字节)=9K(字节)
而当程序运行后,RAM所占用的空间自然就是:
RW+ZI=100+5812=5912(字节)=5.77K(字节)
然后我对着目前我所使用的MCU芯片:
STM32F051R8其具有Flash memory:64K(字节),SRAM:8K(字节)
经过对比可以发现作为一个裸uCOS ii系统其Flash memory还可能足够用,不过,SRAM的容量可不那么乐观了,单单运行uCOS ii系统和两个简单的闪烁LED任务就耗费了5.77K字节的内存空间(占总空间的72.1%),这要是再运行预设计应用程序,岂不系统崩溃了。除此之外还有一个弊端就是该芯片的主频最大为48MHz,作为预开发的系统来说是有点低。
为此我正在寻觅哪里能够得到一款合适的MCU芯片,巧了,还是EEPW,还是瑞萨电子推出基于Sakura开发板的系统开发,其内部资源我大致看了一下,如下:
MCU:RX63N (R5F563NBDDFP)
主频:96MHz
Flash Memory:1MB(字节)
RAM:125KB
哈哈!完全正好符合系统设计的要求,说实话当我自己看到这个帖子的时候,心里别提有多激动了,话说一个巴掌拍不响,众人划桨开大船,我在这里也预招兵买马,希望那些和我有共同兴趣的同学或成功人士加入这个团队一起努力,把这个系统工程做起来!好了,动员的话就说到这里,接下来还是来说重点的项目内容:
基于uCOS ii的MP3系统设计(后期可以考虑MP4、语言识别、视频异常检测等)
系统原理图:
实物图片:
系统硬件图:
从左至右依次为:MP3模块、MCU开发板、TFT液晶触摸屏
未安装MCU开发板时的系统图:
如若采用瑞萨的RX63N到时再换个板子重新“布线”,呵呵!
TFT液晶屏的背面(内含SD卡槽):
系统工作过程:
1、 MCU开发板(预采用瑞萨的RX63N开发板)在该工程中起到承上启下的作用,在MCU上运行uCOS ii系统,在该操作系统上运行着3个任务(如若以后预增加功能,只需在此基础上增加任务即可):
1) TFT液晶屏驱动显示任务,考虑到此任务仅负责显示任务,所以设置其的优先级最低。
2) TFT触摸控制任务,考虑到此是控制部件,需要实时响应,所以设置其的优先级最高。
3) MCU读取SD卡音频数据任务,考虑到MCU读取速度快于MP3模块需求音频数据,所以此任务的优先级居中但要低于MCU向MP3模块传输音频数据的任务的优先级。
4) MCU向MP3模块输送音频数据的任务,此任务的优先级要略高于MCU读取SD卡音频数据的任务。
2、 各模块之间的通信方式:
MCU与液晶屏采用16位并口数据传输,控制线采用单个独立I/O进行控制。
MCU与SD卡通信采用SPI的数据传输方式。
MCU与MP3模块也采用SPI的方式进行数据的传输。
本系统设计完成后,还可以考虑在此基础上实现语音识别、图像异常检测等更多功能(届时只需增加部分任务即可哦)。
最后,我期待着获得这款开发板,并与有着共同爱好的同学或成功人士共同来完成这个系统的开发,期待着大家的支持和参与,谢谢!