- 博客(30)
- 资源 (11)
- 收藏
- 关注
原创 fedora 19 上安装OMnet++、Castalia
1 安装 vmware102 在vmware下安装fedora-live-desktop-i686-19 大小919MB3 安装omnet,按照官网上提供的安装文档(OMNet++ Install Guide_4.3)安装,在make的时候出现“错误:‘getcwd’ 在此作用域中尚未声明 ”,解决方案参考 http://blog.youkuaiyun.com/medivh08/art
2015-01-13 15:58:53
1534
转载 ARM中断异常处理的返回
ARM中断异常处理的返回(转) 作者:孙晓明,华清远见嵌入式学院讲师。举个小例子,下面是一段ARM汇编代码:地址指令0x3000BL add0x3004MOV r0,#00x3008MOV r1,#1
2012-10-09 10:56:21
2805
转载 Cache的工作原理
Cache的工作原理 Cache的工作原理是基于程序访问的局部性。 对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然地具有时间上集中分布的倾向。 数据分布的这种集中倾向不如指令明显,但对数组的存
2012-09-09 13:17:35
5344
转载 ARM MMU工作原理剖析
共享资源,欢迎转载:http://hbhuanggang.cublog.cn一、MMU的产生 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面
2012-09-08 12:57:29
752
原创 大学操作系统教程的不足之处
最近面临找工作,于是想把本科学过的计算机操作系统拿出来复习下,仔细的看了下存储器管理这一章节,不得不赞叹作者文笔很好,文章行云流水,结构严谨。突然明白考研大纲为什么要推荐这本教材,刚开始还以为作者是出题组的。但赞叹之余,不得不思考下其实用性问题,本科学这一章的时候也是雾里看花,一知半解,不明所里,其实这一切是不能怨学生学习能力不强,只能说是教材耽误了学生。先看第一节,存储器的层次结构,这一节没
2012-09-08 09:42:25
1618
转载 ARM9学习笔记之——MMU
ARM9学习笔记之——MMU我记得有一次我去应聘ARM-Linux软件工程师。结果被问到ARM中的虚拟内存是怎么管理的。由于我只对X86平台下的MMU了解,所以我被问倒了。原来我所学的只是皮毛。还有很多东西值得我去深入。要做ARM-Linux下的驱动,熟悉虚拟内存应该是必须的。 ARM9中的虚拟内存是怎么实现的呢?以下是我的学习总结。 AR
2012-09-07 19:08:21
1125
转载 数组的解剖学
数组的解剖学文章转自 http://blog.youkuaiyun.com/supermegaboy?viewmode=contentsC/C++的数组不同于VB等语言的数组,是有层次的,这个层次指的不是维度,而是象俄罗斯有名的套娃一样,一维套一维,亦即数组的嵌套,数组的元素也是数组,VB等语言的数组与之相比更像一个平面。 数组嵌套这个现象从其它语言的角度来看有点奇特,但其实原因也很简单。C/
2012-09-07 13:00:10
638
原创 请写一个函数,实现类似的strcpy的字符串复制功能
这个题目看起来很简单,但要完整的实现其功能还是得下的功夫先来看下一个经典错误的程序char * mystrcpy(char *dest,char *src) { char *ret; dest=(char *)malloc(strlen(src)+1); ret=dest; if(dest) { while(*dest++=*src++); retu
2012-09-06 17:17:08
8430
原创 snprintf()函数探讨
printf()/sprintf()/snprintf()区别 先贴上其函数原型printf( const char *format, ...) 格式化输出字符串,默认输出到终端-----stdoutsprintf(char *dest, const char *format,...) 格式化输出字符串到指定的缓冲区snprintf(char *dest, size_
2012-09-06 12:53:37
17128
1
转载 关于华为一道面试题 ( ++a )和( a++ )
昨天偶尔在网上看到一道华为面试题,觉得有点无语,这么NB的公司也出这种没有意义的题目,唉~~~话不多说,贴上代码: 上面还有我自己的解释:/* 这个例子主要是考虑到a++和++a的存储问题; 我们知道,对于a++是先将a给表达式再++; 那么这就是需要一个tmp空间来保存++之前 的a!!!但是对于++a是不需要的,因为先 执行++,那么就是直接改a空间内容就好了! 那么我
2012-08-27 16:30:58
1170
原创 用一个宏定义OFFSET求一个结构体里某个变量相对结构体的偏移量
用一个宏定义OFFSET求一个结构体里某个变量相对结构体的偏移量。#define OFFSET(type, m) ((unsigned int)&(((type*)0)->m))
2012-08-22 22:35:40
2444
原创 中断驱动设计----mini2440 按键驱动设计之路
按键驱动设计设计的知识比较多,包括中断体系,定时器,GPIO配置,多路I/O选择。其源代码在我引用的另一篇博客里附有,这里主要讲在学习过程中遇到的一些问题。这里对中断体系进行一个总结。1 中断处理体系结构,如下图所示。extern struct irq_desc irq_desc[NR_IRQS];先简要说下上图中的一些数据结构体含义,irq_desc结构数组用来描述中断
2012-08-21 15:42:16
1360
转载 select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET转载http://hi.baidu.com/%B1%D5%C4%BF%B3%C9%B7%F0/blog/item/e7284ef16bcec3c70a46e05e.htmlselect函数使我们可以执行I/O多路转接。原型: #include sys/time.h>
2012-08-20 10:15:44
609
转载 嵌入式Linux之我行——2440按键驱动实例开发详解(带去抖动)
嵌入式Linux之我行——按键驱动在2440上的实例开发(带去抖动) 分类: 内核、驱动开发篇原文链接:http://blog.chinaunix.net/space.php?uid=22174347&do=blog&cuid=2097608嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋
2012-08-19 21:49:05
3340
转载 字符设备驱动模型
本文所说的Inode是struct inode结构体,并不是在inode块中的inode结点。 Char Device Driver 相关数据结构:struct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops;
2012-08-18 19:02:16
1506
转载 __raw_readl和__raw_writel
micro2440采用S3C2440处理器(和S3C2410区别不大),在其Linux源码中,和这个平台相关的代码主要在arch/arm/mach-s3c2410和include/asm-arm/arch-s3c2410中,相关驱动在drivers目录中。(1)DM9000 网卡驱动kernel-2.6.13/drivers/net/dm9000x.c(2)串口(包括三个串口驱动0
2012-08-17 23:44:19
1436
原创 strtoul函数的使用,揭开其神秘面纱
之前使用strtoul函数时,从来没思考过它的用法,最近在编写驱动设计时,突遇这个函数,发现这函数还是有值得探讨的地方。其函数原型如下:unsigned long strtoul(const char *nptr,char **endptr,int base )参数1:字符串起始地址参数2:返回字符串有效数字的结束地址,这也是为什么要用二级指针的原因。参数3:转换基数。当b
2012-08-17 10:56:38
57252
3
原创 字符驱动设计----mini2440LED驱动设计之路
之前有一段时间学过驱动,学的很吃力,总是理解不通透,于是就放下了。最近再拾起时,思考之前遇到的问题,归结于零碎化,于是试着换一种思路去探究。 大多数书籍在介绍字符驱动过于理论化,纵览一章都是些文字,再附上一些零碎的代码,看的人头晕,时间长了自然就不想看了。 对于驱动的学习,刚开始不能过于理论化,一定要结合实际,要不然像空中楼台,住在上面,心里老感觉不踏实。那么如何入手呢?我觉得三点是很重
2012-08-15 22:33:10
2841
转载 mknod指令详解
mknod指令详解mknod - make block or character special filesmknod [OPTION]... NAME TYPE [MAJOR MINOR] option 有用的就是 -m 了 name 自定义 type 有 b 和 c 还有 p 主设备号 次设备号主设备号是
2012-08-15 18:45:39
891
原创 减治法算法设计
首先要申明的是减治法思想并不等同于分治法思想,减治法技术利用一个问题给定实例的解和同样问题较小实例的解之间的某种关系。一旦建立了这种关系,就可以从顶至下(递归),或者从底之上(迭代)地来运用该关系。减治法有3种主要的变种:1 减去一个常量2 减去一个常量因子,大多数问题中常量因子为23 减去的规模可变 对于第一种情况,举其例。 要求f(n)的解,
2012-08-15 10:35:31
4256
原创 uboot移植过程中的运行地址和装载地址的区别
uboot移植涉及到底层硬件的设置,因此需要掌握UART、系统时钟频率、NOR FLASH、NAND FLASH、SDRAM、网卡、存储控制器等硬件的功能及配置,这些都可以参照相应开发板的芯片手册来完成,没有什么大的问题。在移植过程中,一直困扰我的是PIC(代码无关性)问题,即运行地址和加载地址的区别,看过网上很多关于这两者的介绍,感觉懂一点,却一直不知所然。在参考大量的文献下,算是得了一点心得。
2012-08-13 12:05:41
8435
转载 ARM协处理器指令详解
ARM协处理器指令详解ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略 ARM 处理器和其他协处理器的指令。ARM 的协处理器指令主要用于 ARM 处理器初始化 ARM 协处理器的数据处理操作,以及在ARM 处理器的寄存器和协处理器的寄存器之间传送数据,和在 ARM 协处理器的寄存器和
2012-08-11 09:46:05
1342
1
转载 ARM 汇编的mov操作立即数的疑问
ARM 汇编的mov操作立即数的疑问1. 因为对arm汇编有些指令还不能理解,特别是一些相似功能指令间的区别。偶然在网上搜到“faq ARM assembly”,其中描述的几个问题还是值得好好研究一下。2. 慢慢的发现自己也不再害怕英文的文档了,耐心看至少也能懂个大概。大批经典的文章和书籍都是en文的,所以经常看英文文档是一个非常好的习惯。看看GNU的一些reference man
2012-08-11 09:05:22
2125
1
转载 ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的
【转】ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的几天前一个学生问我ARM中断嵌套的问题,我才发现原在我心中理所当然的事对学生来说理解实属不易。 ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin. 在
2012-08-10 19:55:02
800
原创 内存对齐问题--vs2010下位域结构体对齐规则
请写出一下代码的输出结果:// interface.cpp : 定义控制台应用程序的入口点。//内存对齐#include "stdafx.h"#include #include struct s1{ int i:8; char j:4; int a:4; double b;};struct s2{ int i:8; int j:4; double b;
2012-08-08 14:59:53
3677
原创 递归反向输出字符串
// string.cpp : 定义控制台应用程序的入口点。//递归反向输出字符串的例子#include "stdafx.h"#include void inverse(char *str){ if (*str!='\0') inverse(str+1); printf("%c",*str);}int _tmain(int argc, _TCHAR* argv[]){
2012-08-07 19:16:12
4365
1
原创 读文件file1.txt的内容到file2.txt
// file.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #define MAX 10int size;/*读文件file1.txt的内容(例如)123456输出到file2.txt*/int _tmain(int argc, _TCHAR* argv[]){ FILE *sorcefp,
2012-08-07 19:06:20
7273
原创 输出和为一个给定整数的所有组合
#include "stdafx.h"#include //输出和为一个给定整数的所有组合,例如n=5// 5=1+4;5=2+3(相加的数不能重复)//则输出//1,4,2,3int _tmain(int argc, _TCHAR* argv[]){ int num; printf("input a data\n"); scanf("%d",&num); for (int
2012-08-07 19:02:52
2829
原创 用二维数组模拟棋盘覆盖----采用分治法
棋盘覆盖是在一个2^k*2^k的棋盘中存在一个特殊格子,现要求用L型覆盖整个棋盘(除特殊格子),如图1所示,问如何覆盖这个棋盘? 图 1//****************************************************//问题描述:在一个2k×2k 个方格组成的棋盘中,恰有一个方格//与其它方格不同,称该方格为一
2012-08-03 18:26:08
2306
原创 合并排序
void Merge2(int *b,int *c,int *a,int Nb,int Nc){int i=0,j=0,k=0;while(i<Nb && j<Nc){if (b[i]<c[j])a[k++]=b[i++];elsea[k++]=c[j++];}if (i==Nb){while(j<Nc)a[k++]=c[j++];}else{while(i<Nb)
2012-08-02 22:12:38
454
lowlevel_init.S Uboot启动分析笔记
2012-08-11
U-Boot启动过程完全分析
2012-08-11
基于DV_Hop的无线传感器网络安全定位
2012-08-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人