一步一步和我走,进入缤纷的嵌入式世界(连载4)
来源:互联网 发布:请写一个sql的分页语句 编辑:程序博客网 时间:2024/05/02 03:01
终于有时间了,和大家说说嵌入式软件设计。不知道各位的硬件做的怎么样了,说起软件设计其实没什么特别的地方。整个软件采用最简单的前后台系统。在满足需求的前提下,能最简化设计,那是一种能力的体现。这个系统,用前后台实现是绰绰有余了。
前台做主要做两个工作:查询用户的控制并响应用户的控制;从Flash中读取原始数据,解码后放入输出队列。
后台只做一个工作,将队列中的解码数据定时(22KHz)送到DAC上输出。
这是整个系统的活动图。让大家可以了解整个代码设计的思路。
其中,从Flash中读取1Byte的原始数据并解码,遵循如下流程:
这里需要解释一下,当队列满的时候,就不从Flash里读取数据往队列里插入了。防止解码过快,产生前后台不一致,造成声音丢帧、失真。
这里是更新音乐的整个活动图。其中擦写Flash的活动图就不贴出来了,和更新音乐差不多,也比较简单,就不细说了。
搞清楚整个前后台的活动,就要分析一下前后台的通信数据。这里我们可以看到,前后台的数据通信有两个方面,一个是播放音乐的数据队列;一个是串口接受数据的队列。这两个队列依我说,最好做成循环队列,是比较好的方式,好用。并且这两个数据队列是前台和后台的中断共享的,所以无须互斥,本身中断就是个临界区。这里要注意,多个中断之间如果没有共享数据,是可以认为他们是在同一个临界区里的。如果不同级别的中断共享了数据,那就不能认为中断是临界区域了。必须做相应的互斥。因为串口和定时器没有共用数据,所以无须做互斥,可以互不干扰的工作。
有些比较好玩的童鞋要注意了,如果你用uC/OSII或者其他的复杂的操作系统来做这个事情,还是要仔细分析一下,该保护的还是要保护的。
好了,今天说到这里,明天继续接着侃……
- 一步一步和我走,进入缤纷的嵌入式世界(连载4)
- 一步一步和我走,进入缤纷的嵌入式世界(连载1)
- 一步一步和我走,进入缤纷的嵌入式世界(连载2)
- 一步一步和我走,进入缤纷的嵌入式世界(连载3)
- 一步一步和我一起走,进入缤纷的嵌入式世界(连载5)
- 一步一步和我一起走,进入缤纷的嵌入式世界(连载6)
- 缤纷乐——我的快乐
- 篇1:进入嵌入式世界
- 移动互联网的新宠:Android之缤纷世界
- 我和我的世界
- 他和她的缤纷颜色
- 一步一步进入React的世界(React+Webpack+ES6组合配置)
- 一步一步进入React的世界(React+Webpack+ES6组合配置)
- 严谨 认真,一步一步的走
- Android跟随Linux进入嵌入式世界
- 进入erlang的世界
- 进入Erlang的世界
- 进入Erlang的世界
- 正则表达式参考文档
- 对同步异步的理解
- 计院生活--第二章 深入虎穴(上)
- Spring的核心机制依赖注入简介
- 推荐Java优秀视频
- 一步一步和我走,进入缤纷的嵌入式世界(连载4)
- 2009.2.28 OA项目组一周工作报告
- 开发者面试百问-测试部分答案
- 如何解决基本的 TCP/IP 问题
- coreldraw基本工具(1)
- I am starting to learn Java again.
- 一位普通网民2008年的酸甜苦辣大事记
- VC++编译时出现Error spawning cl.exe
- fedora 10 yum lamp