自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 论坛 (1)
  • 收藏
  • 关注

转载 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。

2017-12-30 21:29:02 179

原创 shell 中的 -eq -ne -gt -lt ge le

shell中的比较不是使用简单的> =   -eq     //equal  等于  -ne     //no equal 不等于  -gt      //great than 大于  -lt       // low than  小于  ge      // great and equal 大于等于,注意没有"-"   le      //low and equal 小于

2017-12-30 21:25:11 18932 1

原创 $(@:_config=)解释

这里使用了Makefile中的替换引用规则,类似常看到的例子 obj = $(srcfiles:%.c=%.o):由.c得到对应的.o文件,这里是一样的道理:    $(@:_config=)   其中@代表的是smdk2410_config,那么$(@:_config=)就是将smdk2410_config中的"_config"替换(=)成“空”(其实=后面是空),所以就得到了smd

2017-12-30 21:00:49 1734

原创 RS485硬件标准2--常见RS485收发器管脚解析

接RS485标准1文章。。。   RS485收发芯片有很多种,厂家、型号五花八门,但是管脚定义,基本上是一致的,如下图所示:   1-RO:接收器输出。(输出到CPU或其他接收端)2-RE:接收器输出使能。3-DE:驱动器输出使能。4-DI:驱动器输入5-GND6-A:驱动器输出/接收器输入(同相)7-B:驱动器输出/接收器输入(反相)8-Vcc驱动器。

2017-12-22 22:48:01 4860

原创 差分信号解释

所谓差分方式传输,就是发送端在两条信号线上传输的幅值是相等的,相位是相反的电信号,如下图所示:       而对于接收端,将会对接收的两条信号做 减法运算,这样就获得了幅值翻倍的信号,其抗干扰原理是:假如两条信号都收到同样的(同向、等幅度)的干扰信号,由于接收端是怼接收的两条线信号进行减法处理,因此干扰信号会被基本抵消。也就是说,一个差分放大器的输入有效信号幅度只需要几毫伏,但是它却能

2017-12-22 17:53:04 14785 1

原创 RS485硬件标准1-电平定义

RS485标准是为了弥补RS232通信距离短、速率低等缺点而产生的而产生的,该接口标准只规定了电气特性,并没有规定接插件,传输电缆和 应用层通信协议。    RS485标准与RS232不一样,数据信号采用差分传输方式。    所谓差分传输,就是发送端在两条信号线上传输幅值相等,相位相反的电信号,接收端对接收的两条线信号做 减法运算,这样就获得幅值翻倍的信号。

2017-12-22 17:30:17 39332 5

转载 Makefile 中的 “=”,“:=”,“?=”,“+=”的区别

转自:http://blog.csdn.net/liuxd3000/article/details/17679937在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq (

2017-12-20 21:55:39 149

转载 Makefile 自动化变量及其说明

模式规则模式规则类似于普通规则。只是在模式规则中,目标名中需要包含有模式字符“%”(一个),包含有模式字符“%”的目标被用来匹配一个文件名,“%”可以匹配任何非空字符串。规则的依赖文件中同样可以使用“%”,依赖文件中模式字符“%”的取值情况由目标中的“%”来决定。例如:对于模式规则“%.o : %.c”,它表示的含义是:所有的.o文件依赖于对应的.c文件。有一点需要注意的是,"%"的展

2017-12-17 21:35:15 177

原创 Makefile 书写规则

Makefile的书写规则有两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序很重要,因为Makefile中只应该有一个最终目标,其他的目标都是被这个目标所带出来的,所以一定要让make命令知道你的最终目标是什么。一般来说定义在Makefile中的目标可能有很多,但是第一条规则中的目标将会被确立为最终目标。如果第一条规则中的目标有很多个,那么,默认第一个目标会成为

2017-12-14 21:51:23 167

原创 make命令工作时执行的步骤

1.读入所有的Makefile2.读入被include 的其他 Makefile3.初始化文件中的变量。4.推导隐晦规则,并分析所有规则。5.为所有目标文件创建依赖关系链。6.根据依赖关系,决定哪些目标要重新生成。7.执行生成命令。

2017-12-14 21:32:10 1950

原创 make 命令的自动推导功能

make命令自动推导功能,或者说是默认推导功能,这也是make的强大之处,只要make看到一个.o文件,它就会自动把同名的.c文件加在依赖关系中,例如如果make找到一个hello.o,那么hello.c就会是hello.o的依赖关系,并且cc -c hello.c也会被推导出来,于是我们的makefile就再也不用写那么复杂了,    中规中矩的写法:main.o:main.c de

2017-12-13 22:06:00 378

原创 makefile中的变量

一个简单的例子:edit:main.o kbd.o command.o display.o \               insert.o search.o files.occ -o edit main.o kbd.o command.o display.o \               insert.o search.o files.o我们可以看到*.o文件的字符串被

2017-12-13 21:51:51 108

原创 makefile 规则之---make命令-编译,依赖关系

make命令的核心是找依赖性,make命令会一层又一层地区找文件的依赖关系,知道最终编译出目标文件,在找寻过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令错误,或者编译不成功,make根本不理,make只管文件的依赖性,即,没有依赖性,就不执行,所以像常见的clean命令,make不会自动执行,    clean:   rm *.o..

2017-12-13 21:40:32 2729

原创 Makefile简单规则--基本规则

makefile的简单规则如下:target :prerequisites....     command     .....target是一个目标文件,可以是object file,也可以是执行文件,还可以是一个标签label。prerequisites:就是要生成那个target所需要的各种文件或者目标。command也就是make需要执行的命令--任意的she

2017-12-13 21:26:24 232

原创 程序编译、链接简单过程

源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。    在编译时,编译器只检测程序语法和函数、变量是否声明,如果函数未声明,编译器会出给出一个警告,但是仍然可以生成object file,但是在链接程序时,链接器会在所有的object file中找到每个函数的实现,如果找不到,就会报链接错误码。

2017-12-13 21:15:33 153

原创 库文件解释

编译程序会生成中间目标文件(object file),也就是.o文件,然后链接器将这些中间文件链接成可烧写或可执行文件,在大多数时候,由于源文件太多,编译生成的中间文件也比较多,而在链接时时需要明显地支出中间目标文件名的,这对于编译很不方便,尤其是linux下编写makefile时,非常不方便,所以,我们要给中间目标文件打个包,在windows下,这种包叫做“库文件(library file)”,

2017-12-13 21:11:03 240

转载 uboot环境变量的讲解

转自:http://blog.csdn.net/x_jjt/article/details/50733483一、环境变量的作用于全局变量是相似的,环境变量的生命周期一旦设置好环境变量并保存好,下次开机时还会存在,而全局变量在关机后会消失,只有在下次开机时才会产生一个新的全局变量。   全局变量可能大多数功能是用于进程间通信,而环境变量的作用就不仅仅是通信,而是提供各种程序运行参数,比如说常

2017-12-12 21:16:38 461

原创 ARM 链接地址和烧写地址

在ARM设计中,一般会涉及都一个链接地址,这个链接地址和烧写地址很容易混淆,会认为链接地址就是烧写地址,这个是错的,下面说的是个人的一些认识,可能会有一些错误,说的也可能不专业,但是对于初学者,可以帮助理解。    首先链接地址和烧写地址是两个范畴的东西,几乎是没有关系的,烧写地址,可以认为是物理地址,而链接地址可以认为是虚拟地址,对于程序员来说,看到的是虚拟地址,一般虚拟地址经过MMU映射成

2017-12-11 21:01:33 691

原创 嵌入式Linux开发流程

在学习嵌入式开发的过程中,尤其是开始入门时,包括各种各样的教程,都是在讲学习linux,很少讲如何利用linux来开发属于自己的嵌入式项目,也就是没有一个全局的概念,简单理解,大概流程如下:一、建立开发环境    操作系统当然是LInux,或者在win系统下安装虚拟机,通过网络下载相应的GCC交叉编译器进行安装,或者安装产品厂家提供的交叉编译器。   这一步,就相当于在win系统下,要

2017-12-09 19:20:30 16966 1

原创 C语言中的 联合体 union 说明

在C语言中 有 联合体这种数据结构,虽然用的很少,但是也会用到,那么联合体是一种什么结构呢?   当多个数据需要共享内存或者多个数据每次只取其一时,就可以利用联合体,联合体的定义是这样的:(1)联合体是一种结构。(2)它的所有成员相对于基地址的偏移量都是0.(3)此结构空间要大到足够容纳最宽的成员。(4)其对其方式适合其中所有成员。具体理解:   要特别注意 “共享”二

2017-12-09 13:58:09 875

原创 bootloader的两个阶段

bootloader一般都是分为两个阶段的,第一个阶段使用汇编来实现,它完成一些依赖于CPU体系结构的初始化,并调用第二阶段的代码;第二阶段则通常使用C语言来实现,这样可以实现更复杂的功能,而且代码会有更好的可读性和移植性。   两个阶段如下:一、第一阶段功能(1)硬件设备初始化;(2)为加载bootloader的第二个阶段代码准备RAM空间。(3)复制bootloader的第

2017-12-09 13:35:31 2490

原创 嵌入式linux系统结构概述

嵌入式LInux系统从软件的角度通常分为一下4个层次,如下图所示:(1)引导加载程序,包括固化在固件中的boot代码和bootloader两大部分。有些cpu在运行bootloader之前会先运行一段固化程序,比如x86的CPU会先运行BIOS中的固件,然后才运行硬盘的第一个分区(MBR)中的bootloader,但是在大多的嵌入式系统中,是没有固件的,bootloader就是上电后执

2017-12-08 21:23:26 1277

原创 根文件系统中各个常用目录简介

正常来说,根文件系统至少要包括一下目录:  /etc : 存储重要的配置文件。 /bin:  存储常用且开机时必须要用到的执行文件。/sbin:存储着开机过程中所需要的系统执行文件。/lib:存储/bin及/sbin的执行文件所需要的链接库,以及linux的内核模块。/dev:存储设备文件。注:这五大目录必须存储在根文件系统上,缺一不可。具体分析:一

2017-12-07 22:09:53 979

原创 Linux--根文件系统的解释

linux中有一个“根文件系统”,这个系统概念容易混淆,其他的文件系统容易理解,就是管理存储空间的系统,那么根文件系统的作用,却不是特别容易理解。    一、根文件系统概念   首先根文件系统也是一种文件系统,只不过它是一种比较特殊的形式,百科解释里说根文件系统是内核启动时 mount 的第一个文件系统,内核代码映像文件就保存在根文件系统中,而且系统引导启动程序会在根文件系统挂载之后从中把

2017-12-07 21:36:07 3529

空空如也

猪哥-嵌入式的留言板

发表于 2020-01-02 最后回复 2020-04-28

空空如也

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

TA关注的人 TA的粉丝

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