使用OpenMP进行多线程计算

OpenMP是一套支持跨平台共享内存方式的多线程并发的编程API,关于其详细介绍,可浏览其官方主页与Wiki页面

多线程并行计算是一个值得深入研究的问题,不过很多时候,我们仅仅是需要实现一些很基础的多线程计算。例如程序中需要依次处理100张图片,它们之间又没有什么关联,这时如果使用多线程,可以极大的提升程序的执行效率。使用OpenMP就可以很方便的实现上述要求而不必了解多线程的底层技术。

STC单片机不断电下载程序

在使用STC-ISP为STC单片机下载程序的过程中,需要手动对单片机进行复位,之后才能正确下载程序。这样不是很方便,我们可以采用一些方法来简化这一过程。

基本思路:在程序中加入一段监控代码,监测UART接收到的数据,当接收到STC-ISP程序发送的下载开始的数据后,软件复位单片机从系统ISP监控程序区启动。

STM8 SWIM接口

STM8系列单片机通过SWIM接口进行程序下载与Debug,这是一个单线接口,仅有一条数据线,即SWIM。SWIM引脚为开漏(OD)结构,以此实现双向通信。关于SWIM协议的详细说明,可参考ST的文档”STM8 SWIM communication protocol and debug module“,此文档介绍了SWIM协议的通信过程与物理层时序等内容,如果需要自行设计制作SWIM下载器需要参考此文档。

当然,如果仅是为了给STM8单片机下载程序,并不需要了解SWIM协议的具体实现方法,仅需要在板子上设计好下载接口,然后和ST-Link仿真器连接起来即可。

BLDC六步换相法基本原理及驱动波形

直流无刷电机(BLDC)最经典的驱动方法就是三相六步换相法,这几天调试时顺便用示波器捕捉了下6个MOS管的栅极驱动波形。

基本驱动电路如图所示:

所谓的六步换相法即是按如下的顺序通电:AB->AC->BC->BA->CA->CB。当然,除此之外还可以使用其他的通电顺序,只需要保证磁场的变化方向能构成一个旋转磁场即可。

C2000 CSM使用方法

在TI C2000系列DSP中,CSM模块用于对给芯片进行加密,以防止未经授权的代码逆向等行为,TI在其文档中对此模块的说明如下:

The code security module (CSM) is a security feature incorporated in 28x devices. It prevents access/visibility to on-chip memory to unauthorized persons—that is, it prevents duplication/reverse engineering of proprietary code.
The word secure means access to on-chip memory is protected. The word unsecure means access to onchip secure memory is not protected — that is, the contents of the memory could be read by any means (through a debugging tool such as Code Composer Studio™, for example).

关于DSP中具体哪些部分受到CSM模块的保护,以及此模块的详细信息可参阅TI的相关文档,此处仅从使用的角度来讨论下如何对DSP芯片进行加密与解密。本文基于CCS 6.0。

OSI模型总结

OSI模型是最为常用的网络分层模型,其全称为“开放式系统互联通信参考模型”,Open System Interconnection Reference Model。 此模型由国际标准化组织(ISO)提出,是一个试图使各种计算机在世界范围内互连为网络的标准框架,对应标准为ISO/IEC 7498-1。
此模型已成为计算机间和网络间进行通信的主要结构模型,目前使用的大多数网络通信协议的结构都是基于OSI模型的。

OSI模型中将网络通信的工作分为七层,这就是通常说的OSI七层模型,具体层次划分见下图及下表:

|