自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(54)
  • 资源 (14)
  • 收藏
  • 关注

原创 Qemu支持ATF + u-boot + linux kernel

主要是初始化SMC调用时的处理函数,rt_svc_descs通过 DECLARE_RT_SVC声明,并链接到RT_SVC_DESCS_START和RT_SVC_DESCS_END范围内. 当前qemu平台上会有两个rt_svc_descs, 分别是arm_arch_svc和std_svc。分别在services/arm_arch_svc/arm_arch_svc_setup.c 和services/std_svc/std_svc_setup.c中声明。

2023-09-08 11:35:32 417

原创 程序性能优化

程序优化

2023-03-14 11:32:16 353

原创 调试工具记录

调试工具

2022-11-15 14:48:23 1170 1

原创 minigui字体管理

minigui字体管理仅针对内建字体资源,即定义了_INCORE_RES之后的字体管理minigui配置为使用NEWGALminigui-1.6.8 1、  逻辑字体、设备字体及字符集的关系在minigui中,每个逻辑字体至少由一个单字节的设备字体组成。设备字体是直接与底层字体相关的数据结构。 /** The logical font structure. */

2009-12-13 20:25:00 2313

原创 minigui控件管理之注销控件类

 1、 系统注销 系统中注销控件类的代码在src/gui/ctrlclass.c文件中void EmptyControlClassInfoTable (){ PCTRLCLASSINFO cci, temp; int i; for (i = 0; i<LEN_CCITABLE; i++) { cci = ccitable [i

2009-09-28 15:43:00 453

原创 minigui控件管理之销毁控件

 控件的销毁是由函数DestroyWindow完成的,src/gui/window.c  BOOL GUIAPI DestroyWindow (HWND hWnd){ PCONTROL pCtrl; PCONTROL pParent; if (!IsControl (hWnd)) return FALSE; if (SendMes

2009-09-28 15:35:00 727

原创 minigui控件管理之创建控件

 所有的控件都是通过CreateWindow这个函数创建的,该函数是一个宏,定义于include/window.h  #define CreateWindow(class_name, caption, style, id, x, y, w, h, parent, add_data) / CreateWindowEx(class_name, caption, sty

2009-09-28 15:24:00 655

原创 minigui控件管理之注册控件类

 minigui控件管理这几篇文章重点在于说明控件类数据结构和控件数据结构的管理,并找出控件类与控件在代码上的联系与区别。 1、 系统注册 Minigui在初始化期间,会有一个控件类初始化,该函数在src/gui/ctrlclass.c BOOL InitControlClass (){ int i; for (i=0; i<LEN_CCIT

2009-09-28 15:06:00 650

原创 minigui程序的退出、编辑框文本限的设置

minigui-1.6.8 以前一直没注意一个问题,就是在我的minigui应用程序中使用如下两个语句     DestroyMainWindow (hWnd);     PostQuitMessage (hWnd); 使应用程序退出里,其实还有个minigui的桌面依然存在。今天在做一个调试,想使整个minigui程序都退出,使我的系统回到命令行界面。因此注意到了这个问题。于

2009-09-16 20:27:00 944

原创 编译器的版本惹的祸

今天在编译一个RTC驱动测试程序时,出现了如下的一大堆提示:In file included from /opt/host/armv4l/lib/gcc-lib/armv4l-redhat-linux/2.95.3/../../../../armv4l-redhat-linux/include/sys/select.h:31,                 from /opt/host/ar

2009-08-13 10:47:00 1300 1

原创 wincvs使用杂记

1、 删除模块中的文件 如果本地目录中有一个文件不需要了,想要删除。正确的方法是在wincvs的客户端上选中要删除的文件(aaa.c),点击工具栏上的删除工具 进行删除,然后再commit一次本地的文件(aaa.c)就没有了。 2、 添加模块 当前用户为wang,所在组也为wang。首先在知识库(Repository)目录下创建一模块(Module),取名为test

2009-08-12 16:14:00 441

原创 m41t81驱动中对时间的处理

我的环境:BOARD:S3C2410SYSTEM:LINUX2.6.20.6时钟芯片:M41T81 这两天一直在对M41T81的驱动进行调试,我在应用程序中设的时间在读取后老是不对,还好最终搞定了。 首先看一下对时钟进行设置的数据结构struct rtc_time { int tm_sec; int tm_min; int tm_hour; int tm_mday; i

2009-08-08 17:24:00 1080 1

转载 make install时"arm-linux-ranlib command not found"

原文网址:http://blog.chinaunix.net/u1/46715/showart_1663653.htmlAuthor: wmmwang(unc,王敏敏)Environment:fedora8            arm-linux-gcc 3.4.1Minigui: 1.3.3Date:2008-11-24    按照以前经验,把要改的地方改好。接着make,没的问题。 

2009-07-12 00:26:00 3711

转载 MFC中的Sleep函数与linux下的sleep函数不同

原文出处http://blog.csdn.net/spacraft/archive/2005/03/19/323546.aspx a> MFC中的Sleep函数原型为: void Sleep(   DWORD dwMilliseconds ); b>linux下的sleep函数原型为: unsigned int sleep(unsigned int seconds);MFC中的

2009-06-29 19:36:00 2419

原创 SetDlgItemText使用中遇到的问题

minigui 1.6.8   thread版OS: linux 2.6.20CPU: s3c2410 最近在使用SetDlgItemText设置静态框文本时发现,在调用完这个函数后静态框的文本并没有立即显示出来,而是要等一会才能显示。我程序中的代码如下: case MSG_TIMER:SetDlgItemText (hWnd, ID_SYS_TIME, buffer)

2009-05-03 12:29:00 6312 3

原创 Visual C++ 编译器选项

 Visual C++ 编译器选项 /Gd、/Gr、/Gz(调用约定)/Gd/Gr/Gz这些选项确定: 将函数参数推送到堆栈上的顺序。 是由调用方函数还是由被调用函数在调用结束时从堆栈中移除参数。 编译器用来标识各个函数的名称修饰约定。 /Gd 为默认设置,对除 C++ 成员函数和标记为 _

2009-04-29 13:42:00 597

转载 LDR和ADR在使用标号表达式作为操作数的区别

 原文网址http://hi.baidu.com/mikenoodle/blog/item/d5e95eee30cf62f3b3fb954d.htmlARM汇编有ldr指令以及ldr、adr伪指令,他门都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。     ldr     r0, _start         adr    r0, _start  

2009-04-02 11:17:00 472

原创 linux 0.11 之内存管理

1、 概述 在intel 80x86 CPU中,程序在寻址过程中使用的是由段和偏移值构成的地址CS:[EIP]。程序中由16位的段和32位的偏移构成48位地址或长指针称为一个逻辑地址(虚拟地址)。它唯一确定了一个数据对像的段地址和段内偏移地址。而仅由32位偏移地址或指针指定的地址是基于当前段的对象地址。 逻辑地址会由分段机制转换为线性地址。此时如果启用了分页机制,则线性地址会由分页

2009-03-27 19:01:00 783

原创 linux 0.11 之信号管理

1、 概述 在unix系统中,信号是一种“软件中断”处理机制。有许多较为复杂的程序会使用到信号。信号机制提供了一种处理异步事件的方法。 在内核代码中通常使用一个无符号长整数(32位)中的比特位来表示各种不同的信号,因此最多可表示32个不同的信号。 2、 进程对信号的三种处理或操作方式 a、  忽略该信号。SIGKILL和SIGSTOP这两个信号不能被忽略。b、 

2009-03-27 11:20:00 550

原创 linux 紧急bash救援

当linux启动时按任意键进入到grub界面,然后按下e对grub进行编辑,把光标移动到kernel 所在的行后再按e,这样就可以进行编辑了。 在这一行后面添加init=/bin/bash,然后按enter,再按b就可以启动了。当内核引导时,它将以/bin/bash而不是通常的 /sbin/init 作为第一个进程启动,您不会被提示进行登录就能看到一个 root 用户 bash 提示符。

2009-03-26 22:34:00 343

原创 linux 0.11 之任务管理

注意,下文提到的任务和进程是指同一个概念1、 相关数据结构和寄存器 a、  任务控制块:struct task_struct {/* these are hardcoded - dont touch */       long state;       /* -1 unrunnable, 0 runnable, >0 stopped */       long

2009-03-26 18:29:00 700

原创 linux 0.11 之中断管理

1、 中断源和异常源 处理器从两种地方接收中断:外部硬件的中断和软件产生的中断。处理器接收的异常源也有两个:处理器检测到的程序错误异常和软件产生的异常。 通过软件产生中断或异常,都是由指令INT n实现,其中n是中断或异常向量号。 2、 向量号 每个中断或异常都有一个向量号,通过这个向量号可以在中断描述符表IDT中索引一个描述符,这个描述符可以找到中断处理程序入

2009-03-26 14:19:00 494

原创 volatile使用小结

1、避免asm指令被删除 #define get_and_set_priority(new) /({ int __old; /asm volatile ("get_and_set_priority %0, %1" /: "=g" (__old) : "g" (new)); /__old; }) volatile 关键字声明后面的指令有重要的副作用。如果这个volatile asm指

2009-03-25 16:07:00 519

转载 宏定义,#,##

原贴http://blog.csdn.net/believefym/archive/2007/10/21/1836162.aspx# —— 字符串##——连接两个参数#include iostream>using namespace std;#define TEST(pid) (cout#define TEST2(p) (coutint main(){    int para3 = 3

2009-03-20 15:03:00 405

原创 minigui EnableWindow函数分析

src/gui/widown.c line 3607-3628BOOL GUIAPI EnableWindow (HWND hWnd, BOOL fEnable){    BOOL fOldStatus;        MG_CHECK_RET (MG_IS_NORMAL_WINDOW(hWnd), FALSE);    if (IsMainWindow (

2009-01-12 09:47:00 1306

原创 minigui 时钟

libminigui-1.6.8 配置为线程版   minigui定时器的创建、销毁及定时器消息MSG_TIMER的传递   1、时钟初始化   在minigui的初始化期间,调用函数__mg_timer_init()对时钟进行初始化。   src/kernel/timer.c  line 136-162 static void* TimerEntry (void* data){

2009-01-05 14:51:00 3411

原创 linux的uboot启动映像uImage制作过程

    在arch/arm/boot/Makefile 62行开始有命令和规则: quiet_cmd_uimage = UIMAGE  $@      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel /           -C none -a $(ZRELADDR) -e $(ZRELADDR

2008-12-26 18:30:00 1932

原创 linux zImage生成过程详解

  可以看到,在顶层makefile的第278行,包含了scripts/Kbuild.include文件,在这里定义了大量的函数和变量,供顶层makefile和其他makefile文件使用。   在顶层makefile文件的第412行,包含了arch/arm/Makefile。这个是体系结构相关makefile文件。它定义了体系结构相关的一些变量及规则。   当执行”make”时,arch/arm

2008-12-26 18:13:00 4620

原创 linux make menuconfig 执行流程小结

linux/2.6.20.6/make menuconfig     当在顶层目录执行”make menuconfig”会执行顶层Makefile 第415行的规则   config %config: scripts_basic outputmakefile FORCE        $(Q)mkdir -p include/linux include/config        $(Q)$(MA

2008-12-24 15:09:00 8567 2

翻译 linux 2.6.x Makefile

linux-2.6.x makefile   linux-2.6.20.6/Documentation/kbuild/makefiles.txt   一、             概述   linux的makefile有五个部分:   Makefile:顶层Makefile .config:内核配置文件 arch/$(ARCH)/Makefile:体系结构相关的Makefile scripts/M

2008-12-18 14:35:00 1861

原创 CRC算法

CRC算法   1、  错误检测   错误检测的目的是使接收者能够检测它从一个吵杂的信首接收到的消息是否被破坏。因此发送者构建了一个值(称为校验和)并把它附加到信息中,这个值是信息的函数。接收者可以用相同的函数算出它接收到信息的校验和,并与附加的校验和比较看接收到信息是否正确。例如,如果我们选择了一个校验和函数,这个函数简单的以模256计数信息中各字节的和,然后就会像正面一样。所有的数都是十进制。

2008-12-16 15:37:00 1110

原创 elf格式学习总结

当编译一个源文件生成目标文件时,会在目标文件中生成符号表和重定位表。 符号表包含在文件中定义的全局符号以及在文件中引用的外部符号(外部函数或变量)。 重定位表告诉链接器在哪些位置要进行重定位操作。 编译生成的目标文件在文件的开始处会有一个elf头,描绘了整个文件的组织结构。它还包括很多节(section)。这些节有的是系统定义好的,有些是用户在文件中通过.section命令

2008-12-10 09:13:00 1037

原创 arm-linux源码分析之cpu初始化

linux-2.6.20.6/arch/arm/kernel/head.S 这是解压内核后内核入口所在的文件,完成内核解压后将控制权将转移到这里的入口。 先看一下arch/arm/kernel/vmlinux.lds这个链接脚本,在开头186.  OUTPUT_ARCH(arm)187.  ENTRY(stext)188.  jiffies = jiffies_64

2008-12-09 22:06:00 2354 2

原创 arm-linux源码分析之解压内核映像

linux-2.6.20.6/arch/arm/boot/compressed/head.S   开头有一段宏定义,我们只看其中一段,分析一下gnu arm汇编的宏定义   #elif defined(CONFIG_ARCH_S3C2410)               .macro loadsp, rb               mov /rb, #0x50000000            

2008-12-05 00:05:00 2465 1

原创 elf格式学习笔记之程序加载和动态链接

  第二部分 程序加载和动态链接 一、简介 第二部分介绍了目标文件信息和创建运行程序的系统操作,这里的有些信息适用于所有系统,有些则是处理器相关的。 可执行文件和共享目标文件都是静态表示程序。为了执行这样的程序,系统用这些文件来创建动态程序表示或是进程映像。一个进程映像有一些segment保存着代码、数据、堆栈等。 二、程序头 可执行文件和共享目标文件的

2008-12-02 17:37:00 1231

原创 elf格式学习笔记之目标文件

最近在学习elf格式,那遍介绍elf格式的文档分两部分介绍elf格式,第一部分是目标文件,第二部分是程序加载和动态链接。文档我会上传的我的资源里,有兴趣的可以下载,不用资源分的。这里是我学习第一部分时记的一些笔记 一、简介 三种主要类型的目标文件: 1、可重定位文件:保存着代码和数据,这些代码和数据适合和其他目标文件链接在一起,生成一个可执行文件或共享目标文件。 2

2008-12-01 13:30:00 1277

翻译 Executable and Linking Format(ELF)

Executable and Linking Format(ELF)   一个目标文件一般包括   1)  关于目标文件的通用信息,如文件大小、二进制代码和数据大小以及创建这个目标文件的源文件名。   2)  体系结构相关的二进制指令和数据。   3)  符号表和符号重定位表。   4)  供调试者使用的调试信息。   这些信息在目标文件组织的方式称为目标文件格式。有了标准的目标文件格式,不同的厂

2008-11-24 13:38:00 1589

翻译 链接器和链接过程概览

    开发者在c/c++源文件和头文件中编写程序。部分程序可用汇编编写,并放在相应的汇编源文件中。开发者为make工具创建一个makefile文件,这样可以轻松追踪文件的修改并根据需要调用编译器和汇编器重新build源文件。编译器和汇编器从这些源文件中生成包含机器码和程序数据的目标文件。归档工具连接一组目标文件形成一个库。链接器把这些目标文件作为输入并生成一个可执行映像或是可被用于和其他目标文件

2008-11-21 17:47:00 1191

转载 ARM Linux Boot Sequence

 The following traces the Linux boot sequence for ARM-based systems in the 2.6.18 kernel. It looks at just the earliest stages of the boot process, until the generic non-processor-specific start_kerne

2008-11-20 15:26:00 694

原创 引导armlinux

启动armlinux,bootloader必须提供下面几步:   1.  设置并初始化ram 2.  初始化一个串口 3.  检测处理器类型 4.  设置内核标记列表 5.  调用内核映像   1.       设置并初始化ram   bootloader要找到并初始化系统中所有的ram,内核将这些ram用于可变数据的存储。   2.       初始化一个串口   bootloader应该在目标

2008-11-19 13:44:00 862

vxworks中断管理

详细描述了vxworks中断的初始化、中断的程序的编写、安装等。

2009-03-14

可执行和可链接文件格式

elf文件格式英文手册,详细描述了elf目标文件以及程序加载和动态链接

2008-12-03

GNU ARM 汇编参考手册

GNU ARM Assembler Quick Reference

2008-11-20

s3c2410中文手册16

s3c2410中文手册第十六音

2008-05-12

s3c2410中文手册6

s3c2410中文手册第六章

2008-05-12

s3c2410中文手册5

s3c2410中文手册每五章

2008-05-12

s3c2410中文手册2

s3c2410中文手册第二章

2008-05-12

s3c2410中文手册1

s3c2410中文手册第一章,

2008-05-12

PPPOE协议的简介

pppoe 协议的介绍,详细描述了pppoe协议的实现过程

2008-05-08

UNIX环境高级编程(附源代码)

unix环境高级编程并附有源码供学习使用

2008-05-08

vxworks操作系统源码

vxworks的源码,希望能对你有帮助!!

2008-05-05

空空如也

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

TA关注的人

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