嵌入式学习笔记
文章平均质量分 68
memset
这个作者很懒,什么都没留下…
展开
-
结构体,共用体
1、struct{ 成员列表;}lucy,lily ,bo;只能定义}后边这三个变量,有局限性。2、具有相同类型的结构变量的结构体可以直接进行赋值预算。ep:lucy=lily;3、在共用体中,其内存空间就是最后一次操作所得的值。共用体的内存跟最大的那个元素大小有关;4、枚举:定义形式:enum bool{false,true};定义变量:enum bool原创 2012-11-14 18:03:08 · 611 阅读 · 0 评论 -
shell面试题
1.用Shell编程,判断一文件是不是块或字符设备文件,如果是将其拷贝到 /dev 目录下。 #!/bin/bash#1.sh#判断一文件是不是字符或块设备文件,如果是将其拷贝到 /dev 目录下#file executable: chmod 755 1.shPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/loc转载 2013-07-18 10:44:47 · 1354 阅读 · 0 评论 -
传输控制协议TCP
6.3 TCP的数据编码与确认 TCP协议采用了许多与数据链路层类似的机制来保证可靠的数据传输,如采用序列号、确认、滑动窗口协议等。只不过TCP协议的目的是为了实现端到端结点之间的可靠数据传输,而数据链路层协议则为了实现相邻结点之间的可靠数据传输。 首先,TCP要为所发送的每一个报文段加上序列号,保证每一个报文段能被接收方接收,并只被正确地接收一次。转载 2013-03-01 19:21:07 · 7096 阅读 · 1 评论 -
关于nor flash和nand flash启动过程区别
1、比较nor flash 和nand flash:Nor flash :intel推出,一般以64-128kb每块进行擦除,时间约为5s(这是一个很大的数)。带有EBI(三总线)接口,支持线性读取,支持片上程序执行(XIP);虽然擦写速度慢,但是读取速度很快(也许是因为可以进行线性读取);更加稳定,不容易出现位翻转;成本高,相同体积下容量更小;接口简单,操作更方便。N原创 2012-12-30 11:22:37 · 6104 阅读 · 1 评论 -
bootloader启动过程详细说明
今天早上看了一上午的bootloader简单源码,终于捋顺了bootloader的执行过程,之前只是知道bootloader代码会先被irom中的代码拷贝到iram中一部分,然后执行这部分代码,会把整个bootloader代码拷贝到sdram中,最终在sdram执行剩下的代码,而这段代码会把kernel拷贝到sdram的某个地址,最终引导起来整个内核。但是我今天早上看代码的时候看到一个问题,我所有原创 2012-12-30 17:38:56 · 11891 阅读 · 4 评论 -
线程
线程:是cpu调度和分派的基本单位,线程一般不拥有资源,但是可以调用所属进程的资源。在编译时,需要包含一个库,-lpthread。1、pthread_create(pthread_t *pthread,NULL,fuc,NULL)这个是一般用法,第二个和第四个参数全是NULL,第一个参数是线程号,第三个参数是要调用的线程函数。2、pthread_join(thread,NULL原创 2012-11-15 20:47:36 · 540 阅读 · 0 评论 -
消息队列
1、类型一样,遵循先进先出。2、消息队列中的消息是有格式的。3、消息队列标识符在整个系统中是唯一的,而文件描述符是在一个进程中唯一。4、#include#includekey_t ftok(char *path,int id);获得项目相关的唯一的IPC键值。id:项目的ID,只有低8位有效。5、msgget(key_t key,int msgflg)创建消息队列。只要原创 2012-11-14 21:41:38 · 561 阅读 · 0 评论 -
信号
信号:信号是软件中断;是一种异步通信方式,能直接进行用户进程和内核的交互。1、信号的产生:从终端键输入;硬件异常;软件异常;kill函数;kill命令。2、对信号的基本操作:2-1、int kill (pid_t pid ,int signum);给进程pid传送信号。pid的取值:pid>0:将信号传送给进程ID为pid的进程。pid=0:将进程传送给当前组的所有进程原创 2012-11-14 21:40:39 · 417 阅读 · 0 评论 -
链表
1、在函数中分配内存是按照先后顺序分配的,从高往低分配。int a=12;int b=20;int c[2];其中a分配 了一个0x34ff74 的内存地址,那么b就分配成0x34ff70,c[1]的地址为0x34ff66;c[0]的地址是0x34ff62;其中如果对c[2](c[2]已经越界)进行操作,就相当于对b的地址进行操作,因为按照地址分配形式,就会使&c[2]=&b;原创 2012-11-14 18:04:13 · 446 阅读 · 0 评论 -
字符
1、把字符中的数字直接转化为整型:#includevoid main(){ int n; char s="1234"; n=atoi(s);}但是其中如果字符串中出现非'0'-'9'字符,就会结束转换。ep:s="12a34"只能转换成12;2、strlen()函数是用来计算字符串中有多少个字符,计算出出来的值没有加上'\0';3、运用库函数判断字符的类型原创 2012-11-14 16:59:35 · 435 阅读 · 0 评论 -
文件
1、压缩:把二进制数,换一种形式存放(前几组数据可以记录总共有多少个0,分别在什么位置)2、FILE:下边的FILE的结构体详解: 文件打开函数:fopen 文件关闭函数: fclose字符读写函数:fgetc 和 fputc 字符串读写函数:fgets 和 fputs数据块读写函数:freed 和 fwrite 格式化读写函数:fscanf和 fprinf随机原创 2012-11-14 18:04:57 · 522 阅读 · 0 评论 -
内存
一个由 c/C++ 编译的程序占用的内存分为以下几个部分 、 1、栈区( stack stack stack stack )由编译器自动分配释放,存放函数的参数值,局部变量的值等。 、 2、堆区( heap heap heap heap )一般由程序员分配释放, 若程序员不释放,程序结束时可能由 OS 回收 。 、 3、全局区(静态区) ( static static stat原创 2012-11-14 18:02:08 · 529 阅读 · 0 评论 -
指针
1、指针不管定义成什么类型,都是只占用4个字节。每个字节4位!2、定义完指针后,如果不让其指向某一个变量,就不能直接对其赋值。3、对一个二维数组a[][];a就代表第0行的行地址。a+1代表第一行的行地址。 而*a代表取第0行第0列的列地址。 *(*(a+1)+2)代表第1行第二列所存的值。4、*降级,&升级5、定义数组指针:int (*p)[4]6、打印一个地址:原创 2012-11-14 18:00:55 · 482 阅读 · 0 评论 -
多线程同步和互斥的实现方法
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify转载 2013-07-18 10:52:43 · 1744 阅读 · 0 评论