嵌入式开发完整体系课程(含项目) 扫二维码继续学习 二维码时效为半小时

(170评价)
价格: 598.00元

linux下的nm工具可以查看可执行文件中的代码段信息。

grep命令可以查找文件中的想要查找的字符串

extern "C"

{

#include "test.h"

}

extern的作用是让里面的内容不发生倾轧行为,是为了C++文件调用C语言库时使用的,C中的函数名不允许发生倾轧。

[展开全文]
王布斯 · 06-21 · 0

1.cin等价于C语言中的scanf,也可以理解为是stdin

2.endl等价于‘\n’

3.cout等价于stdout

4.<<和>>在C++中表示数据的流向

[展开全文]
王布斯 · 06-20 · 0

内核链表头文件中有很多封装好的接口可以使用。

内核链表的本质是大结点中包含一个小的结构体,这个小结构体中是两个next和prev指针。通过这个小结构体中的指针将结点依次连接起来。

遍历内核链表可以使用专门的接口list_for_each,该函数可依次遍历内核链表中的小结构体,遍历完后需要调用 list_entry函数来找到大结点的地址,然后通过大结点访问里面的数据。

list_move_tail是将第一个参数中小结构体指向的结点移到第二个参数小结点指向的结点的前边,

[展开全文]
王布斯 · 06-16 · 0

宏INADDR_ANY的作用是获得本机的任意一个ip地址。

htonl函数是将文本ip地址转换成二进制长整型。

绑定ip地址时,可以将结构体srvaddr中的成员srvaddr.sin_addr.s_addr = htonl(INADDR_ANY);

Linux中listen(fd, 3)函数的第二个参数,代表最多处理几个连接,可连接个数为n+4,例如3就代表最多能处理7个。

inet_ntop可将二进制ip地址转换成字符串形式,返回值就是字符串。

[展开全文]
王布斯 · 06-13 · 0

server服务器端

1.使用socket函数生成一个socket文件描述符,socket函数的第三个参数一般设置为0

2.bind函数将socket描述符和ip地址以及端口port绑定

3.listen(fd)函数,将socket套接字变成监听套接字

4.accept(fd)函数里的参数是监听套接字,功能是返回一个新的fd',fd'被称为已连接套接字。

5.这时就可以通过read,write函数来读写fd'文件描述符,

6.最后关闭socket文件调用close(fd')或shutdown(fd')函数

client客户端(主动连接,主动挂断)

1.调用socket函数生成一个描述符fd

2.调用connect(fd)函数发送连接请求向服务器,服务器会发送一个回执,客户端再次回复连接成功,就返回一个已连接套接字

3.此时就可以使用已连接套接字的描述符,进行read,write函数进行读写操作

4.最后close或shutdown掉已连接套接字文件描述符

[展开全文]
王布斯 · 06-13 · 0

signal函数是信号注册函数,可以通过signal提前将目标信号注册执行动作,可以设置为忽略该信号,或者收到该信号后去执行某个函数。

sigprocmask函数是设置阻塞掩码的,就是可以设置阻塞某个信号。参数中第二个参数是信号集,说明可以阻塞多个信号,只要放在信号集中就可以,该函数也可以设置不阻塞信号,只需要修改第一个参数中的宏即可。

信号集的设置可以使用信号集操作函数簇,第一步清空信号集sigemptyset,然后调用sigaddset将指定信号添加到信号集中。

sigqueue函数也是用来发送信号的,只是可以携带更多发送者的信息。sigqueue和sigaction是配套使用的。相当于kill和signal的增强版。

sigaction也是注册函数,功能和signal一样,只不过注册的是f'函数,是带有额外信息的信号触发函数。

[展开全文]
王布斯 · 06-13 · 0

1. kill -l可以查看系统中所支持的信号

2.信号中从1-31所有的信号都是有特殊含义的(也叫非实时信号或者不可靠信号)(信号之间没有优先级,是可以嵌套使用的)(处理这一类的信号时,如果系统正在处理一个信号,此时有同种类型的信号又发送过来时,系统会自动忽略掉,只当又发送过来的同样的信号不存在)

3.后面的34-64之间的信号没有特殊含义(也叫可靠信号或者实时信号)(实时信号是有顺序的,按次序接收,不嵌套,按顺序处理不会被打断)

4.在shell命令中给一个进程发信号的命令是:kill -s 信号名(或者是信号的值,比如9) 进程PID号

5.ps -ef查看当前进程信息

6.如果同时开启了好多个同样的进程,可以使用命令killall 进程名    来同时杀死多个进程

7.sigset是一个信号的集合

sourceinsight软件中按ctrl键加鼠标左键,可以进入变量的定义中去

按alt+,(逗号)可以返回之前界面。

linux中查询信号的默认动作,shell命令是man 信号编号(如9) signal。

[展开全文]
王布斯 · 06-11 · 0

vim中按shift+k,会跳转到一个同名的变量或函数的man手册中。

创建有名管道的函数接口是mkfifo("file_name",mode);

创建完毕后使用open函数打开就可使用。

判断是否已经创建有有名管道文件的函数是access(const char *pathname, int mode);

[展开全文]
王布斯 · 06-10 · 0

exec函数簇的功能是父进程中调用,当需要子进程执行的代码量很大时,父进程中并不执行这些代码,但需要包含这些以复制给子进程,造成空间浪费,这时可以调用exec函数,参数中传入想要执行的程序或者路径,子进程就会照着这个路径去找执行程序,父进程中就不需要写太多多余的代码,导致空间浪费。

execl函数中的参数,第一个是可执行程序的路径,第二个是参数,执行程序本身就是参数,所以需要再写一遍,最后要写上NULL。函数传参的基本方式就是,argv[0] argv[1](如果有的话) NULL。

execv函数中的参数,是提前将传参的参数封装到一个数组中,将数组名传递给execv函数。

execlp函数可以执行shell命令,p是环境变量path的意思。

[展开全文]
王布斯 · 06-10 · 0

可执行程序运行时,输入命令./test程序会运行在前台进程组,输入命令./test &时,程序会运行在后台进程组,即后台运行,程序后台运行时,shell终端发出的命令比如ctrl+c是影响不了test进程运行的,但是计算机断电或者关闭终端,这种后台进程是可以被杀掉的

ps -ef命令可以查看当前的进程执行情况

使用精灵进程(守护进程)的目的是为了一个进程,需要他持续不断的运行,尽管终端关闭,他也能在后台运行,满足工作需求

[展开全文]
王布斯 · 06-10 · 0

1.进程僵尸是指进程退出后,他占用的资源并没有被立即释放掉。之所以不立即释放资源是因为子进程需要发送信号给他的父进程报告他是怎么死的,以及他的任务完成的情况,他占用的资源等信息保留在task_struct结构体中。子进程只有死亡状态时他占用的资源才会被回收释放掉。没有释放之前叫僵尸态。

2.父进程在子进程进入僵尸态后调用wait/waitpid函数来对子进程收尸,执行的操作有:读取里面的数据获得子进程任务执行的状况;获得子进程的退出状态;同步父子进程

[展开全文]
王布斯 · 06-10 · 0

1./var/cache/apt/archives这个路径下是用来存放ubuntu系统中下载的安装包的

[展开全文]
王布斯 · 05-25 · 0

在shell命令里面,返回值为0时表示语句执行成功,返回非0值表示语句执行不成功

 

测试某文件或某字符串等是否存在:test -e

 

if语句

elif语句

case语句

do while语句

until语句

for循环语句

[展开全文]

竖杠 |:管道:将前一个命令的输出当做后一个命令的输入

管道可以无限使用,且可以带参数使用

 

重定向描述符:

0号描述符使用<,

1,2号描述符使用:>,

>>,

[展开全文]

shell:命令解释器

strace:追踪命令调用接口

 

shell脚本:shell命令+控制流

C语言:

脚本语言:

[展开全文]

正则表达式:从很多信息中找到自己需要的信息

1.元字符

*:匹配一个除换行以外的任意符号

. :

$:匹配行尾

^:匹配行首

2.字符范围

3.重复:使前面的字符重复几次或者多次

?:使前面的字符重复一次

*:使前面的字符重复0次或多次

+:使前面的字符重复1次或多次

[n]:使前面的字符重复n次

[n,]:使前面的字符重复n次或以上

[n,m]:使前面的字符重复n到m次

4.贪婪与懒惰

[展开全文]

ARM体系结构:

ARM状态:执行32位ARM指令

THUMB指令:执行16位THUMB指令

ARM的处理器模式:

1.用户

2.系统模式

3.外部中断模式

4.快中断模式

5.管理模式

6.中止模式

7.未定义模式

 

ARM  V4版本以上的共有37个32位寄存器,有31个通用寄存器,6个状态寄存器。

R0-R7: 通用寄存器(适用所有模式),注:切换模式时小心该寄存器里的数据被覆盖,需做保护现场的处理

R8-R12:未分组的通用寄存器,快中断模式下有单独的一组

R13:通常用作堆栈指针(SP),存储函数变量

R14:链接寄存器(LR)

R15:程序计数器(PC)

CPSR/SPSR:状态寄存器

 

[展开全文]

流水线技术:

第一条指令:取指  译码   执行

第二条指令:         取指   译码   执行

第三条指令:                   取指   译码   执行

 

RISC:精简指令集,也指采用该指令集的处理器

[展开全文]