嵌入式linux并行通信,嵌入式Linux

博客列表

发表于:2011-03-16 11:56:38 |

分类:嵌入式Linux

浏览( ) |

评论( )

编辑

删除

作者:曹忠明,华清远见嵌入式学院讲师作为一个嵌入式linux的业内人士(脸红ing,呵呵!),我需要一个我自己的环境,我选择我喜欢,我选择了Ubuntu这个系统,虽然这个系统有些方面不如redhat、fadero这些系统,如软件包不是很全。但是发现问题、解决问题才能学到更多的东西吗!Ubuntu有友好的用户界面和简单易学的软件管理机制、适用于初学linux的人!说了这么多的废话了,来点实的,在这里我搭建一个属于我的开发环境:这里说明一下:Ubuntu是一个对网络依赖比较大的系统所以连接好网络我们开始一、安装ubuntu8.10二、修改源# sudo vi /etc/apt/sources.listdeb ftp://ftp3.tsinghua.edu.cn/mirror/ubuntu/ubuntu/或直接在系统->系统管理->软件源选择软件源三、更新源列表# sudo apt-get update四、安装中文环境 :系统->系统管理->语言支持在“支持的语言”列表中选中“汉语”右边的复先框,点“确定”五、安装 vim(系统自带

发表于:2011-03-14 16:13:52 |

分类:嵌入式Linux

浏览( ) |

评论( )

编辑

删除

作者:孙晓明,华清远见嵌入式学院讲师同学们在做练习的时候,编译完程序,执行的时候,有时会莫名的出现 “Segment fault”,即段错误,段错误是让许多C程序员都头疼的提示,因为对于这种模糊的提示,很难判断错误在哪里。那么什么事段错误呢?以及怎么发现程序中的段错误以及如何避免发生段错误呢?1.什么是段错误?所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的代码段以及数据段的起始地址以及与此相应的段限和页面交换还有程序运行级别还有内存粒度等等的信息。一旦一个程序发生了越界访问,cpu就会产生相应的异常保护,于是segmentation fault就出现了。通过上面的解释,段错误应该就是访问了不可访问的内存,这个内存区要么是不存在的,要么是受到系统保护的。2.那什么操作会引起段错误呢?粗略的分一下类:1)往受到

发表于:2011-03-09 18:35:39 |

分类:嵌入式Linux

浏览( ) |

评论( )

编辑

删除

作者:穆煜,华清远见嵌入式学院讲师近年来手持式设备、消费类电子产品得到了飞速的发展。随着这些产品用户的增多,对其用户界面也提出了越来越多的要求。在这类产品刚进入市场的时候,例如,手机、PDA、数字机顶盒等,这类产品的用户界面都比较单一,而到了今天,我们可以看到,在市场销售的这些电子产品都具有漂亮的图形用户界面,甚至要求能够支持全功能的浏览器,使得用户能够随时随地进行网络信息的浏览。但是,由于消费类电子的成本敏感性特点,这些产品大多数希望建立在一个有限占用系统资源的轻量级GUI系统之上,这与 PC机中 GUI 系统有根本性的区别。另外一个轻量级GUI系统的需求存在于工业控制领域、由于工业控制领域对实时性的要求比较高,所以这些系统也不希望建立在庞大的、响应迟缓的GUI系统之上。尤其是在实时Linux系统出现以后,由于Linux系统的稳定性、可靠性、易移植性以及其广泛的软硬件支持,Linux 系统在工业领域也得到越来越多的应用,而一个轻量级的GUI系统也正是这类系统所需要的。从用户的观点来看,GUI是系统的一个最至关重要的方面:用户通过 GUI 与系统进行交互, 所以 GUI 应该易于使用并且非常可靠。

发表于:2011-03-04 12:00:18 |

分类:嵌入式Linux

浏览( ) |

评论( )

编辑

删除

作者:曾宏安,华清远见嵌入式学院高级讲师学习过编程的朋友都知道ANSI C里定义的标准I/O是一种带缓冲的高级磁盘I/O,目的是尽可能减少使用read和write系统调用的次数,从而提高I/O效率。标准I/O提供了3种类型的缓冲类型。● 全缓冲。在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。对驻留在磁盘上的文件的访问通常是由标准I/O库实施全缓冲的。● 行缓冲。在这种情况下,当在输入和输出中遇到新行符时,标准I/O库执行I/O操作,这允许我们一次输出一个字符(如fputc函数),但只有写了一行之后才进行实际I/O操作。当流涉及一个终端时(例如标准输入和标准输出),典型地使用行缓冲。● 不带缓冲。标准I/O库不对字符进行缓冲。如果用标准I/O函数写若干字符到不带缓冲的流中,则相当于用write系统调用将这些字符写到打开的文件上。标准出错况stderr通常是不带缓存的,这就使得出错信息可以尽快显示出来。这里强调一下,所谓的带不带缓冲指的是不同的流而不是函数。比如驻留在磁盘上的文件流是全缓冲的方式,标准输入/输出流缺省是行缓冲而标准错误不带缓冲。行缓冲是指当遇到换行符’\n&rs

发表于:2011-03-01 14:37:25 |

分类:嵌入式Linux

浏览( ) |

评论( )

编辑

删除

作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM ATC授权培训讲师。在计算机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信。而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种方式。1、异步串行方式的特点所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是同步的。异步串行通信的特点可以概括为:①以字符为单位传送信息。②相邻两字符间的间隔是任意长。③因为一个字符中的比特位长度有限,所以需要的接收时钟和发送时钟只要相近就可以。④异步方式特点简单的说就是:字符间异步,字符内部各位同步。2、异步串行方式的数据格式异步串行通信的数据格式如图8-1所示,每个字符(每帧信息)由4个部分组成:①1位起始位,规定为低电0;②5~8位数据位,即要传送的有效信息;③1位奇偶校验位;④1~2位停止位,规定为高电平1。图1 异步串行数据格式3、同步串行方式的特点所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步。同步串行通信的特点可以概括为:①以数据块为单位传送信息。②在一个数据块(信息帧)内,字符与字

发表于:2011-02-25 20:48:56 |

分类:嵌入式Linux

浏览( ) |

评论( )

编辑

删除

作者:曹忠明,华清远见嵌入式学院讲师。ls命令是linux下最常用的命令之一,它的使用很简单,可是功能却很多,有很多的参数,这里我们就自己写一个ls命令,实现ls基本的功能。在这之前我们先介绍几个在实现ls过程中使用的函数。stat/lstat函数这两个函数功能基本相同,都是获得文件的属性,区别在于如果文件是符号链接stat返回的是符号链接指向文件的属性,而lstat返回的是符号链接本身的属性。函数原型:int stat(const char *path, struct stat *buf);         int lstat(const char *path, struct stat *buf);path为文件路径,buf为返回的状态,类型为struct stat,结构体内容为:struct stat {                dev_t

发表于:2011-02-17 23:32:23 |

分类:嵌入式Linux

浏览( ) |

评论( )

编辑

删除

作者:孙晓明,华清远见嵌入式学院讲师。【实验环境】1、主 机:Fedora9 DVD 发行版         2、目标机:mini2440友善之臂         3、源码包:         ftp://ftp.qtsoftware.com/qt/source/qt-embedded-linux-opensource-src-4.5.2.tar.gz         4、编译器 arm-linux-gcc-4.1.2         http://qtextended.org/downloads/toolchains/arm920t-eabi.tgz我这几天移植qt-embedded-linux-opensourc

发表于:2011-02-16 12:14:04 |

分类:嵌入式Linux

浏览( ) |

评论( )

编辑

删除

作者:曾宏安,华清远见嵌入式学院讲师。某些时候,我们需要在应用程序中捕获网卡收到的所有数据包并进行分析。为了实现这一功能,应用程序需要借助底层系统的支持。当今主流的操作系统都提供了一个很强大的功能:允许应用程序访问数据链路层。类UNIX操作系统上提供了三种不同的方式访问数据链路层,分别是BSD的BSD分组过滤器(BPF)、SVR4的数据链路提供者接口(DLPI)和Linux的SOCK_PACKET接口。幸运的是,程序员不需要了解这些不同接口的细节,直接使用Libpcap函数库就可以。Libpcap是一个提供了针对网络数据包捕获系统的高层接口的开源函数库。其作用是提供独立于平台的应用程序接口,以消除程序中针对不同操作系统所包含的数据包捕获代码模块。这样以来,就解决了程序移植性的问题,有利于提高开发的效率。Libpcap运行于大多数类UNIX操作系统上,完整的文档和源码可以从tcpdump的官方网站上获得: http://www.tcpdump.org 其Windows版本 Winpcap可已从 http://www.winpcap.org获取。下面介绍如何使用Libpcap来捕获数据包char *pcap_lo

发表于:2011-02-15 13:52:09 |

分类:嵌入式Linux

浏览( ) |

评论( )

编辑

删除

作者:冯利美,华清远见嵌入式学院讲师。TCP连接建立在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。服务器必须准备好接受外来的连接。这通过调用socket、 bind和listen函数来完成,称为被动打开(passive open)。第一次握手:客户通过调用connect进行主动打开(active open)。这引起客户TCP发送一个SYN(表示同步)分节(SYN=J),它告诉服务器客户将在连接中发送到数据的初始序列号。并进入SYN_SEND状态,等待服务器的确认。第二次握手:服务器必须确认客户的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。服务器以单个字节向客户发送SYN和对客户SYN的ACK(表示确认),此时服务器进入SYN_RECV状态。第三次握手:客户收到服务器的SYN+ACK。向服务器发送确认分节,此分节发送完毕,客户服务器进入ESTABLISHED状态,完成三次握手。图1:TCP握手建立连接客户端的初始序列号为J,而服务器的初始序列号为K。在ACK里的确认号为发送这个ACK的一端所期待的下一个序列号。因为SYN只占一个字节的

发表于:2011-02-14 15:16:52 |

分类:嵌入式Linux

浏览( ) |

评论( )

编辑

删除

作者:王海宁,华清远见嵌入式学院讲师。上次我们分析了数组名面试题目的前2个题目,下面我们再看下后面2道题目的解决思路。上次题目的内容为:1、 有一个一维数组int a1[10],定义一个指针,指向一维数组名。        2、 有一个一维数组int a2[10],定义一个指针,指向一维数组名的地址。        3、 有一个二维数组int a3[3][4],定义一个指针,指向二维数组名。        4、 有一个二维数组int a4[3][4],定义一个指针,指向二维数组名的地址。还记得前2道题的分析方法吗,第一个题,应该定义一个int *p的指针来指向一维数组a1(这个是比较简单的)。而第二个题目为定义int (*p)[10]来指向一维数组a2的地址。我们这次先分析后面面两道题:int a3[3][4]为二维数组,大家都知道他的物理意义是3行4列,但是我们都知道,计

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值