
嵌入式软件开发
文章平均质量分 85
唯爱金金
这个作者很懒,什么都没留下…
展开
-
嵌入式软件开发 day27(QT安装使用)
QT图形界面的开发工具下载百度搜索:download.qt.ioIndex of / (qt.io)手册百度搜索:doc.qtAll Classes | Qt 5.9== 关键字模糊搜索快捷键:ctrl + F==安装创建工程使用工程原创 2021-09-23 11:31:14 · 259 阅读 · 0 评论 -
嵌入式软件开发 day26(C++基础)
C++c 面向过程c++ 面向对象后缀名:.cpp编译:g++名空间 命名空间管理using namespace std; //指定默认的名空间:: //欲解析运算符,指定名空间的函数C语言头文件:<stdio.h> <string.h>C++头文件:<iostream> <cstring> //兼容性强,可以包含除自己本身的C语言的头文件一、数据的输入与输出1.cin (输入) – 默认与键盘链接,接受从键盘输入的数据信息。原创 2021-09-22 18:19:52 · 672 阅读 · 0 评论 -
嵌入式软件开发 day25(套接字)
APUE命令:netstat(查看网络状态)-anu :查看udp(报式套接字)-ant:查看tcp(流式套接字)网络IPC:套接字查看网络设备命令:ip ad sh -> 查看设备索引号 ,ifconfigIPC_PRIVATE:匿名ipc/proc/一、套接字描述符1.1 socket()描述:创建一个端口去通信(用协议族domain 中的某个协议protocol 来完成type类型的传输)手册:man socket头文件:#include <sys/typ原创 2021-09-22 17:28:06 · 416 阅读 · 0 评论 -
嵌入式软件开发 day24(进程间通信)
APUE一、进程间通信什么是进程间通信(ipc)进程间通信数据传输(多个进程间进行数据传输)资源共享(不同进程间使用系统资源不同,eg:文件,内存)事件通知(当进程发生特定事件,希望把这些事件告诉给另外一些进程,让另外一些进程及时作出反应)进程控制(在一个进程里控制另一个进程的执行。eg:用调试工具进行程序调试,需要控制程序单步执行,在调试工具进程里对另一个进程进行控制)Linux系统下的ipc早期unix系统ipc(Linux系统诞生之初已经存在的两个系统间通信)管道(数据原创 2021-09-22 17:21:52 · 490 阅读 · 0 评论 -
嵌入式软件开发 day23(高级IO)
APUE高级IOIO的操作模式:阻塞,非阻塞回顾嵌入式开发day14文件io一、函数fcntl()描述:改变已经打开文件的属性手册:man fcntl头文件:#include <unistd.h>#include <fcntl.h>函数原型:int fcntl(int fd, int cmd, ... /* arg */ );fd – 打开的文件描述符cmd – 命令位图(详见man手册)例:F_GETFD (void)//获取原创 2021-09-15 19:40:24 · 198 阅读 · 0 评论 -
嵌入式软件开发 day22(线程)
APUE线程并发只是一套标准,而不是实现标准:posix,openmp线程:程序中正在运行的函数多进程并发:先有实现后有标准(通信:独立于两个进程外的文件:管道,套接字)多线程并发:先有标准后有实现(通信:全局变量)线程ps -axm :以详细的信息进行查看线程ps ax -L :LWP:线程id线程标识pthread_equal()描述:比较线程ID手册:man pthread_equal头文件:#include <pthread.h>函数原型:原创 2021-09-13 09:41:27 · 192 阅读 · 0 评论 -
嵌入式软件开发 day21(信号)
APUE10章.初级异步 , 11章.强烈异步同步:结果可预见的异步:事件什么时候发生不知道,发生后会引起什么结果不知道setcontext & getcontext => 恢复被打断的函数现场 & 获取函数现场异步事件解决方法:1.查询法(主动去看) – 异步事件发生的比较稠密2.通知法(等待信号打断) – 异步事件发生的比较稀疏eg:1、江边搞到一条鱼(什么时候搞到不知道,发生的结果不知道)查询法:拿网捞,捞出来看看通知法:拿钓竿等,漂动了就知道鱼来了2、原创 2021-09-09 11:19:19 · 199 阅读 · 0 评论 -
嵌入式软件开发 day20(会话,守护进程)
APUE8.12解释器9.2终端登录13.3编程规则13.6守护进程惯例系统日志:/var/log/ 主日志文件:ubuntu 18.04 => syslog进程关系一、终端物理终端 => 需要依赖于具体设备进行打印信息输出串口终端lcd终端伪终端 => 不是依赖于物理设备的一个终端ssh远程连接产生的终端 ssh => 一个软件桌面系统启动的终端虚拟终端 => Linux内核自带的linux内核自带的,ctrl+a原创 2021-09-05 10:23:29 · 215 阅读 · 0 评论 -
嵌入式软件开发 day19(fork,wait,exec)
APUEmalloc:延迟分配fork面试题,阅读man手册带*的阻塞:一直死等非阻塞:尝试做,做不了就走进程控制参考day3进程管理PID:用到最大值后,再回到最开始插缝用进程一旦产生,会在就绪队列排队,等待调度,调度后再次进入就绪队列,再等待调度注意:进程间只有父子关系 例: 进程ABC,B死了,A不会管C,C由1号init接管一、进程标识进程标识:pid_t 类型 => 16位整型getpid()描述: 返回当前进程pid手册:man getpid头文件:原创 2021-09-02 16:55:10 · 211 阅读 · 0 评论 -
嵌入式软件开发 day18(进程环境)
进程环境7.3 进程终止 非常非常重要!!!!!!!!!pthread_exit(posix(标准) thread)abort():给本进程自己发送自杀信号一、进程终止1.1 钩子函数1.1.1 atexit()描述:当程序正常终止时,调用指定的函数 func。您可以在任何地方注册你的终止函数,但它会在程序终止的时候被调用。手册:man 3 atexit头文件:#include <stdlib.h>函数原型:int atexit(void (*function原创 2021-08-27 16:40:22 · 170 阅读 · 0 评论 -
嵌入式软件开发 day17(口令)
系统数据文件和信息一、crypt()描述:通过传入的salt加密算法对key生成加密口令。手册:man crypt头文件:#define _XOPEN_SOURCE /* See feature_test_macros(7) */#include <unistd.h>函数原型:char *crypt(const char *key, const char *salt);key – 口令原文(要加密的明文)salt – 杂字串(密钥) 格式: ididi原创 2021-08-27 16:59:28 · 244 阅读 · 0 评论 -
嵌入式软件开发 day16(时间和日期例程)
系统数据文件和信息一、时间和日期例程1.1 time()描述:从内核中拿出一个时间手册:man 2 time头文件:#include <time.h>函数原型:time_t time(time_t *tloc);返回值:成功:返回time_t类型的大时间段失败:-1用法:time_t stamp;1.time(&stamp); //时间会回填到变量中2.stamp = time(NULL); //注意:参数不传的时候要NULL1.2 localti原创 2021-08-27 16:35:00 · 383 阅读 · 0 评论 -
嵌入式软件开发 day15(文件和目录)
文件和目录一、stat()描述:把文件pathname的属性填入到结构体statbuf中注意:stat与lstat区别stat:展开符号链接,回填的是符号链接所指向的文件的属性fstat:回填的是所打开文件的文件属性lstat:不展开符号链接,回填的是符号链接本身的文件属性头文件:#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>函数原型:int stat(con原创 2021-08-23 19:40:22 · 314 阅读 · 0 评论 -
嵌入式软件开发 day14(标准IO 文件IO)
APUEIO:标准io(std)(5)文件io(sys)(3)高级io(adv)(14)(阻塞的,非阻塞的)并发:信号(10,8)进程,多线程(11,12)IPC:PIPE管道(15)XSI:msg,sem,shm(15)SOCKET(套接字跨网络的,不在一台主机上的):dgram,stream(16)杂:4,6,7,9,13标准IOIO:inpute & output 是一切实现的基础stdio=>标准io 贯穿始终的类型:FILE* &l原创 2021-08-20 17:46:47 · 317 阅读 · 0 评论 -
嵌入式软件开发 day13(静态库,动态库)
一、静态库libxx.axx 指代库名1.1 创建静态库先生成一个.o文件gcc -c llist.c =>llist.o语法:ar -cr libxx.a yyy.o-cr 创建静态库ar -cr libllist.a llist.o发布到:头文件:/usr/local/includecp llist.h /usr/local/include库文件:/usr/local/libmv libllist.a /usr/loca/lib 1.2 调用静态库语法原创 2021-08-16 17:16:27 · 217 阅读 · 0 评论 -
嵌入式软件开发 day12(线性表,单链表,双链表,栈,队列,二叉树)
一、线性表线性表的特征:数据元素之间具有一种“一对一”的逻辑关系。第一个数据元素没有前驱,这个数据元素被称为头结点;最后一个数据元素没有后继,这个数据元素被称为尾结点;除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继。1.1 顺序存储的线性表1.1.1 创建定义结构体#define DATAMAX 128typedef struct{ int data[DATAMAX]; int last;}SQLIST;创建SQLIST *sqlist_c原创 2021-08-16 17:14:28 · 207 阅读 · 0 评论 -
嵌入式软件开发 day11(数据结构)
数据结构(date structure)数据与数据之间的关系一、关系1.1 线性关系1:1(一对一)线性表特点:有一个前驱,一个后继头节点只有一个后继尾节点只有一个前驱1.1.1 线性表顺序存储的线性表链式存储的线性表单链表双链表1.2 树状关系公司的组织结构图学校组织结构图家谱1:N(一对多)特点:有方向,没有环路1.3 图状关系生产环境中使用较多m:n(多对多)特点:没方向,有环路二、存储2.1 顺序存储特点:用一段地址连续原创 2021-08-16 16:55:21 · 172 阅读 · 0 评论 -
嵌入式软件开发 day10(make,makefile)
管理项目一、条件编译作用:包含头文件时,防止重复定义#ifndef _MOD_1_H__#define #endif二、Make和Makefile2.1 make和Makefile关系make工具:找出修改过的文件,根据依赖关系,找出受影响的相关文件,最后按照规则单独编译这些文件。Makefile文件:记录依赖关系和编译规则。2.2 Makefile三要素目标、依赖、命令2.2.1 三要素的关系目标:依赖的文件或者是其他目标<tab>命令1<ta原创 2021-07-28 15:20:14 · 247 阅读 · 0 评论 -
嵌入式软件开发 day9(结构体,共用体,动态内存,编译过程)
嵌入式软件开发 day9构造类型一、结构体1.1 结构体定义和使用1.2 结构体成员引用1.3 结构体初始化及赋值1.4 结构体嵌套定义1.5 结构体类型指针1.6 结构体类型数组1.6.1 一维数组1.6.2 二维数组1.7 地址对齐的概念1.8 结构体做函数参数1.9 类型定义;(typedef)二、共用体1.1 共用体定义和使用1.2 所占内存空间1.3 成员引用三、动态内存管理3.1 malloc()3.2 free()编译过程gccgcc预处理c文件gcc编译c文件gcc编译汇编gcc链接可重定位原创 2021-07-27 16:53:32 · 951 阅读 · 0 评论 -
嵌入式软件开发 day8(函数)
函数函数是c语言开发的重要组成形式程序以main()作为入口出口一、函数的定义1.1 函数定义函数定义:<数据类型> <函数名称>( <形式参数说明> )函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return 表达式语法:返回值类型 函数名 (参数列表){ 函数体语句 return表达式}返回值类型 :一个函数可以返回一个值。在函数定义中函数名:给函数原创 2021-07-23 16:26:01 · 178 阅读 · 0 评论 -
嵌入式软件开发 day7(指针)
指针指针的作用: 可以通过指针间接访问内存定义:[数据类型]* 指针变量 = 值(地址)int i;int* p=&i;空指针:指向地址为0的指针空类型:void* m = NULL;不能做取*运算,用来传参和返回值。野指针:指针的指向不明确/指针的指向不归我们操作/空指针能有效地防止野指针产生示例:#include <stdio.h>#include <stdlib.h>int main(){ int i = 1; int *p =原创 2021-07-21 21:51:56 · 190 阅读 · 0 评论 -
嵌入式软件开发 day6(数组)
数组特点:相同数据类型**的变量,连续存放特点1:数组中的每个数据元素都是相同的数据类型特点2:数组是由连续的内存位置组成的数据类型:一切可以用的基本类型和构造类型一、一维数组数组名的命名规范与变量名命名规范一致,不要和变量重名数组中下标是从0开始索引1.1 定义及初始化用法:[存储类型] 数据类型 标识符[下标]1.2 数组的存储特点相同数据类型的变量,连续存放1.3 数组元素引用用法:数组名[下标]数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] =原创 2021-07-20 09:04:59 · 523 阅读 · 0 评论 -
嵌入式软件开发 day5(输入输出,流程控制)
一、输入输出1.printf用法:printf("format",var...); format:%[修饰符]格式符返回值:成功打印字符个数示例:int main(){ int i = 1234; float f = 3.333; char ch = 'x'; double d = 6.666; int ret; ret = printf("Hello World!\n"); printf("RET:%d\n",ret); printf("%d %.1f %c %.2lf原创 2021-07-16 16:41:02 · 558 阅读 · 0 评论 -
嵌入式软件开发 day4(数据类型,常量,变量,运算符)
要求练习随堂代码——老师讲解(复习!!!)当堂练习——老师讲解课下作业——例:20道题,有5道上课会讲解,先写优先讲解的课下自学C语言一百题——自己做(找题目读完之后有思路,能看懂的题做)答案:主要看思路C语言试题汇编——自己练习答案:与答案不同时,可能是运行环境不一样面试题——数组面试题基本概念清楚数组指针,指针数组函数指针,指针函数指向指针函数的函数指针数组指针常量,常量指针课堂上随口说的,可以试试,去扩展内容当天知识点会解答,三四天后知识点不会讲,自己琢磨去吧一.原创 2021-07-15 18:00:17 · 522 阅读 · 0 评论 -
嵌入式软件开发 day3(进程管理,重定向,文件查找压缩)
嵌入式软件开发 day3一、守关将军1.umask1)改umask值2.拓展:二、软件包管理1.安装方式2.拓展:三、进程管理1.进程的基本概念2.查看进程1)ps2)top3.进程状态1.僵尸进程2.托孤进程3.杀死进程四、重定向/管道1.重定向1)重定向符号:2)输出重定向 (覆盖,追加)3)输入重定向2.管道1)排序命令2)裁剪内容命令3)去重命令五、文件的查找1.which命令2.find命令1)按文件名:2)按文件大小:3)指定查找的目录深度:4)按时间找(atime,mtime,ctime):5原创 2021-07-14 15:59:20 · 240 阅读 · 0 评论 -
嵌入式软件开发 day2(操作权限)
嵌入式软件开发 day2一、操作权限类1.基本权限(r、w、x)2.查看权限3.更改权限4.更改文件的属主、属组5.特殊权限1.作用2.设置特殊权限一、操作权限类1.基本权限(r、w、x)权限对文件的影响对目录的影响r(读取)可以读取文件的内容可以列出目录的内容(文件名)w(写入)可以更改文件的内容可以创建或删除目录中的任一文件x(可执行)可以作为命令执行文件可以访问目录的内容(取决于目录中文件的权限)2.查看权限命令: ls -l-rw-r–原创 2021-07-13 14:54:10 · 502 阅读 · 0 评论 -
嵌入式软件开发 day1(查看文件,目录,vim操作)
学习路线简介LINUX基础C语言——GNU C库数据结构——DS(递归思想,链表带头的,不带头的)UNIX环境高级编程——APUE+QT => 研究多进程并发,多线程并发shell:用户和操作系统内核之间沟通的桥梁命令集合——你给命令,我给输出!!擅用TAB键!!一、快捷键用法含义^c终止前台运行的程序^l清屏(clear)^a光标移到命令行的最前端^e光标移到命令行的后端^u删除光标前所有字符^k删除光标后所有字.原创 2021-07-12 16:54:02 · 507 阅读 · 0 评论