自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 一.Uboot的移植

在对一个新的芯片进行系统移植(uboot、文件系统、内核等)的时候,重新开始是不可能的也不现实,重要的是站在巨人的肩膀上开始我们新的内容。芯片的生产厂家会提供一套已经对该芯片适配过的系统。我们在使用该芯片进行移植的时候只需要在厂家提供的基础上根据我们的需要进行修改。1.添加板子默认配置文件2.添加板子对应头文件3.添加板子对应的板级文件4.LCD驱动修改5.网络驱动修改...

2021-06-27 09:04:57 258

原创 Linux驱动相关学习记录

本专栏以原子I.MX6ULL开发板作为实验板子,留下记录供自己之后查阅,也方便有需要的人进行查阅。

2021-06-27 08:53:56 110

原创 伪目标的概念

伪目标的概念目标是什么makefile中目标一般对应着一个文件make比较目标文件和依赖之间的新旧关系,如果依赖新则执行命令make以文件处理作为第一优先级伪目标是什么所谓伪目标就是他不代表一个真正的文件名,在执行make时可以只当这个目标来执行所在规则定义的命令,有时我们将一个伪目标成为标签为什么引入伪目标防止存在和目标名一样的文件存在时,当执行make发现文件是最新的导致目...

2020-02-05 15:08:39 870

原创 了解makefile的结构

makefile的结构makefile的意义makefile用于定义源文件之间的依赖关系(在阅读开源软件源码时,可给根据makefile掌握源码之间的关系),同时说明如何编译各个源文件并生成可执行程序。makefile的规则makefile规则的定义形式1:targets :prerequisites; command形式2:targets : prerequisites ...

2020-02-05 14:30:16 335

原创 make和makefile的区别

make和makefile的区别makemake(工程管理器),顾名思义就是管理文件的自动编译管理器,这里的自动是指能根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时通过读取makefile的文件的内容来进行预期的编译工作,make将只编译有改动的文件,而不用完全编译。这里有两个概念文件和最新需要注意隐藏的两个规则,默认情况下make会将目标认为是文件如果当前文件夹下有目标的同名的文...

2020-02-04 15:27:48 1033

原创 makefile相关知识点

makefile相关知识点现在对makefile相关知识点进行总结make和makefile的区别了解makefile的结构伪目标的概念变量相关知识条件判断函数相关内容自动生成依赖关系make的隐式规则make中的路径搜索专业的编译环境模块独立编译的支持第三方库的使用支持接下来对每一个知识点进行详细的总结...

2020-02-04 15:00:18 115

原创 Ubuntu加载helloworld内核模块

在这两天的尝试过程中,在网上查询了好多种方法,按照他们的过程进行尝试发现总是出现错误。现在总结一下:1.代码写错2.能不使用空格就不要使用空格,因为这些空格可能就是出错的原因3.内核编译错误大概就是这几种。所以首先一定按照语法进行代码书写,其次,减少使用空格,如果代码实在是编译不过去,可用虚拟机系统上编译的Linux内核模块。下面把我查到的具体过程摆出来:按...

2018-10-03 21:20:40 804 1

原创 NO15.指针的本质分析

变量:程序中的变量只是一段存储空间的别名,那么是不是必须通过这个别名才能使用这段变量?  可以*号的意义:在指针声明时,*号表示所声明的变量为指针;在使用时,*号表示取指针所指向的内存空间中的值指针是变量,因此可以声明指针参数,当一个函数体内部需要改变实参的值,则需要使用指针参数,函数调用时实参值将赋值到形参,指针适用于复杂数据类型作为参数的函数中 指针时c语言中的一种特别...

2018-08-12 16:44:05 106

原创 NO14.#和##操作符使用分析

# 的用法:#运算发用于在预处理期将宏参数转化为字符串,只在宏定义中有效,编译器不知道#的转换作用实例:经预处理之后代码成为:printf("%s\n","Hello World!"); ##的用法:## 运算符用于预处理期粘连两个标识符,连接作用是在预处理完成de的,因此只在宏定义中有效,编译器不知道##的连接作用实例:...

2018-08-12 15:59:02 102

原创 NO13.#pragma使用分析

#pragma用于指示编译器完成一些特定的动作,所定义的很多指示字使编译器特有的,在不同的编译器是不可移植的(注:预处理器会忽略他不认识的#pragma指令,不同的编译器可能用不同的方式解释同一条#pragma指令) 使用说明一:使用说明二:区别在于效率和兼容性上,#ifndef 是被c语言支持的无论在什么编译器上都可以实现,效率低一些,而#pragma的参数once需...

2018-08-12 15:34:40 209

原创 NO12.#error和#line使用分析

#error的作用是用于生成一个编译错误信息用法 #error message    (注message不需要用双引号包围)#error编译指示字用于自定义程序员特有的编译错误消息#warning用于生成编译警告#errorde的用法实例:  #line用于强制指定新的行号和编译文件名,并对源程序的代码重新编号#line用法实例:...

2018-08-10 21:47:57 121

原创 NO11.条件编译使用分析

条件编译的行为类似于C语言中的if...else..根据条件来确定是否进行相关编译,要知道条件编译是预编译指示命令,在进行编译已经选择要编译内容,及根据选择编译某段代码 预编译器根据条件编译指令有选择的删除代码,编译器不知道代码分支的存在可以通过命令行定义宏:gcc -Dmacro=value file.corgcc -Dmacro file.c #include...

2018-08-10 21:36:59 113

原创 NO10.宏定义与使用分析

#define 是预处理器处理的单元实体之一#define定义的宏可以出现在程序的任意位置#define定义之后的代码都可一使用这个宏 #define 定义的宏变量本质为字面量 宏表达式被预处理处理,编译器不知道宏表达式的存在;用“实参”完全替代形参,不进行任何运算;没有任何调用开销,因为在预处理的时候,所有使用宏的地方全部被替代;不能出现递归定义 强大的内置宏:...

2018-08-10 21:17:23 120

原创 TCP/IP系列(二)套接字使用函数的参数

创建套接字:int socket(int domain,int type,int protocol);domain:套接字中使用的协议族信息      type套接字数据传输类型信息   protocol 计算机间通信使用的协议组信息创建成功返回文件描述符,失败返回 -1domain有以下几种取值:PF_INET                 IPv4互联网协议组族PF...

2018-07-20 10:53:14 300

原创 TCP/IP系列(一)套接字的一些使用函数

通过类比的方法吧套接字所使用的函数进行列举(所有的是存在通路的前提下)“通信设备”  套接字创建函数:int socket(int domain, int type, int protocol)这个函数创建套接字设备,创建成功返回0失败返回-1“分配号码”给套接字设备分配“电话号码,使设备可以被查询(IP地址和端口号)”int bind(int socked, struct sockaddr *m...

2018-07-14 22:15:38 871

原创 NO3.变量的高级主题

本文参照自狄泰软件学院:《门徒计划》课程变量值的替换:使用指定的字符(串) 替换变量中的后缀字符(串)语法格式 :$(var:a=b)或$(var:a=b)   注意:替换表达式中不能有任何空格,make中支持使用${}对变量进行取值使用实例:/*****Makefile********/src := a.cc b.cc c.ccobj := $(src:cc=o)test:    @...

2018-07-04 09:17:15 148

原创 NO2.makefile中变量和不同的赋值方式以及一些常用预定义变量的使用方法

变量和命名规则:makefile中支持程序语言设计中的变量的概念,但是变量只代表文本数据(字符串),命名规则如下:变量名可以包含字符数字和下划线,但是不能包含 ":", " # ",  " = ", " ",而且变量名大小写敏感变量的定义和使用:常用的变量的赋值方式:简单赋值(:=)         递归赋值( = )  条件赋值 (?=)    追加赋值(+=)用法示例:简单赋值(:=)递归赋值...

2018-07-03 09:42:16 263

原创 N0.1 make和makefile的一些基础知识

make和makefile的区别:make是一个应用程序,用来解释程序之间的依赖关系,并根据依赖关系自动维护编译工作,执行宿主操作系统中的各种命令makefile是一个描述文件,定义了一系列的规则来指定源文件编译的先后顺序,拥有特定的语法规则,支持函数定义合函数调用,能够直接集成操作系统的各种命令。两者的关系是makefile中描述用于指导make程序如何完成工作,make根据根据马克file中的...

2018-07-03 08:35:56 238

原创 NO9.enum,sizeof,typedef分析

enum的分析:enum是C语言中的一种自定义类型,enum的值可以根据需要自定以整形值,第一个定义的enum默认值为0,而且默认情况下eum的值是在前一个定义的值的基础上加1,enum类型的变量只能取定义时的离散值。sizeof的分析:sizeof是编译器的内置指示符,用于计算类型或变量所占的内存大小,sizeof的值在编译期就已经确定的sizeof用于类型  sizeof(type)     ...

2018-06-25 18:18:35 109

原创 NO8.struct和union分析

struct和柔性数组:C语言中的struct可以看作变量的结合柔性数组即数组大小待定的数组,C语言中可以由结构体产生柔性数组,原因是C语言中结构体的最后一个元素可以是大小未知的数组...

2018-06-25 16:01:34 156

原创 NO7.const和volatile

const 只读变量:const修饰的变量是只读的,本质还是变量const修饰的局部变量在栈上分配空间const修饰的全局变量在全局数据区分配空间const只在编译器有用,在运行期无用const修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边在现代C语言编辑器中,修改const全局变量将导致程序崩溃。注意:标准C语言编辑器不会将const修饰的全局变量存储于只读存储区中,而是...

2018-06-25 14:35:17 112

原创 NO6.goto和void分析

goto: goto的用法goto  标号名;通过关键字goto无条件指定循环跳转到某个标号名。标号名命名规则遵循变量名命名规则: 由数字,字母和下划线组成, 并且首字母只能与字母和下划线开头,不能与数字开头,同时不能与保留字一样,还有一些C语言自己留着用的特殊符号一样。#include "stdio.h" int main(void) { test_goto_loop: /* ...

2018-06-25 13:03:37 100

转载 GitHub搭建个人博客 (原料:阿里云服务器一个:ubuntu系统, github账号一个)

搭建过程:第一步,搜索github进入GitHub的官网,点击进行用户注册第二步,登陆用户创建仓库(New repository)创建的内容如下: 仓库的名字如箭头所指(根据自己用户名字进行命名)第三步:选择网页的风格并进行下载进入setting:往下滑再进入箭头所指内容:第四步进入<>Code 然后下载箭头2的内容,把下载好的内容放入到ubuntu服务器中(放入第五步所生成的文件夹中...

2018-06-17 22:22:20 747

原创 STM328种引脚功能和配置解释以及相应使用场合

八种引脚功能分别为:1.GPIO_Mode_AIN 模拟输入2.GPIO_Mode_IN_FLOATING浮空输入3.GPIO_Mode_IPD下拉输入4.GPIO_Mode_IPU上拉输入5.GPIO_Mode_Out_OD开漏输出6.GPIO_Mode_Out_PP推挽输出7.GPIO_Mode_AF_OD复用开漏输出8.GPIO_Mode_AF_PP复用推挽输出模拟输入:GPIO_Mode_...

2018-06-16 22:03:43 11275

转载 NO5.变量的属性和存储位置

变量属性使用到的几个关键字auto   static   register  extern const  volatile  auto:这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量,最常用,因为所有变量默认为就是auto类型的static:这个关键词可以使变量变得老实,只有当程序改变这个变量的时候,这个变量才...

2018-06-16 10:07:52 129

原创 NO4.类型转换

一句话就是内存小的类型向内存大的转化时安全,内存大的向内存小的类型转换时会发生截断。(主要是编译器类型检查比较宽松)不可以转换的时候,编译器会提示...

2018-06-15 21:58:25 149

原创 NO3.浮点数的秘密

浮点数在内存中存储方式三段:符号位,指数位,小数位浮点数的转换 1.将浮点数转换为二进制 2.用科学计数法表示二进制浮点数  3.计算指数偏移后的值float类型:1位符号位,8位指数位,23位尾数位     ( 指数要加上127的偏移数)                    31                   23-30          0-22double类型:1位符号位,11位指数...

2018-06-15 21:39:05 122

原创 NO2.有符号和无符号类型数据的一些知识

有符号和无符号数据的一些知识点在计算机中有符号数据最高位为1表示为负数,最高位为0表示为整数,在计算机内部通过补码来表示有符号数正数的补码使整数本身,负数的补码是其绝对值给位取反后加1。用原码表示为无符号数有符号数和无符号数字在一起使用会出现什么结果?有符号数会被看作无符号数,然后和另外一个无符号数进行计算tip:无符号数最小为0.如果再减1就变成最大数...

2018-06-15 20:44:48 232

原创 NO1.基本数据类型

数据类型是什么?数据类型就是固定内存大小的别名,是创建变量的模子。常见的数据类型有哪些?大小为多大?常见的类型有char(一个字节)short(两个字节)int(四个字节)long(四个字节)float(四个字节)double(八个字节)在不同的系统中相同的数据类所代表的内存大小可能不一样,如下表:...

2018-06-15 20:14:24 286

STM32 dsp库

stm32dsp库可以进行fft计算支持64点256点1024点等运算

2018-06-16

空空如也

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

TA关注的人

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