(转)c语言学习volatile
摘要:原文网址:http://www.cnblogs.com/chio/archive/2007/11/24/970632.html 参考网址:http://www.embedu.org/Column/Column247.htm volatile 影响编译器编译的结果,指出,volatile 变量是随时可
阅读全文
posted @
2016-08-22 09:34
FREEH
阅读(168)
推荐(0)
CPU大小端判断
摘要:两种方式:1、通过指针 2、通过联合体,联合体里面的数据都是按顺序存储的,而且不论联合体里面有多少数据类型,联合体长度是最长的数据类型的长度。不论初始化多少联合体里面的数据,有效的是最后一个初始化数据,因为联合体里面的各种数据类型共用相同的地址,都从相同的地址开始存放。 输出结果:
阅读全文
posted @
2016-08-21 17:00
FREEH
阅读(623)
推荐(0)
c语言编程之二叉树
摘要:利用链表建立二叉树,完成前序遍历、中序遍历、后序遍历。 建立二叉树用的是前序遍历建立二叉树: 输出结果:
阅读全文
posted @
2016-08-19 00:26
FREEH
阅读(895)
推荐(0)
(转)assert()函数用法总结
摘要:assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badpt
阅读全文
posted @
2016-08-18 20:21
FREEH
阅读(182)
推荐(0)
c语言编程之队列(链表实现)
摘要:用链表实现了队列,完成了队列的入队和出队功能。
阅读全文
posted @
2016-08-18 15:12
FREEH
阅读(472)
推荐(0)
c语言编程之循环队列
摘要:利用链表实现的循环队列,完成了队列的入队和出队,对于队空和队满用了一个flag进行标记。入队flag++,出队flag--
阅读全文
posted @
2016-08-18 15:09
FREEH
阅读(616)
推荐(0)
(转)linux下的系统调用函数到内核函数的追踪
摘要:转载网址:http://blog.csdn.net/maochengtao/article/details/23598433 使用的 glibc : glibc-2.17使用的 linux kernel :linux-3.2.07系统调用是内核向用户进程提供服务的唯一方法,应用程序调用操作系统提供的
阅读全文
posted @
2016-08-16 15:02
FREEH
阅读(628)
推荐(0)
(转)使用 /proc 文件系统来访问 Linux 内核的内容
摘要:转载网址:http://www.ibm.com/developerworks/cn/linux/l-proc.html 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口/proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux® 内核空间和用户空间之间进行通信。在 /
阅读全文
posted @
2016-08-16 14:59
FREEH
阅读(953)
推荐(0)
linux驱动之I2C
摘要:include/linux/i2c.h struct i2c_msg;struct i2c_algorithm;struct i2c_adapter;struct i2c_client;struct i2c_driver;union i2c_smbus_data; I2C驱动主要包含三部分:I2C核
阅读全文
posted @
2016-08-14 23:22
FREEH
阅读(1686)
推荐(0)
(转)Linux 文件系统:procfs, sysfs, debugfs 用法简介
摘要:网址:http://www.tinylab.org/show-the-usage-of-procfs-sysfs-debugfs/ 1 前言 内核中有三个常用的伪文件系统:procfs,debugfs和sysfs。 procfs — The proc filesystem is a pseudo-f
阅读全文
posted @
2016-08-11 17:33
FREEH
阅读(7823)
推荐(0)
linux编程之线性表
摘要:1 #include"stdio.h" 2 #define MAX 100 3 typedef struct List{ 4 int length; 5 int num[MAX]; 6 }List_sequence; 7 8 //buid new List_sequence 9 int List_build(List_sequence *L,i...
阅读全文
posted @
2016-08-10 15:53
FREEH
阅读(256)
推荐(0)
linux编程之指针
摘要:这个是数组指针、指针数组、二维数组之间相互转换的代码 输出结果
阅读全文
posted @
2016-08-10 15:37
FREEH
阅读(514)
推荐(0)
linux内核分析之fork()
摘要:从一个比较有意思的题开始说起,最近要找工作无意间看到一个关于unix/linux中fork()的面试题: 题目要求是从上面的代码中确定输出的“+”的数量,我后面加了一个“-”,再确定输出“-”的数量。 先给答案:“+”8次,“-”6次 上面的这段代码很简单,包含的内容却有很多,有进程产生、系统调用、
阅读全文
posted @
2016-08-09 21:58
FREEH
阅读(8409)
推荐(1)
C语言关键字-volatile
摘要:1、C语言关键字volatile C 语言关键字volatile(注意它是用来修饰变量而不是上面介绍的__volatile__)表明某个变量的值可能在外部被改变,因此对这些变量的存取 不能缓存到寄存器,每次使用时需要重新存取。该关键字在多线程环境下经常使用,因为在编写多线程的程序时,同一个变量可能被
阅读全文
posted @
2016-08-09 15:59
FREEH
阅读(290)
推荐(0)
linux内核分析之内存管理
摘要:1、struct page flags:flag域用来存放页的状态。这些状态包括页是不是脏的,是不是被锁定在内存中。flag的每一位单独表示一种状态,可以表示32种状态。 _count:_count域用来存放页的引用计数,也就是页引用了多少次。当计数变为-1时表示当前内核并没有引用这一项,于是在在新
阅读全文
posted @
2016-08-08 21:11
FREEH
阅读(1833)
推荐(0)
(转)Linux SLUB 分配器详解
摘要:原文网址:https://www.ibm.com/developerworks/cn/linux/l-cn-slub/ 多年以来,Linux 内核使用一种称为 SLAB 的内核对象缓冲区分配器。但是,随着系统规模的不断增大,SLAB 逐渐暴露出自身的诸多不足。SLUB 是 Linux 内核 2.6.
阅读全文
posted @
2016-08-08 15:10
FREEH
阅读(2370)
推荐(0)
经典博文
摘要:地址:http://blog.csdn.net/yunsongice/article/details/5471077
阅读全文
posted @
2016-08-08 11:10
FREEH
阅读(145)
推荐(0)
linux内核分析之进程地址空间管理
摘要:1、struct task_struct 进程内核栈是操作系统为管理每一个进程而分配的一个4k或者8k内存大小的一片内存区域,里面存放了一个进程的所有信息,它能够完整的描述一个正在执行的程序:它打开的文件,进程的地址空间,挂起的信号,进程的状态,从task_struct中可以看到对一个正在执行的程序
阅读全文
posted @
2016-08-07 13:49
FREEH
阅读(1703)
推荐(0)
(转)GDT与LDT
摘要:网址:http://blog.csdn.net/billpig/article/details/5833980 保护模式下的段寄存器 由 16位的选择器 与 64位的段描述符寄存器 构成段描述符寄存器: 存储段描述符选择器:存储段描述符的索引 PS:原先实模式下的各个段寄存器作为保护模式下的段选择器
阅读全文
posted @
2016-08-07 11:16
FREEH
阅读(292)
推荐(0)
linux驱动系列之s3c2440内存布局
摘要:刚开始学习linux在2440上面 linux内核分配标志可以分为三类:行为修饰符、区修饰符、类型。 区修饰符表示从哪儿分配内存,内核把物理内存分为多个区,每个区用于不同的目的。 内存中缓冲区存在的原因是可以提高对块设备的文件操作运行效率提高,而提高的本质是缓冲区数据的共享。
阅读全文
posted @
2016-08-07 09:50
FREEH
阅读(337)
推荐(0)
linux驱动系列之arm汇编
摘要:在arm平台学习linux时,会遇到arm汇编指令,arm汇编指令与8086汇编指令很多地方都不同,在此记下来以免后面忘了,同时在学习了汇编指令之后分析一些汇编指令编写的代码。 一、相对跳转指令b、bl b、bl指令都实现短跳转,bl指令执行后会在链接寄存器r14中保存下一条指令的地址。 二、数据传
阅读全文
posted @
2016-08-06 21:24
FREEH
阅读(2404)
推荐(0)
(转)关于ARM9协处理器CP15及MCR和MRC指令
摘要:网址:http://blog.csdn.net/zhou1232006/article/details/6150198 在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。 访问CP15寄存器的指令 MCR ARM寄存
阅读全文
posted @
2016-08-06 11:21
FREEH
阅读(1584)
推荐(0)
(转)汇编bne的问题
摘要:网址:http://blog.csdn.net/lwj103862095/article/details/8073571 memsetup: @ 设置存储控制器以便使用SDRAM等外设 mov r1, #MEM_CTL_BASE @ 存储控制器的13个寄存器的开始地址 adrl r2, mem_cf
阅读全文
posted @
2016-08-05 14:34
FREEH
阅读(756)
推荐(0)
(转)为什么adrl r2,mem_cfg_val这里不用ldr r2,=mem_cfg_val
摘要:网址:http://blog.csdn.net/glorin/article/details/6327083 memsetup:mov r1, #MEM_CTL_BASEadrl r2,mem_cfg_valadd r3, r1,#521:ldr r4, [r2],#4str r4, [r1],#4
阅读全文
posted @
2016-08-05 14:33
FREEH
阅读(226)
推荐(0)
(转)深入理解SP、LR和PC
摘要:网址:http://blog.csdn.net/zhou1232006/article/details/6149548 深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益。 1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五
阅读全文
posted @
2016-08-05 14:09
FREEH
阅读(1587)
推荐(0)
linux驱动系列之makefile
摘要:在linux环境下做嵌入式无论是编写应用程序还是驱动程序等等,都需要用make来进行程序的编译,就需要学会自己编写Makefile。Makefile主要的作用有3点:1、决定编译哪些文件 2、怎样编译这些文件 3、怎样连接这些文件,他们的顺序是什么样的 一个简单的makefile文件如下: 这个是最
阅读全文
posted @
2016-08-04 18:00
FREEH
阅读(9255)
推荐(0)