CortexM3的软件架构
来源:互联网 发布:pocket.pc软件下载 编辑:程序博客网 时间:2024/04/30 11:40
看了下某芯片商写的软件架构,觉得挺简单,和android 的上层架构也差不多。看来底层和上层真的是通的。
这样看来,不管是应用、游戏、还是系统。架构的元素都不外乎:
1.区分调用层次。
2.foreground、background。
而foreground,一般都是针对具体任务,具体对象,具体界面。所以要设定任务线程和任务进程。background一般是通用的、系统级别的功能,与具体的任务无关,如时钟、外围接口检测(底层)、网络接口检测(网络游戏)。
整体来看,底层的软件架构就是在一个main loop里,循环执行foreground(UI、Event、Window Service)、background(System Service、Thread process)。 而Task是主要的数据结构,唯一的一个Task包含了所有的window,而window是foreground的抽象,像UI的绘制、Event的响应都通过window实现。Window是嵌套调用的,屏幕上现实的是嵌套最底层的window。window之间可以切换,用于不同功能界面的切换。
Service则分为前后台,具体处理什么没有提及,估计是处理每个window的绘图、响应任务。
除此之外,该架构使用了msg设计模式,通过在内存开辟一个BSS区,各个c文件产生的执行文件,可以通过一个公开的共用的BSS区,访问message的状态。为msg定义enum类,所有的消息都在里面。像MSG_PLAY_VIDEO,MSG_PLAY_MUSIC, mSG_STOP_VIDEO,MSG_STOP_MUSIC。然后通过checkMSG/getMSG/sendMsg等方法设置、获取和检测当前的系统状态。这个方法和android的设计是一样的,所以比较好理解。
大概是学到这么多东西了,更多的东西得跟踪源码才行。还不是很清楚foreground和background在代码中的相互调用是怎么实现的,只是知道它的组成部分是怎么实现。
系统主循环伪代码
void OSStart(xxx xxx,xxx xxx)
{
while(1)
{
TaskInit(xxx);
WinCreat(xxxx,xxx);
while(1)
{
if (SysService() != RETURN_OK)
{
break;
}
if (ThreadProcess(*pThread) != TRUE)
{
break;
}
if (WinServiceProc(*pWin) != RETURN_OK)
{
break;
}
if (WinKeyProc(*pWin) != RETURN_OK)
{
break;
}
}
//end the main window.
WinDestroy(*pWin);
}
}
- CortexM3的软件架构
- STM-CortexM3系列微处理器软件体系的自动架构
- CortexM3的UART
- CortexM3
- 软件的架构设计
- 软件的架构设计
- 软件的架构设计
- 软件开发的架构
- 软件架构的过程
- 软件架构的过程
- 软件架构的过程
- 软件架构的过程
- 软件架构的历程
- 软件架构的历程
- 软件架构的过程
- MiniGUI的软件架构
- 软件的表现架构
- 软件架构的等级
- 嵌入式 域名以及IP均可以转换为IP字符串示例(ip以及doname兼容)
- 人脉就是钱脉,培养人脉的106个技巧
- 申请爱查快递api
- Xcode面板中Version与Build的区别
- 岁月的风
- CortexM3的软件架构
- JAVA 方法分派
- iOS动画相关(持续更新)
- Scrips:查看AWR的redo记录awr_redo_size_history.sql
- 少的地方
- IOS学习之navigationBar上添加图片(UIImageView)以及文字(UILabel)
- 新浪微博分享按钮接口:样式自定义
- VC++6.0注释快捷键设置
- 搭建Nginx+Java环境