自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不积极分子

要什么描述

  • 博客(198)
  • 收藏
  • 关注

原创 yocto本地离线构建时报错

禁用网络,从本地downloads中fetch源码。解决方案:在local.conf中添加。

2024-03-08 16:42:55 195

原创 Linux下C的默认标准

Linux下的C语言,在命名和使用时默认按照以下标准执行。2.TAB or 空格。

2024-03-04 11:30:12 177

原创 内核中的Kconfig文件

当在menuconfig配置为yes后,会在.config中生成相关配置,以ttyprintk为例,在.config中会生成以下内容。以内核中的ttyprintk.c为例,其位于/kernel-sources/dirver/char/ttyprintk.c。在char下添加test目录,其中test.c为main函数文件,在Kconfig中配置如下。CONFIG_TTY_PRINTK被定义为y,因此会编译ttyprintk.o。在ttyprintk.c的同级Makefile中有。在内核代码中会有以下内容。

2024-03-04 11:10:06 365

原创 ROM和RAM的区别

4.ROM通常不需要初始化,可直接使用,RAM需要初始化。2.ROM只读,RAM可读可写,切读写速度更快。3.ROM一般用于存放芯片厂商固化的代码、固件。

2024-02-26 15:30:27 260

原创 svn co 大型项目

使用svn update --set-depth infinity A 只co /project1/A。svn co大型项目时,可能会因为网络带宽等问题导致co失败。可以采用分级co的方法例如svn库上的目录结构如下。那么我可以先co空目录,然后再空目录下co项目。使用svn list 会显示可以co的文件。然后进入FILE/project1。使用该方法可以保证目录结构的完整性。

2024-02-25 15:57:46 403

原创 uuu中的boot_partition

在uboot源码的fastboot模块,fb_fsl_dev.c文件中的process_flash_blkdev函数会通过get_fastboot_target_dev函数来获取uuu配置的环境变量boot_partition。uuu中的mmc dev 命令。在烧录时,uuu文件中会设置。1 对应 boot0。2 对应 boot1。

2024-02-25 11:17:32 145

原创 imx6ull基于yocto工程的l汇编点亮ed

在裸机状态下通过汇编点亮led,即没有操作系统,(uboot kernel rootfs 都不需要实现)。

2024-01-13 23:10:44 597

原创 内核模块(yocto下添加内核模块)

内核模块

2023-04-01 15:53:35 962 2

原创 ARM流水线

CPU工作需要三个步骤取址译码执行类似于图一的三个工人,PC中的地址 即对用的取值操作,而此时CPU正在执行的指令为PC - 8。

2023-02-27 15:43:11 119

原创 ARM异常处理

高优先级可以打断低优先级,例如进入了FIQ中断模式,按复位键,系统复位。ARM产生异常后的动作(自动完成)当异常处理函数执行完毕后的操作。

2023-02-27 15:35:23 388

原创 ARM中的寄存器

ARM寄存器为32位,按理说只能进行32位以内的运算,但实际ARM运用了将大数换成小数,然后利用进位的方法来计算大数的加减例如。红 17 + 黄 8 + 3 + 3 + 3 + 3 + 3 =为社么要保留r0~r7每个模式下都可以公用?Bit[4:0] 表示程序目前处于什么状态。Bit[5] 指令集 一般都为ARM状态。但是这样也会有新的问题 那就是进位。r15就是我们常说的PC指针。

2023-02-27 14:49:24 2184

原创 ARTM基础知识

定义:本质上就是物理上的一根束线,用于各个部件之间传送信息的公共通信干线,按传输类型的不同可以分为,数据总线、地址总线、控制总线。PC寄存器存储了CPU下一条指令的地址,从CPU从PC寄存器中读取该地址,把指令返回到CPU中的指令寄存器(IR)定义:即片上系统,将一个系统中所需要的全部部件集成在一个芯片中。即除了CPU以外,还包括相关的硬件等必要部分。对指令寄存器(IR)的命令进行译码,翻译成机器指令。控制器控制运算器对机器指令进行执行。

2023-02-27 11:00:19 136

原创 yocto如何使用低版本的bb文件bitbake

yocto如何使用低版本的bb文件bitbake

2023-02-17 11:18:29 392 1

原创 yocto创建自己的machine

如何创建自己的machine

2023-02-14 23:20:57 1005

原创 ubantu升级内核版本

替换内核版本

2023-02-14 20:45:19 570

原创 【无标题】

yocto离线搭建

2023-02-10 14:16:14 562

原创 imx6solox M4核demo演示

前提准备imx6solox必须先启动A9核,完成相关的配置后,才能启动M4核。通过mfgtools将uboot烧录到开发板的emmc中进入uboot命令 通过tftp烧录kernel dtb 和 rootfs安装M4核网卡驱动准备FreeRTOS准备armgcc 和 cmakedemo演示首先准备.bin文件下载好 FreeRTOS 后在FreeRTOS_BSP_1.0.1_iMX6SX.tar\FreeRTOS_BSP_1.0.1_iMX6SX\examples\imx6sx_sd

2021-09-13 15:51:36 451 1

原创 总结与不足

从yocto开始什么是yoctoYocto项目是一个开源协作项目,可帮助开发人员创建基于Linux的定制系统,这些系统专为嵌入式产品而设计imx8搭建yocto环境注意:不能使用root用户搭建yocto环境基于yocto手册《i.MX Yocto Project User’s Guide》安装必要的软件包sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ build-essenti

2021-08-23 15:28:49 462

原创 Linux环境变量

Linux环境变量linux中设置环境变量如abc=123只有当前进程可以使用,进入到子进程后/bin/bashecho $abc 不会显示123当使用export为全局变量后 子进程可以使用取消 unset 变量名shell配置文件/etc/profile所有用户登录的时候都会执行~/profile 当前用户登录时才执行修改配置文件 将变量写入到/etc/bash.bashrc文件中则可在所有终端中使用若只想某一用户使用 则写入到 ~/.bashrc中源码包和二进制包源码包

2021-08-02 15:20:18 169

原创 ARM汇编指令

ARM汇编指令寄存器间数据传输mov 将寄存器中数据或立即数拷贝到寄存器中mov r1,r0 //将ro中的数据拷贝到r1mov r1,#0x12mrs:读取程序状态寄存器mrs r1,cpsr // cpsr中的信息拷贝到r1中msr:写程序状态及村子msr cpsr,r1// r1中的程序状态写入cpsr内存与寄存器数据传输ldr:把内存或立即数加载到寄存器ldr r0,=0x12ldr r1,[r0]str: 把寄存器数据写入内存str r1,[r0]push

2021-07-29 14:20:18 251

原创 2021-07-29

ARM-V7架构运行模式用户模式(USR) 资源访问受限系统模式(SYS) 与用户模式共用寄存器,资源访问不受限制一般中断(IRQ)一般中断模式,硬件产生中断信号快速中断模式(FIQ) 时间紧急情况下,高速信号的传输、采集SVC 管理模式 默认模式,系统初始化Abort(ABT) 数据访问终止模式 段错误 非法访问地址或寄存器UND 未定义指令模式 程序跑飞 篡改寄存器组r0~r3 函数的参数,暂存数据r4~r11 函数的局部变量、暂存数据r12 存放函数调用过程中上一次的Sp

2021-07-29 13:59:32 78

原创 禁止Windows自动更新

关闭windows自动更新服务service.msc windows update 禁用+ 回复 关闭本地组策略 gpedit.msc 管理模板 window组件 windows update 禁用

2021-01-27 11:56:04 136

原创 归并排序

先拆后合分为两部分,两部分都有序后再合并终止条件:left = right//作者:蒋伟泉#include <iostream>#include <ctime>#include <vector>using namespace std;const int MAX_SIZE = 15;const int NUM = 100;vector<int> generate(){//for test srand(time(NULL)); vector

2020-10-06 10:22:13 86

原创 2020-09-30

1.1001个数在范围[1,1000],只有一个数出现两次,其余都出现一次,找出这个数,时间o(N) 且不使用额空间。思路:把[1,1000]这1000个数目标的1001个数异或 所得值就是目标答案。(相同数^为0)#include <iostream>#include<algorithm>#include<ctime>using namespace std;const int N = 1000;int array[N + 2] = { 0 };void

2020-09-30 19:17:37 92

原创 list

listlist 容器迭代器最大的不同在于,其配备的迭代器类型为双向迭代器,而不再是随机访问迭代器。它们支持使用 ++p1、 p1++、 p1–、 p1++、 *p1、 p1==p2 以及 p1!=p2 运算符,p1[i]:不能通过下标访问 list 容器中指定位置处的元素。p1-=i、 p1+=i、 p1+i 、p1-i:双向迭代器 p1 不支持使用 -=、+=、+、- 运算符。p1<p2、 p1>p2、 p1<=p2、 p1>=p2:双向迭代器 p1、p2 不支持使用

2020-08-29 16:56:23 129

原创 deque

deque双端队列容器头插头删尾插尾删复杂度1deque 容器中存储元素并不能保证所有元素都存储到连续的内存空间中。创建方式和vector一样deque底层实现原理deque 容器存储数据的空间是由一段一段等长的连续空间构成,各段空间之间并不一定是连续的为了管理这些连续空间,deque 容器用数组(数组名假设为 map)存储着各个连续空间的首地址。也就是说,map 数组中存储的都是指针,指向那些真正用来存储数据的各个连续空间(如图 1 所示)。通过建立 map 数组,deque 容器申请的这

2020-08-29 16:36:19 186

原创 vector

vector动态数组,可随机访问,尾插尾删复杂度为1,中间为n可自动扩容(为安全起见,扩容后迭代器应重新复制,insert亦是如此)创建1.vector<int> primes {2, 3, 5, 7, 11, 13, 17, 19};2.vector<double> values(20);20个元素且全部默认为0 3.std::vector<double> values(N,data);N个元素全部为data4.可以使用拷贝构造,std::vector&

2020-08-29 16:24:38 120

原创 array

array静态数组,数组个数一经确认不可修改。初始化array<int,10>a;垃圾值array<int,10>a{};全部为0array<int, 10>a{ 1, 2, 3 };不能这样赋值 errorgetarray 容器还提供了 get<n> 模板函数,它是一个辅助函数,能够获取到容器的第 n 个元素用法 get<常量>(变量名) array<string, 5> words{ "one","two"

2020-08-29 14:31:59 120

原创 c++细节

关于拷贝构造函数1.参数应该为引用,并加上const 如果不是引用,是传值,那么就会有一次形参和实参的拷贝,这本身又是一次拷贝构造,因此会无限循环。 为啥加const 1.让const类型对象可以用来拷贝构造2.防止修改原对象。2.默认拷贝构造函数 简单的赋值,浅拷贝,如果有手动开辟的堆空间,只是改变的指针指向并没有真正的复制。什么时候回调用拷贝构造函数? 首先明白初始化和复制的区别 int a = 100; //以赋值的方式初始化 初始化 a = 200; //赋值 int b;

2020-08-29 11:58:52 153

原创 异常

捕获异常try{ // 可能抛出异常的语句}catch(exceptionType variable){ // 处理异常的语句}try和catch是连一起用的,中间不允许有其他内容。如果try抛出了异常,且被catch捕获才执行catch中的代码,一旦有错误抛出,就不在执行try中代码而是直接跳到catch。exceptionType 指的是异常类型,根据抛出异常的类型来设定,并接受,可以是指针、数组、字符串、结构体、类。参数可以写成三个点即…由于匹配任何类型异常,但不会接收这

2020-08-29 10:14:11 101

原创 2020-08-28

在类外定义成员函数。在类外定义成员函数时仍然需要带上模板头。类模板在实例化时必须显式地指明数据类型,编译器不能根据给定的数据推演出数据类型。而对于函数模板,调用函数时可以不显式地指明实参(也就是具体的类型)这种通过函数实参来确定模板实参(也就是类型参数的具体类型)的过程称为模板实参推断。对于函数模板,类型转换则受到了更多的限制,仅能进行「const 转换」和「数组或函数指针转换」,其他的都不能应用于函数模板。当函数形参是引用类型时,数组不会转换为指针模板所支持的类型是宽泛的,没有限制的,我们可以

2020-08-28 10:37:03 84

原创 2020-08-27

继承与派生:权限public>protected>private 如继承方式为A,其最高权限不超过Aprivate 始终不能用(通过指针可以突破继承方式的限制)即使是pirvate的成员变量,也会被继承并且会占用内存(只是没有权限访问),并采用基类的构造函数。继承时名字遮蔽问题:名字相同时,派生类的函数会遮蔽基类的函数(不构成重载),如果要使用基类的函数,需要加上域名解析符(int可以转为bool)C类对象如果调用func函数,从内到外一层层找(只找函数名),可以使用A和B类的

2020-08-27 16:34:05 84

原创 c++复习

类也可以写在命名空间内部。C语言中的const修饰的变量可以用指针来修改,c++不行(类似于define的宏替换,宏替换在预处理阶段const在编译阶段)C和C++中全局 const 变量的作用域相同,都是当前文件,不同的是它们的可见范围:C语言中 const 全局变量的可见范围是整个程序,在其他文件中使用 extern 声明后就可以使用;而C++中 const 全局变量的可见范围仅限于当前文件,在其他文件中不可见,所以它可以定义在头文件中,多次引入后也不会出错。new和delete会自动调用构造和析

2020-08-26 22:35:51 137

原创 2020-08-23

栈溢出:每个程序,栈可以使用的内存是有限的,超出这个上限则会溢出。会将栈中其他信息覆盖掉如esp ebp函数与栈函数在执行的时候会将函数的全部信息压入栈中,栈帧。包括函数的返回地址(函数执行完毕后执行哪个地方的代码,记录这个代码在内存中的位置)参数 局部变量临时数据需要保存的寄存器内存池:用malloc申请内存空间的时候,并不是申请多少就给多少,而是操作系统给malloc一块空间,让malloc来管理,再次申请时让malloc来分配,只有当不够用的时候再让操作系统分配新的空间给mall

2020-08-23 21:53:40 66

原创 C语言复习-共用体

共用体(Union),它的定义格式为:union 共用体名{成员列表};共用体和结构体的区别:结构体的各个成员占用不同内存互不影响,共同体成员占用同一段内存。共用体内存等于最长成员内存,同一时刻只能保存一个成员的值。(多用于单片机)位域在结构体定义时,我们可以指定某个成员变量所占用的二进制位数(Bit),这就是位域。struct bs{unsigned m;unsigned n: 4;unsigned char ch: 6;};位域的宽度不能超过它所依附的数据类型的长度。C语言标准

2020-08-23 12:01:13 217

原创 2020-08-22

include使用尖括号< >,编译器会到系统路径下查找头文件;而使用双引号" ",编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。「在头文件中定义定义函数和全局变量」这种认知是原则性的错误!不管是标准头文件,还是自定义头文件,都只能包含变量和函数的声明,不能包含定义,否则在多次引入时会引起重复定义错误。#define和宏定义宏替换是在预处理阶段完成的暴力替换(注意括号 很容易出错)宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单粗

2020-08-22 23:07:57 85

原创 C语言复习数组

数组的初始化当赋值的元素少于数组总体元素的时候,剩余的元素自动初始化为 0:对于short、int、long,就是整数 0;对于char,就是字符 ‘\0’;对于float、double,就是小数 0.0。没赋值的都为0根据 ASCII 码表,字符’\0’的编码值就是 0。下面的形式将数组的所有元素初始化为 0:int nums[10] = {0};char str[10] = {0};float scores[10] = {0.0};二维数组可以不声明行数但是必须声明有多少列字符数

2020-08-22 19:02:18 142

原创 C语言复习循环

关系运算符的优先级低于算术运算符(==和!=在关系运算符中优先级最低),高于赋值运算符kji+5注意if判断中的=和==例如if (a=b)和if(a==b)赋值运算符 逻辑运算符与或 关系运算符 算术运算符 非优先级从低到高switch1)case后面必须是整数 不能是变量2)如果没有break 则会继续执行后面的代码3)可以没有defalut三目元算符a>b ? a : c>d ? c : d等价于a>b ? a : c>d ? c : dfor(表

2020-08-22 18:19:21 102

原创 C语言复习-输入输出

printf 对齐例如:%-9d 左对齐 至少9个字符宽度 %9d右对齐至少9个字符宽度scanfint a, b, c;scanf("%d %d", &a, &b);//以空格分界即可 例如:100 200scanf("%d %d", &a, &b);//同上scanf("%d, %d, %d", &a, &b, &c);//必须以,分开 例如:100,200,300scanf("%d is bigger than %d", &am

2020-08-22 17:44:50 260

原创 C语言复习-变量和数据类型

变量:一块固定大小的内存空间,可以存放可修改的数据(规定了数据的读取方式,以及数据的长度)%ds输出,s会当成字符输出 %d针对的是十进制有符号整型(int) %u无符号 都是针对补码来输出的%hd 十进制short %ld十进制long %l十进制float %lf 十进制double 默认小数点后面输出六位使用%d来输出long或%hd来输出int都有可能出错(数据截断)原码反码补码:正数:原码=反码=补码负数:补码 = 反码+1 反码 = 原码除符号位取反使用 二进制-0B 八

2020-08-21 23:13:36 242

空空如也

空空如也

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

TA关注的人

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