作者:韦东山,华清远见嵌入式学院讲师。
随着嵌入式行业硬件平台的性能增强,项目需求和功能日益复杂,ARM公司推出的 CORTEX-M3,更是让以往做单片机的工程师在芯片和技术选型面临两难选择,本专题将从芯片价格、整个系统的硬件软件设计及维护的成本等各个方面给您提供一个参考, 并从技术角度分析单片机和带操作系统的系统的软件开发的异同点。
● 1.单片机与ARM等新处理器的价格比较
● 2.带操作系统与不带操作系统的软件开发的区别
● 2.1.驱动开发的区别
● 2.2.应用程序开发的区别
1. 单片机与ARM等新处理器的价格比较
表1
型号
架构
资源
价格(元)
AT89S51
8051
最高频率33MHz
4KB Flash
128B内部RAM
32个可编程IO引脚
两个16bit的计数器
一个UART口
4
SST89E564RD
8051
最高频率40MHz
64KB Flash
1KB内部RAM
32个可编程IO引脚
三个16bit的计数器
一个UART口
一个SPI接口 ......
转自:http://blog.itpub.net/post/33256/413374/
怎么样在红帽企业Linux2.1上配置VNC?
怎样配置VNC服务器使其能在红帽企业Linux3系统引导时自动启动?
怎
么样在红帽企业Linux2.1上配置VNC?
解决方法:1. 首先,我们需要查看是否已经安装了需要的VNC包。作为根用户,运行这个命令:
rpm
-qa | grep vnc
如果RPM命令的输出有vnc-doc,
vnc-server和vnc,到第二步。如果RPM命令没有输出,运行这个命令来安装需要的包,然后到第二步:
up2date vnc
vnc-server vnc-doc
这里假设你的系统已经注册到红帽网络(RHN)并且你有一个活跃的授权。否则,你需要从安装介质中安装
RPM包。
2. 作为VNC的用户登陆,或者切换成该用户(用 su - username
)。如果VNC需要被配置成多用户,重复步骤2到4, 当所有用户都被设置好后,执行第五步。
3.
执行这个命令,用一个大于零的数字代替Z。
vncserver :Z
数字Z代表X会话,用户永久性的分配这个数字给他们的
基于VNC的X会话。
注:在本教程中,每次出现字母Z,都应该被替换成适当的数字,代表用户配置的基于VNC的X会话。在控制台运行的X
会话使用数字0,所以Z应该等于或者大于1。一个基于VNC的X会话配置的每个用 ......
Linux环境进程间通信(一)
管道及有名管道
级别: 初级
郑彦兴 (mlinux@163.com)国防科大计算机学院
2002 年 12 月 11 日
在本系列序中作者概述了 linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 认清管道和有名管道的读写规则是在程序中应用它们的关键,本文在详细讨论了管道和有名管道的通信机制的基础上,用实例对其读写规则进行了程序验证,这样做有利于增强读者对读写规则的感性认识,同时也提供了应用范例。
1、 管道概述及相关API应用
1.1 管道相关的关键概念
管道是Linux支持的最初Unix IPC形式之一,具有以下特点:
管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;
只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);
单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。
......
这两天同事在Octeon开发板上调试Linux程序,遇到了一个问题:无法让gdb单步跟踪进入静态库(libcrypto.a和libcvmx.a)对应的源文件。
我自己在PC上写了一个小程序进行验证,发现果然是这样。如果把全部.o文件(用-ggdb3选项编译,带调试信息)直接编译成可执行文件,是可以跟踪进入.o文件对应的源文件的;如果先把其中几个.o文件用ar命令打包成静态库,再和主程序的.o文件一起编译成可执行文件,gdb就跟踪不进去了。
观察了一下.a文件和.o文件的大小,我发现.a文件的体积远远小于全部.o文件的总和,看来是在打包的过程中把调试信息弄丢了。上网查了一下,发现只要使用-s(小写s,不是大写S)选项,就可以在.a文件中保留符号信息。
于是先修改$OCTEON_ROOT/components/crypto-api/core/crypto.mk文件的第22行,将“CFLAGS_CRYPTO += -O2”改为“CFLAGS_CRYPTO += -ggdb3”,再修改$OCTEON_ROOT/components/crypto-api/core/crypto/crypto.mk文件的第146行,将“$(AR) -r $@ $^”改为“$(AR) -rs $@ $^&r ......
功能说明:查找文件。
语 法:which [文件...]
补充说明:which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
参 数:
-n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息。
例子
$ which rsync
/usr/bin/rsync
例子
#! /bin/sh
mrsync=$(which rsync)
echo $mrsync ......
关于linux下两种内存引导模式的区别
Linux 的 initrd 技术是一个非常普遍使用的机制,linux2.6 内核的 initrd 的文件格式由原来的文件系统镜像文件转变成了 cpio 格式,变化不仅反映在文件格式上, linux 内核对这两种格式的 initrd 的处理有着截然的不同。
initrd 的英文含义是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前, boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。在 boot loader 配置了 initrd 的情况下,内核启动被分成了两个阶段,第一阶段先执行 initrd 文件系统中的"某个文件",完成加载驱动
模块等任务,第二阶段才会执行真正的根文件系统中的 /sbin/init 进程。这里提到的"某个文件",Linux2.6 内核会同以前版本内核的不同,所以这里暂时使用了"某个文件"这个称呼,后面会详细讲到。第一阶段启动的目的是为第二阶段的启动扫清一切障爱,最主要的是加载根文件系统存储介质的驱动模块。我们知道根文件系统可以存储在包括IDE、SCSI、USB在内的多种介质上,如果将这些设备的驱动都编译进内核,可以 ......