自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(161)
  • 资源 (10)
  • 收藏
  • 关注

原创 结构体指针

结构体指针

2022-09-13 16:57:05 177 1

原创 【数据结构 002】 算法复杂度

算法 数据结构

2022-07-14 21:59:06 365

原创 【数据结构 001】 定义

大话数据结构

2022-07-13 22:20:15 248

原创 imx6ull_kernel_移植

1. 文件目录结构2. 顶层Makefile理解3. kernel启动流程4. kernel移植心得:跟着左神一步一步操作,目前没有太多的理解硬件适配中网络驱动和emmc 8线适配讲解的最多,文件移植部分基本就是拷贝和粘贴。Q:1. 如果要从uboot官网拿到一份kernel代码,如何移植到板子上呢?这个挑战性很大 需要拿到多个版本的kernel均能够顺利移植到板子上,才算是移植掌握?2. 后面需要对上面的目录补充完整移植部分总结:(左...

2022-04-28 22:10:08 295

原创 个人思维方式提升

1. 思维方式要有长期计划,短期计划,周计划和日计划 工作和事业结合 家庭和工作结合2. 学习提升不能只做被动接收,泛泛而学 需要主动总结归纳 知识面也要广好的链接一个可怕的猜测:你的“努力”很有可能一辈子都是无效的...

2022-02-08 10:52:39 355

原创 Linux内核完全注释5.0版 (Note)

Linux内核完全注释

2022-01-10 19:43:42 1335

原创 Linux内核学习入门篇(1)---基础概念

Linux的由来不作介绍,网络很多。Linux和Unix基础也是由很多介绍。Linux特性内核空间:受保护的内存空间和硬件设备权限。被保护起来的内存空间叫做内核空间。用户空间:应用程序执行的空间。 应用空间一般只能访问部分系统资源。用户空间可以通过系统调用来与内核进行通信。内核需要维护:应用程序,内核进程,内核进程间通信,驱动设备以及中断处理。CPU在任何时刻都在以下三种状态之一:用户态: 用于执行用户进程内核态:处理进程的上下文,代表某个特定的进程执行...

2021-04-16 14:47:27 302

原创 二进制文件中每个16bit中,高低byte互换

目标:file1 中的每16bit数据进行高低byte互换。效果:废话不多说,上代码:#include <stdio.h>#include <string.h> /*mem head file*/#include <stdlib.h> /*FILE HEAD head file*/typedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;.

2021-03-22 18:05:27 1216

原创 I2S协议解析

目录I2S介绍I2S模式I2S协议采样->量化->编码SCK =2 * 采样频率(fs) * 采样位深(fwb)Note:​​​​​​​ I2S介绍 ​​​​​​​I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的数据传输,广泛应用于各种多媒体系统。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差...

2020-08-25 11:42:32 2637

原创 025_ARM常用汇编指令

今天主要讲解一下ARM中常用的汇编指令: 处理器内部传输数据指令 MOVMOV R0, R1 @将寄存器 R1 中的数据传递给 R0,即 R0=R1MOV R0, #0X12 @将立即数 0X12 传递给 R0 寄存器,即 R0=0X12MRSMRS R0, CPSR @将特殊寄存器 CPSR 里面的数据传递给 R0,即 R0=CPSRMSRMSR CPSR, R0 @将 R0 中的数据复制到 CPSR 中,即 CPSR=R0 存储器访问指令...

2020-08-19 20:51:25 277

原创 024_Makefile变量分类

Makefile变量分为即时变量: = 定义的变量,或者是+= 右边的变量是即时变量延时变量: := 定义的变量下面举例:#type1:# "=" is immediately variablename1 = zzk curname1 = $(name1) name1 = zuozhongkai #type2:# ":=" delay variablename2 = zzkcurname2 := $(name2)name2 = zuozhon

2020-08-17 21:36:43 323

原创 023_一个简单的Makefile例子

今天主要讲解一个简单的Makefile组成以及需要注意的地方:我们的结构很简单:main调用两个文件内部的API。main.c文件调用input.c和calcu.c两个文件来实现输入两个数并打印两个数的和到屏幕上:main.c#include <stdio.h>#include "input.h"#include "calcu.h"int main(int argc, char *argv[]){ int a, b, num; input_i

2020-08-17 20:58:31 174

原创 022_压缩指令 tar

tar常用选项:-c(create) 表示创建永安里生成文件包-x 表示可以提取,从文件包中提取文件-t 可以查看压缩的文件,-z 使用gzip方式进行处理,它与”c”结合就表示压缩,与”x”结合表示解压缩-j 使用bzip2方式进行处理,它与”c”结合表示压缩,与”x”结合表示解压缩。-v(overbose) 详细报告tar处理的信息-f(file) 表示文件,后面接着一个文件名。-C <指定目录> 解压到指定目录。tar打包,gzip压缩压缩...

2020-08-14 20:56:08 373

原创 022_压缩指令 gzip & bzip2

单个文件的压缩(解压)使用gzip和bzip2多个文件和目录使用targzip的常用选项-l(lsit) 列出压缩文件的内容-k(keep) 在压缩或解压时,保留输入文件-d(decompress) 将压缩文件进行解压缩查看gzip -l 压缩文件名比如: gzip -l pwd.1.gz解压gzip -d pwd.1.gz //解压后源文件就不存在了gzip -kd...

2020-08-14 20:54:00 500

原创 021_ find & grep指令

find : 查找符合条件的文件。在哪些目录中查找。 查找的内容。 格式: find 目录名 选项 查找条件 例: find . –name “*.txt” //查找当前目录下, 以”.txt”结尾的文件。// “.”当前目录 //”..”上一层目录, “ ~ ”在当前用户目录下...

2020-08-14 20:50:24 113

原创 020_ Makefile 常用函数

字符串替换分析函数$(subst, from, to, text):在text中使用”to”替换”from”。$(patsubst pattern, replacement, text):寻找text中符合”pattern” 的字,用”replacement”替换他们。注:”pattern”和”repalcement”中可以使用通配符。$(strip string):去掉前导和结尾空格,并将中间的多个空格压缩为单个空格。$(findstring find, in):在字符串”in”中...

2020-08-14 20:46:46 90

原创 019_ Makefile 通配符

%.c 表示xxx.c文件%.o 表示xxx.o文件 $@:表示规则的目标文件名; $^:表示所有依赖的名字,名字之间用空格隔开; $<:表示第一个依赖的文件名。 %:通配符,它和一个字符串中任意个数的字符相匹配。 ...

2020-08-14 20:45:21 167

原创 018_ Makefile初探

Linux中对于大型工程一般会采用Makefile的形式来编写编译的脚本。Makefile主要功能是提供目标和依赖之间的关系。1. Makefile的格式目标 :依赖<tab>指令。例:hello : hello.c gcc -o hello hello.c clean: rm -f hello2.变量Makefile中有两种变量:立即变量:定义时即确定下来。 定义格式:var := xxx 特殊情形: var1 += yyy, yyy在...

2020-08-14 20:40:37 98

原创 017_ vim的使用

vim是Linux中一项很重要的文本编辑软件:下面介绍一下用法:

2020-08-14 19:36:45 104

原创 003_指针指向字符串,查找字符

例1 计算字符串长度:int strlen(char *str){ int len = 0; while(*str++ != '\0') //比较str[i]不为'\0'时,指向下一个位置 len++; //计算长度 return len; }例2 查找字符串中是否含有目标字符:/*在字符串中查找特定的字符*/int find_char(char **str, char value){ char *string_t; int val_pos = 0;

2020-08-03 20:49:03 527

原创 002_指针-间接访问、左值、指针常量、指针的指针

指针的间接访问如下:int a;int *d = &a; //d指向变量a的地址*d = 10 - *d; //左边的*d 是以变量身份存在,右边的*d是以指针的形式存在d = 10 - *d; //这是一条非法语句。指针常量://假设地址100存放了整型数20*100 = 20; //这种方式为非法形式*((int*)100) = 20; //合法方式,/* * 解析: (int*)100是将100强制转换成指向内存地址100处且存放的值为int型的指针

2020-07-30 20:16:58 157

原创 001_指针变量

今天开始我们学习一下指针:1.地址和内存。指针的存在就是把存储变量的地址和内存结合起来。例如:int a = 1;int *p = &a; //*(p = &a)那么p就是指向整形变量a在内存中存储地址的指针。下面举个例子:#include <stdio.h>int main(void){ int a = 112; int b = -1; float c = 3.14; int *d = &a; //*(d=&am...

2020-07-26 15:18:31 174

原创 Timing解析

名词解释:H Total,Htotal = H Pixels + H Sync time + H Front Porch + H Back PorchH Pixels, 一行中有效的像素H Sync time, 行同步前沿宽度,即从行有效的像素结束到行同步开始的像素。表示水平同步信号的宽度,用VCLK计算。H Front Porch,表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数。H Back Porch,表示从水平同步信号开始到一行的有效数据开始之间的VCL的个数...

2020-07-10 14:40:15 3883

原创 Linux之uboot入门(四)---start.s分析

上一篇分析makefile,到uboot的启动代码。也称之为第一阶段。在lds链接脚本中指向cpu/arm920t/start.s&boot_init.s文件。那么我们今天从start.s文件开始分析。首先是硬件相关设定:1、设置CPU工作模式为svc32(这里为什么要设置为SVC32 mode,请参考https://blog.csdn.net/shao15232/article/details/106246517)reset: /* 设置CPU工作模式为SVC32 */

2020-05-20 23:14:55 347

原创 Linux之uboot入门(五)---CPU工作模式分析

先要了解ARM的CPU的7种模式是哪些: 用户模式(usr):ARM处理器正常的程序执行状态 快速中断模式(fiq):用于高速数据传输或通道处理 中断模式(irq):用于通用的中断处理 管理模式(svc):操作系统使用的保护模式 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护 系统模式(sys):运行具有特权的操作系统任务 ...

2020-05-20 22:59:30 383

原创 Linux之uboot入门(三)---make

上一篇我们分析了make config的具体过程。那么第二条指令就是make。在make的过程中,服务器做了哪些编译呢?还是分析Makefile,首先找到all, 这是make的终极目标。第242行可以找到all,他的依赖文件是240行的 $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND)我们看到其中之一是u_boot.bin那么接着往下找u_boot.bin的依赖:250行是u..

2020-05-15 23:20:38 226

原创 Linux之uboot入门(二)---make 100ask24x0_config

接着上一篇,在生成u_boot.bin文件之前。需要先做make config: make100ask24x0_config然后再make进行编译。本篇我们主要讲一下make 100ask24x0_config 这条指令做了哪些事情。1.首先看一下顶层的Makefile,当执行make 100ask24x0_config这条指令后,Makefile做了什么动作?输入make 100ask24x0_config后,在Makefile中找到100ask24x0_config定...

2020-05-14 23:20:00 348

原创 Linux之uboot入门(一)

前段时间因为各种原因,很久都没能上CSDN来写博客。今天从头开始再次撸一把韦东山老师的uboot。首先要对开发板的各种驱动进行安装,这个是每次过很久以后拿起开发板最头疼的事情。我喜欢用韦老师的DNW,下载速度快。所以我们今天就只用这个方式。 安装驱动 首先我们要把板子上电,把SERIAL和USB两个口都链接到PC。这个时候串口会自动更新出来。设置波特率115200即可。板子会有预安装好的u_boot,上电的瞬间可以从secureCRT上面看到log,倒计时3s内按下空格。可以看到如

2020-05-12 23:37:21 841

原创 C语言结构体

#include <stdio.h>#include <string.h>typedef struct Stu{ int age; char* name;}Student; void showInfo(Stu *s){ printf("age: %d\n", s->age); printf("name: %s\n", s->name);...

2020-04-21 10:07:45 115

原创 C++(五十五)之多继承中的菱形继承问题

菱形继承问题如下:他们共有一个祖先类,到最下面的类的时候,又合并成了一个类。对于Animal的属性,在Sheep和Camel中都被继承了一份。同样地,当SheepCamel多继承于Sheep和Camel的时候,就会出现重复成员的继承。这会造成内存不必要的开销。解决办法是使用虚基类继承。下面我们举例说明:/****************************...

2020-04-08 21:49:05 221

原创 C++(五十四)之多继承的概念

本篇主要来讲解一下多继承的概念,多继承模式:class A既可以拥有B1的属性,又可以拥有B2的属性。多继承也有缺陷,容易产生二义性。这个时候需要使用作用域来解决二义性的问题,下面上代码演示:/**************************************************** * brief : 多继承的概念及缺点 * author : ...

2020-04-07 22:12:47 149

原创 C++(五十三)之继承同名静态成员处理

上一篇讲解的是非静态成员,在继承中的处理。本篇主要讲解静态成员在继承中的处理。其实静态成员和非静态成员同名时,在使用的方法上是一样的。下面举例说明:/**************************************************** * brief : 继承中静态成员的处理 * author : shao * date : 2020-04-0...

2020-04-07 21:38:58 194

原创 C++(五十二)之继承同名成员处理

继承中,有时候会遇到子类和父类的成员名相同。无论是成员变量,还是成员函数。在调用的时候,编译器都会执行就近原则。当子类想要调用父类的成员时,需要使用父类的作用域。同名后,父类的成员会被自动隐藏,除非显示调用。下面举例说明:/**************************************************** * brief : 继承中同名函数的处理...

2020-04-07 21:18:36 589

原创 C++(五十一)之继承类对象模型初探

本文主要介绍,在继承中继承类在内存中的实际分布情况。下面我们举例说明:/**************************************************** * brief : 继承中的对象模型 * author : shao * date : 2020-04-02 * note : 探查继承后,对象在内存中的实际分配方式 * ******...

2020-04-02 22:42:46 95

原创 C++(五十)之继承类的构造和析构顺序

本文主要讲解一下,在类的继承中。构造函数和析构函数的继承关系,和调用顺序。1、子类对象在创建时会首先调用父类的构造函数2、父类构造函数执行完毕后,才会调用子类的构造函数3、当父类构造函数有参数时,需要在子类初始化列表(参数列表)中显示调用父类构造函数4、析构函数调用顺序和构造函数相反下面我们举例说明:/**********************************...

2020-04-02 22:21:39 1637

原创 C++(四十九)之类的继承方式

上一篇我们讲了类的继承,本文我们来讲解一下类的继承方式。类的继承:class B;class A: 继承方式 B ...继承的名词:父类(基类) 子类(派生类) 名词是对应的。要注意这里的继承方式有三种:public protected private不同的继承方式,对父类的访问权限不同:大家直接看举例的图,文字描述后会变得更...

2020-04-01 22:59:48 99

原创 C++(四十八)之类的继承

到这里我们终于到了类的继承。为什么要用类的继承,因为可以减少代码的重复性!!!假设A作为基类,BCD等等子类都继承于A类。那么A类的实现部分,被BCD继承后,子类就会拥有A类的属性。而不用再次重复A类的代码。BCD在A类的基础上添加自己的属性,就会拥有与A类不同的特性。这就是在继承中发展。下面我们以新闻网页为例:由上图可以看出,在中间的conte...

2020-04-01 22:32:55 122

原创 C++(四十七)之二重指针

#include <stdio.h>void swap(int **val1, int** val2){ int temp = **val1; **val1 = **val2; **val2 = temp;}int main(void){ int i = 10; int j = 15; int* a = &i; int* b = &j; ...

2020-03-20 15:17:02 172

原创 C++(四十六)之符号重载总结

我们前面有说过可以重载的运算符有:下面我们队这些常用重载的运算符进行分类整理一下:= [] () -> * 这些操作符只能通过成员函数进行重载。<< >> 只能通过全局友元函数进行重载。|| && 不建议重载,因为无法保证短路原则。...

2020-03-13 11:44:35 74

原创 C++(四十五)之[]符号重载

本篇主要讲解一下数组的索引,[]的重载。基本类型的数组,我们编译器会有预定义的[]类型。当我们使用自定义类型的数组时候,[]需要我们进行重载。下面我们举个例子说明。/**************************************************** * brief : []运算符重载 * author : shao * date : 20...

2020-03-13 11:35:32 208

OpenCLTutorial-Chinese.pdf

AMD GPU异构算法 解析

2020-02-12

012_uart_printf.rar

uart_printf demo

2019-09-03

009_Clock_Config.rar

S3C2440 clock config

2019-08-21

Makefile 使用手册

本文档详细介绍了Makefile的写作规则和原理~~ 本文档详细介绍了Makefile的写作规则和原理~~ 本文档详细介绍了Makefile的写作规则和原理~~

2018-06-26

IT6801FN 手册

IT6801FN 数据手册 IT6801FN 数据手册 IT6801FN 数据手册

2018-06-01

嵌入式实时操作系统μUCOSIII 邵贝贝 pdf

UCOSIII 源码详解pdf版本~~~ UCOSIII 源码详解pdf版本~~~

2018-06-01

嵌入式实时操作系统μC OS-III

UCOSIII 源码详解pdf版本~~~ UCOSIII 源码详解pdf版本~~~ 单个文件太大上传不了,只能分开压缩

2018-06-01

OSD2.5 display

OSD T200 Terawins

2017-02-23

AD09破解文件

不用再找破解程序,直接放到安装好的文件内即可。

2014-09-03

Jlinkxiufu

修复 Jlink,希望大家能用的上 哈哈

2014-02-26

空空如也

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

TA关注的人

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