首页 > 范文大全 > 正文

嵌入式操作系统功能分析及简化研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇嵌入式操作系统功能分析及简化研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:该文研究的嵌入式操作系统为Wince,硬件核心是ARM微处理器S3C2440A,通过platform builder对BSP包进行适量的剪裁和移植使其能够在硬件系统中运行,改文编写了Wince下的文件操作程序,使其能够在为Wince系统下对文件进行读写操作。在网络通信方面,编写了Wince系统和PC机相互通信的C/S模式的控制程序,通过程序实现Wince系统与PC机之间文件的传送。

关键词:嵌入式;操作系统;Wince

中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)08-1848-03

计算机技术的不断发展,越来越多的地方要运用到嵌入式操作系统,在工业控制上就需要特制的嵌入式操作系统来实行对工业操作精确、有效的控制。嵌入式操作系统功能分析简化研究硬件核心ARM微处理器S3C2440A是韩国三星公司生产的32位RISC微处理器。S3C2440A采用了ARM920t的内核,0.13um的CMOS标准宏单元和存储器单元。

1嵌入式系统平台设计

NK.BIN是系统配置文件和定制的OS核心模块合并后经编译形成的一个二进制文件,NK.BIN的构建就是对构成OS的模块进行配置、链接、定址以生成可启动OS镜像的过程,在嵌入式平台创建过程中完成。根据视频监控功能需求,主要是选择BSP以及对OS各模块特性进行定制。

1)添加BSP。

2)定制平台。

选择添加的S3c2440的BSP作为作为嵌入式平台的底板支持,此BSP提供了一定的设备驱动和技术支持。实现对嵌入式操作系统的移植和剪裁。

3)烧写平台。

将定制好的平台烧写入ARM中,把生成的XIPKERNEL.bin、EBOOT.nb0、xip.bin文件烧写到硬件系统中。

4)驱动编写。

由于三星生产的S3C2440A没有关于ADC设备的驱动,为了研究设备驱动而需要编写此驱动。

2 ADC驱动测试程序

为了能够测试编写的ADC驱动是否可行,而编写了此测试程序。ADC驱动测试程序是MFC编程,运用C++语言进行编程,在对话框中有三个按钮,分别为“开ADC”、“关ADC”、“开始采样”以及两个显示数据的区域。通过点击“开ADC”按钮来打开ADC,点击“关ADC”按钮来关闭ADC,点击“开始采样”按钮开始进行采样,采样的数据来自ADC设备的通道0,1的电压数据,显示在对话框中。

“开ADC”按钮代码:

void CADCTtestDlg::OnOpenAdc()

{

hFile = CreateFile(TEXT(“ADC1:”), GENERIC_READ|GENERIC_WRITE, 0,

NULL, OPEN_EXISTING, 0, NULL);

if (hFile == INVALID_HANDLE_VALUE)

{

MessageBox(_T(“打开ADC驱动失败!”));

return;

}

else

MessageBox(_T(“打开ADC驱动成功!”));

Cbutton *pOpenButton = (Cbutton*)GetDlgItem(IDC_OPEN_ADC);

Cbutton *pCloseButton = (Cbutton*)GetDlgItem(IDC_CLOSE_ADC);

pOpenButton->EnableWindow(FALSE);

pCloseButton->EnableWindow(TRUE);

}

“开始采样”按钮代码:

void CADCTtestDlg::OnSample()

{

Cbutton *Key;

Key = (Cbutton*)GetDlgItem(IDC_SAMPLE);

if (hFile == INVALID_HANDLE_VALUE)

{

MessageBox(_T(“ADC驱动未打开!”));

Key->SetWindowTextW(_T(“开始采样”));

Key->SetCheck(0);

return;

}

SetTimer(1, 20, NULL);}

3 Wince文件操作程序

为了能实现在Wince系统下实现对文件的操作,编写一个文件操作的程序。

Wince文件操作有三种方法:

1)使用MFC的Cfile类。

2)基于C的使用FILE结构体。

3)采用WinCE的API。

本文运用的是MFC的Cfile类,打开用Open(),关闭用Close(),文件指针移动用Seek,读文件用Read(),写文件用Write(),获取文件属性可以使用GetFileStatus方法。

MFC对话框中有读,写,清空三个按钮,分别用于读文件,写文件,以及清空。此程序建立的Wince文件为.dat文件,主要用于数据的存储。通过Open()来建立文件,通过Write()函数,将数据写入文件中。

写按钮代码:

void CfileDlg::OnButtonWrite()

{

// TODO: Add your control notification handler code here

Cfile MyFile;

UpdateData(true); //更新数据

if(m_FileName!=_T(“”)) //文件名不能为空

{

if(!MyFile.Open(_T(“\\”+m_FileName+”.dat”),Cfile::modeCreate|Cfile::modeWrite))

{ //创建文件

AfxMessageBox(_T(“open File faled”)); //创建失败,返回

return;

}

MyFile.SeekToBegin(); //文件指针到文件头

MyFile.Write (m_Content,m_Content.GetLength()*2); //写文件

MyFile.Close (); //关闭文件

AfxMessageBox(_T(“Write OK”)); //输出写成功消息

}

else

AfxMessageBox(_T(“Please Input File Name”)); //文件名为空

}

4 Wince系统与PC机之间的通信程序

Wince系统已经能够和PC机通过串口和USB接口通信了,为了研究wince系统的通信和网络特性,让PC机和wince系统用网口连接,而编写一个能够通过PC机发送命令给wince系统,当系统接收到命令时将文件发送给PC机。此程序分为服务器端和客户端,PC机上的是服务器端,而wince系统上的为客户端。

通信程序流程为:

1)打开PC机服务器端及wince系统的客户端。

2)Wince系统客户端发送连接请求建立连接。

3)建立连接后,PC机向wince系统发送“createfile”命令

4)CE系统接收到PC机的命令后向PC机发送“ready”命令告知PC机。

5)PC机接收到CE系统命令后建立文件并向CE系统发送“sendthefile”命令。

6)CE系统接收到PC机命令后开始读取文件数据并向PC机发送数据。

通信程序编写:

1)服务器应用了微软提供的win32的API-winsock,通过微软提供的API就把TCP/IP通信所需要的数据包标准定义,网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口,而Socket数据结构中包含这五种信息。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。

2)客户端是应用在wince系统上的,wince的网络编程和win32是不太一样的,原理相通但是缺了很多API。使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。

读取文件数据函数:

void CTCPClientDlg::readData()

{

CFile MyFile;

TCHAR str[1024];

DWORD count;

ZeroMemory(str,1024);

if(!MyFile.Open (_T("\\ResidentFlash\\sample.dat"),CFile::modeRead)) //打开文件

{

AfxMessageBox(_T("open File faled"));

return; //创建失败,返回

}

long dwLength =MyFile.GetLength(); //得到文件长度

count=MyFile.Read (str,dwLength); //读文件

m_sendData=str; //将文件内容输出到编辑框

MyFile.Close (); //关闭文件

AfxMessageBox(_T("Read OK")); //输出读成功消息

}

5小结

该文的研究具有非常强的实际意义,WinCE是一个紧凑的、高效且可扩展的32位操作系统,支持多种处理器产品,也可自己开发相关硬件的BSP包,允许开发人员选择合适硬件。

参考文献:

[1]斯洛斯. ARM嵌入式系统开发――软件设计与优化[M].北京:北京航空航天大学出版社,2005.

[2]傅曦,陈黎.Windows CE嵌入式开发入门――基于Xscale架构[M].北京:人民邮电出版社,2006.

[3]时斌,王奔,朱晓舒.基于ARM9的嵌入式Web服务器的移植和应用[J].微计算机信息,2009(26).