自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 uboot启动

1.基本的硬件初始化(关闭看门狗和中断,MMU(带操作系统),CACHE。正点原子中:找到入口,链接脚本u-boot.lds ,查找入口函数_start,通过中断向量表查找到0x87800000。2.检测系统的内存映射 ,(从flash把 kernel,deb,rootfs搬移到内存)4.设置堆栈指针sp,提供c环境 ,从flash把uboot搬移到内存,运行速度快。uboot.bin uboot.imx(多了ddr的信息)3.拷贝内核映像和文件系统映像到RAM中。3.加载内核映像和文件系统映像。

2025-04-16 10:59:21 315

原创 day 7 嵌入式

主进程调用wait函数阻塞等待回收子进程,父进程先于子进程结束叫做孤儿进程,所有的孤儿进程都自动成为 init 进程(进程号为 1)的子进程,子进程优先父进程结束,父进程未收尸,子进程变成僵尸进程,没有调用wait。守护进程:长期运行的进程,不会被注销掉,脱离终端,比如服务器,子进程故意把父进程结束。//遍历pos,如果pos的地址等于strstr第一次返回的地址,则进行替换,否则pos++,2.p操作使进程申请资源,等待进程进入s-1,,v操作使进程释放一个进程资源,让进程出来,s+1,

2025-03-26 11:34:33 718

原创 day6 嵌入式

进程是资源分配的基本单位,线程是进程执行的基本单元,每一个进程占用独立的内存空间,线程共享内存空间,一个线程奔溃可能导致整个程序奔溃,是独立的进程,拥有各自的地址空间,子进程会继承父进程打开的文件描述符,不会复制父进程的线程、信号处理函数、定时器等资源,b函数重载要求同名函数的参数列表(参数的类型、数量或顺序)必须不同。已经到达尾部返回非零通常为1,未到达尾部返回 -1;派生类中的虚函数必须与基类中的虚函数具有相同的。b 通信方式,tcp需要连接,udp不需要连接。c运行态,得到cpu调度,程序执行过程。

2025-03-24 10:46:40 406

原创 day5嵌入式

程序出错的时候都会产生一个core文件,ulimit -c ,如果输出为0,表示被禁用,输入ulimit -c unlimited ,为了能够使用。信号量 是一个计数器,共享资源的访问,相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。要将a 的第三位设置为1,比如二进制数 0001,先左移三位 1000, 按位或 , 即a | = (a <<3);通过函数引用或者指针调用外部函数,作为一个参数被调用,异步执行,中断,网络编程,文件读写,定时任务,

2025-03-20 15:19:49 533

原创 day4 嵌入式

h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )sck时钟线进行同步,每个时钟周期传输一位数,一般采用MSB高位先行的方式,如图,在上升沿时,mosi ,miso数据发生变化,在下降沿时,被采样数据有效,SPI 每次数据传输可以 8 位或 16 位为单位。

2025-03-18 11:34:53 567

原创 day 3 嵌入式

malloc需要制定内存空间大小,是库函数,new自动析构,是c++函数,不需要制定内存,malloc返回void*, new返回对应对象的指针。数组名代表首地址,不可改变指向,指针访问元素需要解引用*,利用指针访问是间接访问,利用数组访问是直接访问。局部变量的生命周期仅限于函数内部,函数返回后其内存被回收 ,不要返回局部变量的地址,最好返回局部变量的值。类A派生类B和C,类D从B,C派生,如何将一个类A的指针指向一个类D的实例,写出代码。

2025-03-17 15:22:26 448

原创 day2 嵌入式

核心理念是 从后往前数没遇到空格就加加,可以根据指针来算;//int 为4 最大。//int 为4 最大。内存大小为8+8=16 前面两个存在了8个字节的内存中。链表的存储不连续,需要遍历查找,增删改方便。数组的存储是连续的,方便查找,增删改不便。使用宏定义比较大小时,注意要把参数扩起来。//int 为4 最大。定义在函数内部,只能在函数内部使用。#include "" 访问当前路径。例如 typedef struct。内存大小为4+4+4=12。#include<>库文件。typedef 是关键字。

2025-03-12 16:35:56 429

原创 day1 嵌入式软件学习

动态多态,基类与子类的函数同名,基类可定义virtual ,子类同名意义相同,或者使用纯虚函数,即 virtual int area()= 0;函数指针为指针,指向一个函数,int(*ptr)(int,int)=&add;operator重载比如+ ,- 等等,可以让两个类的对象相加,相减。指针函数为函数,返回值为指针的函数,void *p(void);数组指针为指针,指向一个数组,int(*a)[10];指针数组为数组,里面全是指针,int*a[10]a[2]调用两次, *p调用一次,调用三次选d。

2025-03-11 21:05:25 271

原创 linux 线程总结

在父、子进程当中,父进程可通过 wait()函数(或其变体 waitpid())阻塞等待子进程退出并获取其终止 状态,回收子进程资源,而在线程当中,也需要如此,通过调用 pthread_join()函数来阻塞等待线程的终止, 并获取线程的退出码,回收线程资源,如果线程终止后,其它线程没有调用 pthread_join()函数来回收该线程,那么该线程将变成僵尸线程。如果主线程调用了 pthread_exit(),那么主线程也会终止, 但其它线程依然正常运行,直到进程中的所有线程终止才会使得进程终止。

2025-03-06 17:29:06 366

原创 C++容器

迭代器封装了指针,是一个“可遍历STL( Standard Template Library)容器 内全部或部分元素”的对象, 本质是封装了原生指针,是指针概念的一种提升(lift),提供了比指针更 高级的行为,相当于一种智能指针,他可以根据不同类型的数据结构来实现不同的++,--等操作。对于关联容器map set来说,使用了erase(iterator)后,当前元素的迭代器失效,但是其结构是红黑树, 删除当前元素的,不会影响到下一个元素的迭代器,所以在调用erase之前,记录下一个元素的迭代器即 可。

2025-03-05 17:42:23 917

原创 c语言变量和函数

函数调用操作所使用的栈部分叫做栈帧结构,每个函数调用都有属于自己的栈帧结构,栈帧结构由两个 指针指定,帧指针(指向起始),栈指针(指向栈顶),函数对大多数数据的访问都是基于帧指针。C++默认的析构函数不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存。如果析构函数不被声明成虚函数,则编译器实施静态绑定,在删除基类指针时,只会调用基类的析构函数而不调用派生类析构函数,这样就会造成派生类对象析构不完全,造成内存泄漏。虚函数重载了基类的fun,输出我是b,说明虚函数表指向了b。

2025-03-03 21:42:44 342

原创 c语言预处理

INTPTR1 pl, p2进行字符串替换后变成 int*p1,p2 ,要表达的意义是声明一个指针变量p1和一个整型变量p2.而 INTPTR2 p3, p4,由于 INTPTR2是具有含义的,告诉我们是一个指向整型数据的指针,那么p3和p4都为指针变量,这句相当于 int*pl,*p2 .从这里可以看出,进行宏替换是不含任何意义的替换,仅仅为字符串替换;例如, typedef int INTEGER ,这以后就可用 INTEGER来代替int作整型变量的类型说明了,例如: INTEGER a,b;

2025-03-03 20:45:24 248

原创 指针的概念

2. 指针和引用的自增(++)运算符意义不同,指针是对内存地址自增,而引用是对值的自增。6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小,在32 位系统指针变量一般占用4字节内存。相同 1. 都是地址的概念,指针指向某一内存、它的内容是所指内存的地址;而引用的本质是指针 常量,指向对象不能变,但指向对象的值可以变。//p是指针,加个*号后可以转换成该指针指向的对象,此时fun的形参是一个引用值, //p指针指向的对象会转换成引用X。

2025-02-28 14:59:32 167

原创 c内存分配

→ 调用operator=,参数是值传递,所以先拷贝构造p的副本,输出"拷贝构造",然后进入operator=函数体,输出"赋值构造"3.栈 栈的空间由操作系统自动分配/释放,向低地址扩展的数据结构,是一块连续的内存的区域,C语言中栈用来存储临时变量,栈是多线程编程的基石。堆是向高地址扩展的数据结构,受限于计算机系统中有效的虚拟内存,先进后出。同一类其他对象的初始化,形参一定是引用,一般为const。2一个对象作为函数返回值,以值传递的方式从函数返回。cout << "拷贝构造" << endl;

2025-02-27 15:26:43 232

原创 socket通信

服务器调用 listen()函数之后,就会进入到监听状态,等待客户端的连接请求,使用 accept()函数获取客 户端的连接请求并建立连接,没有连接会进入阻塞状态,如果有链接,accept()函数返回一个新的套接字(与客户端相关),这个套接字代表了服务 器与客户端的一个连接。建立连接后可以发送接收了,对于客户端使用 socket()返回的套接字描述符,而对于服务器来说,需要使用 accept()返回的套接字描述符,接收发送函数。会将一个服务器的 套接字绑定到一个众所周知的地址。//清零 //填充变量。

2025-02-26 21:53:27 217

原创 c关键字学习

uion里面最大的变量类型是int[5],所以占用20个字节,它的大小是20,而 由于 union中 double占了8个字节,因此 union是要8个字节对齐,所占内存空间为8的倍数。对于所有的对象(不仅仅是静态对象),初始化都只有一次,而由于静态变量具有“记忆”功能,初始化 后,一直都没有被销毁,都会保存在内存区域中,所以不会再次初始化。1.不同之处在于联合体中所有成员共 用一块地址空间,即联合体只存放了一个被选中的成员,而结构体中所有成员占用空间是累加的,一个联合型变量的长度等于其最长的成员的长度。

2025-02-26 15:26:07 930

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除