自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (2)
  • 收藏
  • 关注

原创 内嵌汇编的语法

<br />在gcc中,可以使用__asm__表示后面的代码为内嵌汇编代码,__volatile__表示编译器不要优化代码,后面的指令保留原样,内嵌汇编语法如下:<br />__asm__(汇编语句模板:输出部分: 输入部分: 破坏描述部分) <br />1.汇编语言模板<br />语句之间使用";"、"/n"或"/n/t"分开。指令中的操作数可以使用占位符引用C语言变量,操作数占位符最多为10个,名称如下:<br />%0,%1,...,%9 <br />指令中使用占位符表示的操作数,总被视为long型(

2010-12-31 00:34:00 741

原创 DirectFB调试环境(directfbrc)

<br />/etc/directfb这个文件加入参数:<br />system=<system><br />指定使用的图形系统。默认使用linux的帧缓冲(fbdev),但你也能够运行directfb应用程序在SDL(sdl)上。<br /> <br />fbdev=<device><br /> <br />busid=<id><br /> <br />mode=<width> x <height><br />设置默认的屏幕分辨率。如果没有指明具体模式,DirectFB将会采用/etc/fb.modes文

2010-12-26 13:36:00 1954

原创 Bootloader启动流程分析

<br />Bootloader的启动流程一般分为两个阶段:stage1和stage2,下面分别对这两个阶段进行讲解:<br />1.stage1<br />(1)完成基本的硬件初始化。初始化的工作主要包括屏蔽所有的中断、设置CPU的速度和时钟频率、RAM初始化、初始化LED、关闭CPU内部指令和数据cache等。<br />(2)为加载stage2准备RAM空间。为了更快执行速度,通常把stage2加载到RAM空间中来执行,因此必须为加载Bootloader的stage2准备一段可用的RAM空间范围。<b

2010-12-22 16:21:00 3209

原创 Bootloader

<br />在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由Bootloader来完成。<br /> <br />Bootloader就是在操作系统内核运行之前运行的一段程序,类似于PC机中的BIOS程序。<br />Bootloader的功能是完成硬件设备的初始化、建立内存空间的映射图的功能,将系统的软硬件环境带到一个合适的状态,为最终调用系统内核做好准备。<br />嵌入式Bootloader一般都非常依赖于硬件,建立一个通用的Bootloader几乎是不可能的。Bo

2010-12-22 15:50:00 578

原创 GCC编译流程分析

<br />1.预处理结点<br /> <br />GCC的选项“-E”可以使编译器在预处理结束时就停止编译<br />gcc -E -o hello.i hello.c<br />后缀名“.i”的文件是经过预处理的C原始程序。<br /> <br />2.编译阶段<br />GCC的选项"-S"能使编译器在进行完编译之前就停止。<br /> <br />3.汇编阶段<br />汇编阶段把编译阶段生成的“.s”文件生成目标文件,在此使用“-c”就可以查看到汇编代码转化为".o"的二进制目标代码了。<br /

2010-12-22 15:27:00 397

原创 DirectFB Reference API Overview - Function Types

<br />DFBDisplayLayerCallback<br />Called for each existing display layer. "layer_id" can be used to get an interface to the layer.<br /> <br />DFBGetDataCallback<br />Called for each block of continuous data requested, e.g. by a Video Provider. Write as m

2010-12-21 22:36:00 474

原创 DirectFB Reference API Overview - Interfaces

<br />IDirectFB<br />Main interface of DirectFB, created by DirectFBCreate().<br /> <br />IDirectFBSurface<br />Interface to a surface object, being a graphics context for rendering and state control, buffer operations, palette access and sub area translat

2010-12-21 22:30:00 948

转载 基于fusion的DirectFB消息流

在传统的DirectFB应用中,所有的应用程序都在一个进程中,在性能上有一些优势,然而一个应用程序不稳定会造成整个系统的不稳定。若采用C/S模型,无疑是重蹈XWindow的覆辙,会丧失性能上的优势。所以DirectFB采用了另外一种方式,与C/S相区别,称之为主从模型(Master/Slave)。它加了一个称之为fusion的内核模块。Fusion是熔化的意思,多个应用程序在不同的进程空间,通过这个内核模块通信,在这里,一切都溶为一体了。Master应用程序负责初始化一个称为竞技场的东西,其它Slave应用

2010-12-21 22:07:00 888

原创 信号

<br />#include <signal.h><br />#include <sys/wait.h><br />在父进程中注册子进程退出时操作:<br />子进程退出函数child_wait:<br />static void child_wait (int sig){ int pid; int status; while ((pid = waitpid (-1, &status, WNOHANG)) > 0) { if (WIFEXITE

2010-12-21 14:49:00 342

原创 多字符串查找

<br />没看懂,用示例程序中的程序运行,居然出错,可能是我使用用法不对。<br /> <br />太难了,以后需要静下心好好看看这500行代码!

2010-12-20 23:27:00 455

转载 Makefile好助手:pkgconfig

<br />http://writeblog.csdn.net/PostEdit.aspx<br />Pkgconfig提供了下面几个功能<br />1. 检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错信息,避免连接错误版本的库文件<br />2. 获得编译预处理参数,如宏定义,头文件的为位置<br />3. 获得链接参数,如库及依赖的其他库的位置,文件名及其它一些连接参数。<br />4. 自动加入所依赖的其他库的位置。<br />为了让pkgconfig可以得到这些信息,要求库的提供者,提

2010-12-20 09:49:00 405

原创 Boyer-Moore查找

<br />启发式方法#1:跳过字符<br />启发式方法#2:重复模式(没看懂)<br /> <br /> 

2010-12-19 21:11:00 270

原创 系统集成与部署

<br />1.创建目录结构<br />2.创建设备节点<br />3.添加应用程序<br />4.添加库<br />5.添加配置脚本<br />6.制作RAMDISK<br />最后设置U-Boot环境变量,让系统自动启动<br />==> setenv bootargs root=/dev/ram rw initrd=0x3080000, 8M<br />==> setenv bootcmd bootm 40000 140000<br />==> setenv bootdelay 3<br />==>s

2010-12-19 14:10:00 1001

原创 部署linux系统

<br />一、文件系统类型<br />EXT2/EXT3<br />JFS<br />cramfs<br />JFFS/JFFS2<br />YAFFS<br /> <br />二、MTD类型设备<br />MTD(Memory Technology Device)是Linux内核采纳的一种设备子系统,它为底层的存储芯片提供了统一的设备接口。MTD子系统接口如图:<br /><br />MTD芯片驱动程序必须向MTD子系统注册,通过结构体mtd_info给add_device()函数提供一组缺省的回调

2010-12-19 11:43:00 1188

原创 系统集成测试

<br />1.系统跟踪工具<br />1.1 strace<br />1.2 ltrace<br />1.3 LTT<br />LTT通过一个内核模块来监测主要的内核子系统。<br /> <br /> <br />2. 系统性能测量工具<br />2.1 代码效率测量<br />2.1.1 gprof<br />2.1.2 gcov<br />2.1.3 Oprofile<br /> <br />2.2 LTP(Linux Test Project)<br />2.3 LMbench<br /> <br

2010-12-19 00:48:00 816

原创 Busybox init启动过程分析

<br />如果使用Busybox做Ramdisk,Busybox会在内核刚完成加载后就立即启动,此后Busybox会跳转它的init进程开始执行,它的init进程主要进行以下的工作:<br />为init进程配置信号处理进程<br />对控制台进行初始化<br />解析inittab文件,即/etc/inittab<br />在默认情况下,Busybox会运行系统初始化脚本/etc/init.d/rcS<br />运行导致init暂停的inttab命令(工作类型wait)<br />运行仅执行一次的ini

2010-12-18 23:40:00 440

原创 处理内核出错信息

<br />当系统出现错误时,内核有两个基本的错误处理机制:oops和panic。<br /> <br />1.oops<br />(1)oops消息包含系统错误的详细信息<br />通常oops信息中包含当前进程的栈回溯和CPU寄存器的内容。ksymoops工具可以将机器指令转换为代码并将堆栈值映射到内核符号。<br /> <br />(2)使用ksymoops转换oops信息<br />ksymoops工具可以翻译oops信息,从而分析发生错误的指令,并显示一个跟踪部分表明代码如何被调用。它是根据内核映

2010-12-17 21:34:00 491

原创 获取内核信息

<br />1.系统请求键<br /> <br />2.通过/proc接口<br />proc文件系统是一种伪文件系统。实际上,它并占用存储空间,而是系统运行时在内存中建立的内核状态映射。可以瞬时地提供系统的状态信息。<br /> <br />在用户空间可以作为文件系统挂接到/proc目录下,提供给用户访问。可以通过Shel命令挂接。<br /> <br /> <br />3.通过/sys接口<br />sysfs文件系统是2.6内核新增加的文件系统。它也是一种伪文件系统,是在内存中实现的文件系统。它可以把

2010-12-17 21:05:00 456

原创 内核调试技术

配置内核的调试选项,"Kernel hacking"配置菜单下的各种调试选项。内核打印函数

2010-12-16 23:52:00 462

原创 linux内核启动过程分析

1、内核自引导程序arch/$(ARCH)/boot/* arch/arm/boot/compressed/head.S */2、内核vmlinux入口/* arch/arm/kernel/head.S */3、Linux系统初始化start_kernel()是内核初始化的基本过程4、挂接根文件系统Linux能够在内核中虚拟磁盘文件系统,叫做ramdisk。如果为内核配置好了ramdisk设备和文件系统,就安装好ramdisk文件系统。5、初始化设备驱动程序6、启动用户空间init进程

2010-12-16 23:00:00 325

原创 switch

<br />暴力算法-----<br />一种解决方案是使用switch语句。许多编译器会把switch语句实现为一个跳转表(jump table),而不是一系列的if/else条件(跳转表是一个已知大小的数组,其元素由指向可执行代码的指针组成)。<br /> <br />当switch语句控制大量的case时尤其如此。当使用跳转表时,switch中的变量只需测试一次,即可跳转到相应case语句的代码上。<br /> <br />不幸的是,C语言不允许在运行时评估case语句;因此,诸如case *stri

2010-12-16 21:19:00 273

原创 查找

<br />一组算法通过利用字符串属性(Boyer-Moore算法)或者通过同时查找多个目标字符串(Aho-Corasick算法以及正则表达式查找)来减少查找时间。另一组算法为多个目标字符串通过近似查找(Aho-Corasick算法,也就是正则表达式查询)来减少查询时间。<br />第二组算法则是寻找近似的匹配。可以利用模板(grep)、通过距离指标或者通过两个单词的发音(Soundex 和Metaphone)来指定近似匹配的类型。<br /> <br /> 

2010-12-16 20:35:00 285

原创 内核编译结果

<br />(1)vmlinux<br />vmlinux是在内核源码顶层目录生成的内核映像。它是内核在虚拟空间运行时代码的真实反映。编译的过程就是按照特定顺序链接目标代码,生成vmlinux。因为Linux内核运行在虚拟地址空间,所以名字附加"vm"(virtual memory)。Vmlinux不具备引导的能力,需要借助其他boot咯ader引导启动<br />(2)vmlinuz<br />vmlinuz是可引导的、压缩的内核映像,也就是zImage。它是vmlinux的压缩映像,是可执行的Linux

2010-12-15 22:27:00 659

原创 Kbuild Makefile

<br />1.Makefile的组织结构<br />.config                                    内核配置文件<br />arch/$(ARCH)/Makefile           对应体系结构的Makefile<br />scripts/Makefile.*                   所有kbuild Makefile的通用规则等定义<br />顶层目录的Makefile读取.config文件,根据.config文件中的配置选项编译内核。这个.con

2010-12-15 20:56:00 562

原创 U-Boot与内核的关系(3)

<br />3. do_bootm_linux函数的实现<br />/* lib_arm/armlinux.c */void do_bootm_linux(cmd_tbl_t *cmtp, int flag, int argc, char *argv[], ulong addr, ulong *len_ptr, int verify){ DECLARE_GLOBAL_DATA_PTR; ulong len = 0, checksum; ulong initrd_start,

2010-12-15 20:01:00 587

转载 函数指针与软件设计

<br />http://blog.csdn.net/absurd/archive/2006/05/29/761943.aspx<br /> <br />还是软件思想的问题,与函数指针无关。函数指针只是手段。

2010-12-15 17:27:00 288

转载 创建线程时的几个陷阱

<br />http://blog.csdn.net/absurd/archive/2006/05/25/755418.aspx<br /> <br />其中还是很多不理解,只能等等真正发生时候再说了。

2010-12-15 17:09:00 268

原创 判断文件是否存在!

<br /> <br />int_access(constchar*path,intmode);<br /> <br />if ((_access( "ACCESS.C", 0 )) != -1) { printf( "File ACCESS.C exists/n")); <br /> 

2010-12-15 14:09:00 278

原创 U-Boot与内核的关系(2)

<br />2.bootm命令的实现<br />/* common/cmd_bootm.c */int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]){ ulong iflag; ulong addr; ulong data, len, checksum; ulong *len_ptr; uint unc_len = 0x400000; int i, verify; char *name, *s;

2010-12-14 23:58:00 338

原创 U-Boot与内核的关系(1)

<br />U-Boot作为Bootload,具备多种引导内核启动的方式。常用的go和boom命令可以直接引导内核映像启动。U-Boot与内核的关系主要是内核启动过程中参数的传递。<br />1.go命令的实现<br />/* common/cmd_boot.c */int do_go(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]){ ulong addr, rc; int rcode = 0; if (argc < 2) {

2010-12-14 23:30:00 792

原创 U-Boot启动过程(3)

<br />3.init_sequence[]<br />init_sequence[]数组中保存着基本的初始化函数指针。这些函数名称和实现的程序文件名在下列注释中。<br />init_fnc_t *init_sequcence[] = { cpu_init, /* 基本的处理相关配置 -- cpu/arm920t/cpu.c */ board_init, /* 基本的板级相关配置 -- board/smdk2410/smdk24

2010-12-14 23:08:00 418

原创 U-Boot启动过程(2)

<br />lib_arm/board.c<br />start_armboot 是U-Boot执行的第一个C语言函数,完成系统初始化工作,进入主循环,处理用户输入的命令void start_armboot(void){ DECLARE_GLOBAL_DATA_PTR; ulong size; init_fnc_t **init_fnc_ptr; char *s; /* Pointer is writable since we allocated a register for it

2010-12-14 22:58:00 386

原创 U-Boot启动过程(1)

<br />开发板上电后,执行U-Boot的第一条指令,然后顺序执行U-Boot启动函数。函数调用如图所示。<br /> <br /><br />看一下board/smsk2410/u-boot.lds这个链接脚本,可以知道目标程序的各部分链接顺序。第一个要链接的是cpu/arm920t/start.o,那么U-boot的入口指令一定位于这个程序中。下面分析一下程序跳转和函数调用关系以及函数实现。<br /> <br />1. cpu/arm920t/start.S<br />这个汇编程序是U-Boot的入

2010-12-14 20:03:00 841 1

原创 Hash函数

<br />良好的Hash函数具有两个令人称心如意的特点:<br />一是快速的,并且它会把散列键均匀地分布在整个表中。<br />二是它还必须弥补可能出现在输入数据中的聚集(聚集是具有近似元素值得数据的趋势),对于相同的数据项,它必须总是产生相同的散列键。<br /> <br />如满足以下条件,散列函数一般将快速工作:<br />它们最多含有一个除法运算(一般是最终的模运算)<br />它们生成广泛的散列键<br />它们不依赖于将促使产生聚集的数据属性

2010-12-13 20:32:00 348

原创 FusionSound

<br />Audio sub system for multiple applications<br /> <br />FusionSound is a very powerful audio sub sytem in the manner of DirectFB and a technical demonstration of Fusion.<br />FusionSound supports multiple applications using Fusion IPC. It provides str

2010-12-13 19:39:00 713

原创 FusionDale

<br />FusionDale is applied Fusion and will be a collection of different services for use by applications and other libraries.<br /> <br />There's a component manager(Coma) which allows any process to create a component - identified by only a string at the

2010-12-13 19:34:00 1127

原创 请问怎样设置DirectFB的分辨率

可以在directfb配置文件中指定分辨率,或是在运行DirectFB程序时,加上--dfb:mode=800x600模式设置参数

2010-12-12 21:57:00 1459

原创 fbset

<br />http://wiki.chinaunix.net/index.php/Fbset

2010-12-12 21:44:00 656

原创 如何在DIrectFB显示BMP图片

<br />下载directfb-extra,编译安装好就行了,里面有bmp文件接口。接下来显示bmp和显示png方法是一样的

2010-12-12 21:21:00 1321

原创 运行directfb-example中的df_andi显示的颜色失真

<br />加上--dfb:pixelformat=RGB16

2010-12-12 20:27:00 1096

NiosII从入门到精通(_较好).pdf

NiosII从入门到精通(_较好).pdfNiosII从入门到精通(_较好).pdf

2010-06-29

window网络编程网络编程

window网络编程。window网络编程。window网络编程。window网络编程。window网络编程。

2010-06-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除