《嵌入式linux系统设计.ppt》由会员分享,可在线阅读,更多相关《嵌入式linux系统设计.ppt(34页珍藏版)》请在人人文库网上搜索。
1、嵌入式linux系统设计基于ARM9,1,目录,小组分工 项目简介 三星S3C2440 图形界面设计 Q /*以读写方式打开串口*/ fd = open( /dev/ttyS0, O_RDWR); if (-1 = fd) /* 不能打开串口一*/ perror( 提示错误!); ,closed(fd),18,串口操作2,设置串口 1、奇偶校验 2、停止位位数 3、波特率,struct termio unsigned short c_iflag; /* 输入模式标志 */ unsigned short c_oflag; /* 输出模式标志 */ unsigned short c_cflag; 。
2、/* 控制模式标志*/ unsigned short c_lflag; /* local mode flags */ unsigned char c_line; /* line discipline */ unsigned char c_ccNCC; /* control characters */ ;,19,串口操作3,读取数据 发送数据,char buff1024; int Len; int readByte = read(fd,buff,Len);,char buffer1024; int Length; int nByte; nByte = write(fd, buffer ,Leng。
3、th),20,XML (Extensible Markup Language),21,可扩展标记语言 数据存储语言 XML在开发语义网络的过程中将起重要作用 我们需要交换的数据实体经常要根据自身、合作方的需要变化; 合作方给我们的数据实体也常常变化; 随着SOA和Enterprise 2.0概念的推出,数据实体本身从多个源mash up出来,同时数据实体本身也被反复的拼装和组合; 随着业务的细化,我们总是希望获取越来越丰富,同时也越来越详尽的信息;,XML, 1 1 0 0 0 ,washer.xml,22,XML,根节点,XML,washer,Device,Cluster,Cluster,s。
4、witch,status,status,status,status,23,ARM-linux-gcc,交叉编译 简单地说,就是在一个平台上生成另一个平台上的可执行代码 1、下载此源代码 2、解压并安装 具体过程(略) 3、将/usr/local/arm/3.4.1/bin/arm-linux-gcc 拷到PC机/bin目录下,24,miniXMl移植,Pre:在linux中搭建好了arm-linux-gcc编译器 1、下载miniXML (http:/www.minixml.org) 2、解压,进入mxml-2.6目录,运行./configure配置文件,进行交叉编译所需Makefile文件的。
5、生成,在生成之前需要修改配置参数,具体的配置参数可以通过运行./configure -help进行查看,在本系统中,需要配置的项如下: 添加交叉编译指示:-host=arm; 调整器:CC=arm-linux-gcc 设置C编译指示:CFLAGS = -I /usr/local/arm/3.4.1/usr/include/ 设置链接指示:LDFLAGS = -B /usr/local/arm/3.4.1/usr/libo 3、运行./configure,后面跟上按如上步骤设置好的参数,配置完成后,当前目录下会生成一个交叉编译需要的文件。打开此Makefile文件,继而修改AR=arm-linu。
6、x-ar,RANLIB=arm-linMakefileux-ranlib保存 4、执行make命令就可以在当前目录生成静态库文件libmxml.a,依据这个库文件,结合源码包里面提供的mxml.h头文件,就可以进行XML解析相关的程序设计。,25,miniXML,常用的几个函数: 1、mxmlNewXML 2、mxmlNewElement 3、mxmlAdd 4、mxmlDelete 5、mxmlElementDeleteAttr 6、mxmlElementGetAttr 7、mxmlFindElement 8、mxmlLoadFile 9、mxmlSaveFile,26,一个简单的例子,#i。
7、nclude #include #include #include int main() char c; FILE *fp; mxml_node_t *tree,*node; fp = fopen(washer.xml, r); tree = mxmlLoadFile(NULL,fp,MXML_TEXT_CALLBACK); node = mxmlFindElement(tree,tree,switch,NULL, NULL,MXML_DESCEND); c=node-value.text.string; if(c=”1”) printf(“目前洗衣机正在运行”); else printf(“。
8、目前洗衣机关闭”); fclose(fp); return 0; ,rootlocalhost/# arm-linux-gcc I/usr/local/arm/3.4.1/usr /include c washer.c /生成目标文件 washer.o rootlocalhost/# arm-linux-gcc B/usr/local/arm/3.4.1/usr /libo o washer washer.o libmxml.a /生成可执行程序,washer.c,27,图形界面,MiniGUI 是一款面向嵌入式系统的高级窗口系统(Windowing System)和图形用户界面(Graphi。
9、cal User Interface,GUI)支持系统,开发语言是C。 Qt/Embeded是一个支持多操作系统平台的应用程序开发框架,这经的开发语言是C+。 We choose MiniGUI ! MiniGUI特点: 小巧和可配置 多线程和多窗口 对话框和标准控件 消息和消息循环 图形和输入抽象层 多字体和多字符集支持,28,miniGUI的移植,具体步骤: 1,在PC上建立交叉编译环境 一般的编译C文件:gcc 选项 文件 交叉编译C文件:arm-linux-gcc 选项 文件 2,在PC上安装minigui资源,包括字体、位图、图标等等。 3,把安装的资源文件通过传输工具放入开发板的指。
10、定位置。 4,在PC上安装编译minigui,生成编写minigui所需的一些库文件和配置文件。 5,把生成的库文件和配置文件移植到开发板上 到此为止就已经搭建好了miniGUI的开发环境 6,交叉编译所写好的的miniGUI程序,生成可执行文件。 7,把可执行文件移植到开发板上,在开发板上进行一些配置后就可运行了,1,PC上LINUX操作系统或在Vmvare上建立linux系统的虚拟机。 2,超级终端或SecureCRT等可通过串口控制终端的和向终端传输文件的软件,29,miniGUI的移植,编译安装libminigui-1.6.0.tar.gz rootlocalhost/# cd /mi。
11、nigui/compressed rootlocalhost compressed#tar xzvflibminigui-1.6.0.tar.gz C ./source rootlocalhost compressed# cd ./source/libminigui-1.6.0 rootlocalhostlibminigui-1.6.0# ./configure -prefix=/home/ -host=arm-linux -target=arm-linux -build=i386-linux CC=arm-linux-gcc -with-osname=linux -with-style=cl。
12、assic-with-targetname=fbcon -enable-autoial -enable-commial -enable-rbf16 -disable-vbfsupport rootlocalhostlibminigui-1.6.0# make rootlocalhostlibminigui-1.6.0# make install 把/home/lib目录下的所有库文件(注:-prefix=/home/)拷贝到开发板上的/lib目录下,把/home/etc下的MiniGUI.cfg拷贝到开发板上的/etc目录下。,需要的源代码 开发库:libminigui-1.6.0.tar.g。
13、z 资源文件:minigui-res-1.6.10.tar.gz 示例程序:mg-samples-str-1.6.2.tar.gz,30,miniGUI,1,常用的头文件 commom.h minigui.h gdi.h window.h control.h 2,一些常用的函数 int MiniGUIMain(int argc, const char* agrv) hMainWnd = CreateMainWindow( 窗口过程函数 : Example: static int HelloWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam),31,一个简单的例子,Hello world,交叉编译,32,回顾,33,信号,共享内存,Q&A,拒绝回答的问题: 1、太难的 2、太复杂的 3、我们不懂的,34。