! w" Q* ~5 @: R4 C4 c! I ) e3 H: ^& O- ~' {图2基于总线(CAN)工业嵌入式实时控制系统的原理图 5 l* B+ o) @- r0 t8 K# n# H1 Q$ W2 X* T+ U" E! v8 g
总线控制器SJA1000 8000H~801FH 将设计好的PC/104模块作为一独立的控制系统插入专用的应用板,同样的模块可以有若干个,以层叠的方式嵌入同一块应用板,既可以完成类似的功能,也可以完成完全不同的其它功能(如数据采集转换等)。PC/104提供了一个非常紧凑的与标准台式PC或PC/AT结构完全兼容的层叠栈接模块。将台式PC机的全部功能重新包装于一个格式标准统一、稳定可靠、灵活且符合嵌入式系统尺寸的标准模块中,与PC兼容,用于嵌入式系统设计以替代传统的嵌入式微处理器十分适宜。通过PC/104总线,微处理器能够非常方便地和系统通信。为满足大量数据交换的要求,特增加了8kb的RAM以扩展内存。为了增加局部总线的驱动能力,在微处理器和PC104总线之间增加数据/地址驱动电路。为了系统的扩充能力,增加了地址译码电路,译出的地址0300H~031FH以备将来的I/O外设使用。同时为了增加有效的传输距离,采用了Philips公司的高性能CAN总线收发器82C250,它具有高速性(最高可达1Mb/s)、能抗瞬间干扰、保护总线、支持多达110个节点的连接等优点。另外,设计了CAN地址选择电路,以确保CAN总线节点在整个系统中的唯一地址。 + @, T3 g1 ]3 r) R3 y% ^5 Linux嵌入式应用编程简介# i$ U* Q2 G" i' N3 s+ c' O, Q
% u# A( k p3 K) I
5.1 采嵌入式系统一般都没有编辑和编译工具,所以需要先在开发系统中完成程序的编辑、编译和仿真运行及修改工作,形成可执行文件,再转到运行系统(即嵌入式系统)上执行。4 ]0 i1 k* ?- W- \
! d# r7 E$ Y& o b; E, {$ r
以Linux嵌入式为支撑系统开发系统上的应用程序属于事件驱动编程,也就是“消息队列”和“消息循环”。有2个涉及消息的函数十分常用:GetMessage( )和DispatchMessage( )。一般还需要common.h。 - X2 Q7 T' ^3 N: f3 Y# U4 E- v" |; c. b0 e
其编程与VC++编程所用消息处理函数极为相似,下面将介绍一些简单而又基本的GUI元素:主窗口、静态文本框、编辑框、按钮、进程条、对话框以及一些基本的图形操作 5 j2 I2 B1 Y/ @0 M ) d l( v3 k( |' w一些常用的消息处理函数如下:' r) M U$ \6 N) p7 c5 v$ K+ U
& `# K$ X. U C8 w5 {2 i输出文本 MEG_PAINT(使用TextOut()函数) , J( D$ q7 F6 }6 f3 r2 K6 s" T+ Q- H
设置像素点颜色 SetPixel() 9 N" Q0 K' E( k$ |2 i 4 P! }* O3 g1 d& ]画线条 LineTo() 4 _; u+ k: N6 S" E# j9 k
: z7 v$ M# H" y* S5 t画矩形 Rectangle() , g# C, b5 [- ^& I7 L6 a3 Z6 d2 d5 m ]% w9 {4 q
画圆形 Circle() + t9 O. E" ~/ V F2 G) c# p& `. }8 y" y `9 w1 E) Q& C) Z7 a
设置画笔颜色 SetBrushColor() / ^7 E( m* e3 B) C- _5 L
' V: G: m2 Y% C创建窗口 MES_CREATE . I- O- n# C5 u2 n+ X6 v
8 c: e8 _' W+ @/ X& t+ M* H3 i
创建主窗口 CreateMainWindow(&CreateInfo) 5 F) F( z6 y7 ~9 {% U, L$ |1 ~" }( q( l3 {, d& ~3 Z1 V
此外,大多数控件都可以使用CreateWindow()函数创建。 : Q" w: b& x v! K3 | 8 U. D; u+ j; \4 ^5.2 RTOS开发平台8 q$ R* e+ {, }+ }; s6 h* M2 j
0 M0 K7 o6 N. v* V" _" Q
通用计算机具有完善的操作系统和应用程序接口(API),是计算机基本的、不可分离的一部分,应用程序的开发以及完成后的软件都在平台上运行,但一般不是实时的。嵌入式系统则不同,应用程序可以没有操作系统而直接在芯片上运行,但是为了合理调度多任务、利用系统资源、系统函数以及专家库的接口,用户必须自行选配RTOS平台,这样才能保证程序执行的实时性,稳定性和可靠性,并减少开发时间,保证软件质量。9 ~' T! O. x2 v* q3 B0 I
' F' |, }/ ?/ m) L3 O实时操作系统是一段在嵌入式系统启动后首先执行的背景程序,用户的应用程序是运行于RTOS之上的各个任务,RTOS根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在RTOS支持的系统中,每个任务均有一个优先级,RTOS根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。在编写程序时,可以分别编写各个任务,从而减少了程序编写的工作量,而且减小了出错的可能,保证最终程序具有高可靠性。RTOS体现了一种新的系统设计思想和一个开放的软件框架,用户可以在不大量变动系统其它任务的情况下增加或去掉一个任务;一个项目开发的过程中,可以有多个工程师同时进行系统的软件开发,每个人之间只要制定好规程和协议即可,既缩短了开发时间,又降低了最终软件产品对于具体某个开发者个人的依赖性。为RTOS设计的成熟和通用的任务可以以库函数的形式供其他人继续利用,与C++语言的设计思想一致。 u7 v: T M/ f, m# \