- 博客(30)
- 收藏
- 关注
原创 共享内存:shmat:invalid argument
共享内存:shmat(shmid,NULL,0);第二次使用时会出现invalid argument;errno是EINVAL: invalid shmid value;shmid=shmget(key,BUFSIZE,IPC_CREAT|IPC_EXCL|0666);
2011-10-12 10:43:26
3718
1
原创 linux内存寻址
本文讲述linux在X86平台上的分段和分页机制MMU(内存控制单元)通过分段单元的硬件电路将逻辑地址转换成线性地址,再通过分页单元的硬件电路把线性地址转换为物理地址: 逻辑地址:包含在机器指令语言指令中用来指定一个操作数或一条指令的地址。每个进程都
2011-09-27 16:59:46
1812
转载 class sizeof
Determining the Size of a Class ObjectBy Girish ShettyThere are many factors that decide the size of an object of a class in C++. Th
2011-09-19 20:05:48
1022
转载 #define 与 const
define和const一般的常量定义有两种方法,一种是使用宏#define,一种是使用关键字const,或枚举enum。这三个方法C++都支持,但C编译器不一定支持,C只有99版才开始支持const关键字,并且C是由于C++的影响才加入const关键字。
2011-09-18 16:22:31
1060
转载 统计二进制中1的个数
最关键内容:判断某一位置是否是1的一个方法(可以跳过0,所以比全部位置循环一遍效率高),v&=(v-1);例如: 01 000 000 &(01 000 000 - 00 000 001)= 01 000 000 &00 111 111 = 0。int b
2011-09-17 19:32:45
8675
1
转载 野指针(转载)
讨论一什么是野指针? 一个母亲有两个小孩(两个指针),一个在厨房,一个在卧室,(属于不同的代码块,其生存期不同)母亲让在厨房的小孩带一块蛋糕(指针指向的对象)给在卧室的小孩,这样在卧室的孩子才肯写作业。但这个在厨房的小孩比较淘气,他在走出厨房时自己将蛋糕吃了,没能带
2011-09-17 18:21:02
619
原创 arm, stepping stone, nandflash, norflash
arm9内核samsung公司的s3c2440可以从nandflash启动,OM[1, 0]=00时,using norflash for boot ROM,OM[1,0]=01,10时,直接从片选到0x0 SROM启动;当选用nandflash启动时,系统加电时,硬件自动将na
2011-09-14 18:20:11
903
转载 RAM,SRAM,SDRAM工作原理(很长)
存储原理: 为了便于不同层次的读者都能基本的理解本文,所以我先来介绍一下很多用户都知道的东西。RAM主要的作用就是存储代码和数据供CPU在需要的时候调用。但是这些数据并不是像用袋子盛米那么简单,更像是 图书馆中用有格子的书架存放书籍一样,不但要放进去还要能够在需要的时候
2011-09-14 16:07:44
17634
1
转载 ARM Cortex系列内核介绍
众所周知,英国的ARM公司是嵌入式微处理器世界当中的佼佼者。ARM一直以来都是自己研发微处理器内核架构,然后将这些架构的知识产权授权给各个芯片厂商,精简的CPU架构,高效的处理能力以及成功的商业模式让ARM公司获得了巨大的成功,使他迅速占据了32位嵌入式微处理器的大部分市场份额,
2011-09-14 14:44:13
1116
原创 写在找工作前:ARM
马上就要开始找工作了,方向定的是嵌入式软件工程师,处理器是ARM,以前学过裸机的ARM9:S3C2410,看了北航 田泽 的那本嵌入式系统开发和应用教程,选的是英贝特的老得学习箱,实验都是挨个做下来的,2410的资料也看了不少,不过好久了,真的好久了,都忘得的差不多了,这种状态面
2011-09-14 10:32:16
605
原创 第10章——结构和联合
1.C提供了两种类型的聚合数据类型:数组与结构。数据是相同类型的元素的集合,结构把不同类型的值存储在一起。数组的元素通过下标引用或指针间接访问来选择,结构成员通过名字来访问。与数组不同,它并不被替换成一个指针,它属于标量类型,它可以作为传递给函数的参数,也可以作为返回值从函数返回,相同类型的结构变量相互之间可以赋值。2.struct tag { member-list } variable-list ; struct tag varible variable-list; typedef struct
2011-05-10 18:08:00
488
原创 第九章——字符串、字符和字节
1.字符串是一种重要的数据类型,是一串零个或多个字符,并且一个位模全为0的NUL字节结尾,但C语言中并没有显式的字符串数据类型,因为字符串是以字符串常量的形式出现或存储于字符数组中或者动态分配的内存中。2.strlen是接受一个字符串指针作为参数,返回该字符串的长度,类型为size_t,在头文件stddef.h中定义,是无符号整型,根据不同类型数据的混合运算原则及类型提升原则,无符号整型与有符号整型进行计算是,将提升为无符号整型进行计算,如果对用strlen函数计算的字符串长度进行比较,strlen(x)
2011-04-22 12:42:00
750
原创 第八章——多维数组
<br />1.多维数组在内存中的存储顺序为按照最右边的下标率先变化的原则。把数组的第一个下标解释为行或列并不会改变数组的存储顺序,只是行列的排列顺序不同而已,只要每次坚持使用同一种方法,每种解释都是正确的<br />2.使用指向整形的指针遍历一个整形原速度饿多为数组,这个技巧被称为flattening the array(压扁数组),实际上是非法的,因为从某行移到下一行就无法回到包含上一行的那个子数组,应该使用指向一维整型数组的指针来遍历二维整型数组<br />3.多维数组的数组名与一维数组名一样是表示数
2011-04-17 15:39:00
737
原创 第八章——一维数组
<br />1.数组名,除了作为sizeof操作符或单目运算符&的操作数时(sizeof返回数组的长度:包括初始化的和未初始化的,而不是指向数组的指针的长度;取一个数组名的地址所产生的是一个指向数组的指针,而不是一个指向数组类型的指针的指针),其他情况下,是一个常量指针(不是指针变量),指向数组第一个元素的地址(第一个元素也可以使一个数组),不能作为左值<br />2.数组可以在定义时直接初始化,或者在定以后逐个初始化,或者用循环来初始化,见给一个数组复制给另一个数组时,不能直接赋值,而应该使用循环逐个初始
2011-04-15 23:04:00
504
原创 第七章——函数
1.ANSI C 允许函数原型的使用,函数声明提供给编译器和之后的调用函数返回值类型,参数类型和数量的信息,而K&C用单独的列表给出参数的类型,编译器只记住函数的返回值类型,但不保存函数的参数数量和类型2.没有return语句的函数,隐式的返回3.函数的原型可以单独放于一个头文件中,一定要具有文件作用域,不能卸载块代码中4.当程序调用一个没有返回类型的函数时,编译器便认为该函数返回一个整型值5.swap(&a,&b),传递地址指针6.未赋初值的变量占用内内存,表现在数组中,sizeof(array)7.使用
2011-03-18 15:23:00
390
原创 minicom在vmware+linux5.0配置使用
<br />1.需要先在开机之前在虚拟机的settings里添加serial串口serial port<br /> <br />2.默认没有minirc.df1,可以新建 这个文件,键入以下内容<br />pr port /dev/ttyS0<br />pu baudrate 115200<br />pu minit<br />pu mreset<br />pu mhangup<br />pu rtscts No<br />或者在终端使用minicom -s命令配置<br />Serial port set
2011-03-16 10:33:00
566
原创 winrar bz2
<br />明明WINRAR是支持BZ2文件的解压的,不过和linux下的tar命令解压的文件竟然不一样,今天解压tekkananinja给的uboot的二进制文件,bin文件,winrAR死活不行,但是在linux下用tar解压的就可以了,不知道为什么
2011-03-15 16:18:00
1274
原创 H-JTAG:flash id does not match
<br />H-FLASH 的HFC文件没文件没选对,要根据板载flash选择,MICRO2440的板子上的NOR FLASH芯片是spansion公司的S29AL016,选择友善之臂所给的H-Flasher_S29AL016T.hfc,并且要改下这个文件,将S29AL016MT该为S29AL016MB,HFC:H-FLASH CONFIGURATION
2011-03-14 10:10:00
2894
原创 第六章——指针
1.多字节数据的地址是在最左边还是最右边的位置,不同的机器有不同的规定,这也正是大端和小端的区别,地址也要遵从边界对齐2.高级语言的一个特性就是通过名字而不是地址来访问内存的位置,但是硬件仍然通过地址访问内存位置3.内存中的变量都是义序列的0或1的位,他们可以被解释为整数或者其他,这取决于他们被使用的方式,如果使用的是整数算数指令,这个值就被解释为整数,因此不能简单的通过一个值的位来判断它的类型4.如果我们把一个变量声明为某种类型,那么当程序方位这个变量时,编译器就会产生这种类型的指令,当采用不适当的方式访
2011-03-11 23:31:00
452
原创 操作符的优先级和求值顺序——C语言
<br />1.操作优先级:<br />() [] -> . L-R<br />! ~ ++ -- - (type) * & sizeof R-L<br />* / % L-R<br />+ - L-R<br />>> << L-R<br />< > <= >= L-R<br />== != L-R<br />& L-R<br />^ L-R<br />| L-R<br />&& L-R<br />|| L-R<br />?: R-L<br /
2011-03-08 14:21:00
1848
原创 第五章——操作符和表达式
<br />一、操作符<br />1.算数操作符中,除了%取模操作符只接受整型操作数之外,+ - * /既可适用浮点类型 又可使用于整型。<br />2.移位操作符中,算数左移和逻辑左移是相同的,而对于有符号数的右移操作,采用0填充还是符号位是因编译器而异的,因此是不可移植的。移位的位数为无符号整型<br />3.位操作符的操作数均为整型<br />4.赋值表达式的值为左操作符的值。getchar()和EOF,整型、字符型存在提升和截短的陷阱。复合型赋值操作符的效率更高<br />5.当sizeof的操作数
2011-03-07 21:57:00
546
原创 float精度和数值范围
<br />float:一般的编译器为其分配的内存为4个字节,内存表示形式:符号为(1位)阶码(8位有符号整型数)尾数(23位)<br /> <br />精度:有效数字或者说小数点之后的位数为23位,2^(-23)=0.0000001,所以精度为6~7位,数值范围为1+1=2<br />数值范围:8位阶码可表示的有符号整数大小为-128~127,2^127=1.7*10^38,而尾数部分的数值范围为-2.0~2.0,由此可得出float数值范围为-3.4e38~3.4e38<br />
2011-03-07 12:31:00
4914
原创 第四章——语句
<br />1.C并不具备布尔类型,而是用整型来代替,if和while只的判断表达式可以是任何能够产生整型结果的表达式<br />2.else隶属最靠近它的不完整的if语句<br />3.break用于结束整个循环,continue结束本次循环<br />4.<br />switch(exp1):<br />case exp2:<br /> exp21;<br /> ..........<br /> break;<br />case exp3:<br /
2011-03-06 10:30:00
363
原创 第三章——数据
<br />一、基本数据类型<br />1.四种基本类型:整型、浮点型、指针和聚合类型(如数组和结构、枚举等)<br />2.长整数至少和整型一样长,而整型至少应该和短整型一样长;<br />3.缺省的char要么是unsigned,要么是signed char,表准规定这取决于编译器,像int等一般默认为是signed,但arm-linux-gcc编译器将char定为signed char。<br />4.对于char类型的可移植性问题,只有把char型字符变量的值限制在signed和unsigned的交
2011-03-05 22:06:00
401
原创 第二章
1.C语言编译过程:预处理,编译,汇编,中间代码生成,代码优化,目标代码生成。预处理:宏替换,#include包含头文件,条件编译指令,typedef类型定义。编译:将预处理过的C生成汇编.s/.asm。汇编:将汇编代码生成中间代码.o文件。2.可执行程序,.out/.exe。目标文件:.o3.
2011-03-03 16:45:00
335
原创 第一章
<br />1.注释://为行注释符,/* */为段注释符,由于注释不能嵌套,使用/* */注释段代码时往往不能如愿,建议使用#if指令<br />#if 0<br /> statements //段代码<br />#endif<br />2.在函数形参前加const,表示函数将不会修改函数调用者所传递的参数<br />3.数组参数是以引用的方式进行参数传递的,也就是地址调用,而标量和常量则是值传递的<br />4.NUL 和NULL分别是字符‘/0’字符和指向0地址的指针,都是整数,值都为0
2011-03-03 11:09:00
638
原创 虚拟机,samba服务:路径太深,无法复制
要开启windows firewall/internet connection share(ICS)服务,ICS:顾名思义,网络连接共享服务,不过不知所云
2011-02-18 10:38:00
1562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人