自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

金玲郎的博客

张驰有道,小乘精进,超越自我

  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

转载 STM32的硬件SPI驱动LCD例子

废话:本少爷又来坑人了,之前花了很多时间研究模拟SPI,用IO口的高电平,低电平,看着时序图,一个一个配置,让LCD亮的差不多不错了,可是发现个刷屏速度贼JB慢的情况,怎么办,能提速的都提速了,里头也没放delay,总觉得是for循环和移位的操作,导致了消耗太多时间的原因,没办法,不懂硬件SPI也要学咯。 前言:每学一个新知识,都会出现很多出错的情况,百度也查不出来,耗费很多时间,主要是不...

2018-07-31 11:28:02 15599 13

转载 单片机溢出率的计算

看了好几本书籍,讲到波特率的计算时,引出的溢出率。但是都没有定义溢出率。真是令人气愤啊!估计写书的人,当年也是直接套公式过来的。。。也或许他觉得这个很简单。。没办法,只有自己猜测了。溢出率=?溢出速率。如果是这样的话,那么溢出一次的时间=(0x100-初始值)*(12/fosc)   //fsoc为频率【这里选取定时器1,工作模式2,频率经过12分频。即进入定时器1模式2下

2018-04-23 10:38:57 10772 3

转载 boa服务器之boa.conf文件的基本配置详解

1. Port 802. User root3. Group root4. ErrorLog /dev/console5. AccessLog /dev/null6. ServerName friendly-arm7. DocumentRoot /pqm/www/test/8. DirectoryIndex rtd.html9. KeepAliveMax 100010.KeepA...

2018-03-30 14:18:43 3744

原创 typedef与#define的区别

1.  typedeftypedef故名思意就是类型定义的意思,但是它并不是定义一个新的类型而是给已有的类型起一个别名,在这一点上与引用的含义类似,引用是变量或对象的别名,而typedef定义的是类型的别名。typedef的作用主要有两点:1.1  简化复杂的类型声明简化复杂的类型声明,或给已有类型起一含义明确的别名;如:typedef bool (*F

2017-08-24 21:30:33 238

原创 面试问题

面临找工作总结下面试常见的问题及答案此篇博文会不断更新1.bootloader的启动流程是怎么样的?一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader), Linux 内核,文件系统,应用程序。当系统首次引导时,或系统被重置时,处理器会执行一个位于Flash/ROM中的已知位置处的代码,Bootloader就是这第一段代码。它主要用来初始化处理器及

2017-08-16 10:08:12 270

转载 heap和satck的区别

1、栈          什么是栈,它是你的电脑内存的一个特别区域,它用来存储被每一个function(包括mian()方法)创建的临时变量。栈是FILO,就是先进后出原则的结构体,它密切的被CPU管理和充分利用。每次function声明一个新的变量,它就会被“推”到栈中。然后每次一个function退出时,所有关于这个函数中定义的变量都会被释放(换句话说就是删除)。一旦栈中的变量释放

2017-08-04 08:54:06 413

转载 带参数的宏与函数的区别

1.函数调用时,先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。2.函数调用是在程序运行时处理的,分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元,不进行值的传递处理,也没有“返回值”的概念。3.对函数中的实参和形参都要定义类型,二者的类型要求一致,如不一致,应进行类型转换;而宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表

2017-08-04 08:39:44 3423

原创 strlen和sizeof的区别

本屌是小白,以后如果文章中有错误的地方,欢迎指正;谢谢各位大神浪费时间翻阅。strlen计算字符串大小遇到'\0'结束;ziseof计算字符串内存空间大小包括'\0'在内;#include#includeint main(int argc, const char *argv[]){ char s1[] = "hello kitty"; char s2[32] ="bye";

2017-08-03 11:29:35 305

转载 for循环嵌套的几种有意思的图形

for循环嵌套用我自己的大白话来说就是一个外圈的for程序里面一个套着一个小的for程序,如果在范围内就来回运行计算,超出了就跳出等待了,反正就是各种for的包含运行差不多的样子(个人见解,有错请纠正谢谢!)今天老师用五行五列的矩阵来讲解了这一块。然后讲述了最关键的一点,在这种for循环之中(外循环控制行,内循环控制列)然后自己按照老师的讲法有重新做了一遍。1:正常

2017-08-03 10:45:00 7094 2

转载 c语言,数据类型转换

在执行算术运算时,计算机比C语言的限制更多。为了让计算机执行算术运算,通常要求操作数有相同的大小(即位的数量相同),并且要求存储的方式也相同。计算机可能可以直接将两个16位整数相加,但是不能直接将16位整数和32位整数相加,也不能直接将32位整数和32位浮点数相加。另一方面,C语言允许在表达式中混合使用基本数据类型。在单独一个表达式中可以组合整数、浮点数,甚至是字符。当然,在这种情况下C语言编译器

2017-08-01 20:38:53 464

原创 struct和union大小的计算方法

结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。看下面这样的一个结构体:  struct stu1  {  int i;  char c;  int j;  };  先介绍一个相关的概念——偏移量。偏移量指的是结构体变量中成员的地址

2017-08-01 11:36:59 2428

转载 zImage和uImage的区别

一、简介对于Linux内核,编译可以生成不同格式的映像文件,例如:# make zImage# make uImagezImage是ARM linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的

2017-07-16 09:41:51 372

原创 计算机中的字,字长,位,字节的概念

一个字=2个字节 、一个字节=8位1、位(bit) 来自英文bit,音译为“比特”,表示二进制位。位是计算机内部数据储存的最小单位,11010100是一个8位二进制数。一个二进制位只可以表示0和1两种状态(21);两个二进制位可以表示00、01、10、11四种(22)状态;三位二进制数可表示八种状态(23)……。 2、字节(byte) 字节来自英文byte,音译为“拜特”,习惯上用大写的“b”表示

2017-07-15 13:42:41 17340 2

转载 编译器和链接器

C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可加载、可执行代码的过程。过程图解如下: 预处理器:将.c 文件转化成 .i文件,使用的gcc命令是:gcc –E,对应于预处理

2017-07-14 09:20:24 694

转载 C语言内存分布图

别的不多说了,图比文字更具有描述力,自己看!一直都把堆栈放一起,所以很多人会误以为他们的组合是一个词语,就像“衣服”一样简单,其实不然,今天在下就将最近学习总结的一些与大家分享。      一个由C/C++编译的程序占用的内存分为以下几个部分:      1、栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。 

2017-07-13 17:02:32 445

转载 SQLite 错误码

#define SQLITE_OK 0 /* 成功 | Successful result *//* 错误码开始 */#define SQLITE_ERROR 1 /* SQL错误 或 丢失数据库 | SQL error or missing database */#define SQLITE_INTERNAL 2 /* SQLite 内

2017-07-11 20:59:43 530

转载 在 SQLite3 中使用回调函数

回调函数的格式如下:int sqlite_callback( void* pv, /* 由 sqlite3_exec() 的第四个参数传递而来 */ int argc, /* 表的列数 */ char** argv, /* 指向查询结果的指针数组, 可以由 sqlite3_column_text() 得到 */ char** col

2017-07-11 20:57:43 524

转载 typedef和#define的用法与区别

一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef    int       INT;typedef    int       ARRAY[10];typedef   (int*)   pINT;typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“

2017-07-11 11:53:42 148

转载 exit与return区别

exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序;return():返回函数,若在主函数中,则会退出函数并返回一值。详细说:  1. return返回函数值,是关键字;  exit 是一个函数。  2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。  3. return是函数的退

2017-07-11 11:50:45 1196

转载 ntohs, ntohl, htons,htonl的比较和详解

ntohs =net to host short int 16位htons=host to net short int 16位ntohl =net to host long int 32位htonl=host to net long int 32位网络字节顺序NBO(Network Byte Order)按从高到低的顺序存储,在网络上使用同一的网络字节顺序,可避免兼容性

2017-07-06 14:39:44 279

转载 socket 编程下 inet_ntoa() 函数的使用与注意事项

函数声明:char *inet_ntoa (struct in_addr);  返回点分十进制的字符串在静态内存中的指针。  所在头文件:  //end linux 下   函数功能:将网络地址转换成“.”点隔的字符串格式        现在我们很幸运,因为我们有很多的函数来方便地操作 IP 地址。没有必要用手工计算它们,也没有必要用"

2017-07-06 14:36:53 489

转载 Linux下安装Sqlite3

1. 安装SQLite3sudo apt-get install sqlite3  2. 安装Sqlite3编译需要的工具包如果,你需要的话可以安装该工具包。只是为了体验一把,可以不安装。该项是可选项。apt-get install libsqlite3-dev  3. 检查安装是否成功执行下面命令,会出现sq

2017-07-04 20:22:23 664

转载 linux下安装sqlite3

1.介绍:sqlite3是linux上的小巧的数据库,一个文件就是一个数据库。2.安装:  要安装sqlite3,可以在终端提示符后运行下列命令:  sudo apt-get install sqlite3  检查版本  sqlite3 -version3.测试  当前目录下建立test.db测试数据库文件  sqlite3 test.db  查询信息  .

2017-07-04 20:04:38 517

转载 数据库移植

SQLite是一个开源的嵌入式关系数据库,我们用它来管理从M0端接收的数据,将检测到的仓库信息存储起来。一、 SQLite环境的建立:1. 首先从下载最新版本的sqlite源码包,我下载的是sqlite-amalgamation-3.7.3.tar.gz,并将下载的文件解压。2. 在解压生成的 sqlite-3.7.3 目录下执行./configure --host=arm

2017-07-04 10:57:01 769

转载 Linux常用指令---kill | killall(终止进程)

kill Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进

2017-07-03 14:12:28 710

转载 Signal ()函数详细介绍 Linux函数

signal()函数理解在 这个头文件中。signal(参数1,参数2);参数1:我们要进行处理的信号。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义的宏。参数2:我们处理的方式(是系统默认还是忽略还是捕获)。一般有3中方式进行操作。(1)eg: signal(SIGINT ,SIG_ING );//SI

2017-07-01 22:22:56 531

转载 Linux 下的KILL函数的用法

[ KILL ]功能描述:用于向任何进程组或进程发送信号。头文件用法:#include  #include int kill(pid_t pid, int sig);  参数: pid:可能选择有以下四种1. pid大于零时,pid是信号欲送往的进程的标识。2. pid等于零时,信号将送往所有与调用kill()的那个进程属同一个使用组的进程。

2017-07-01 22:09:14 263

转载 undefined reference to 问题总结

Table of Contents1 快速解决方案2 从extern说起3 链接时符号定位4 解决方案背后的门道4.1 方法04.2 方法14.3 方法24.4 方法35 参考1 快速解决方案如果你只想立即解决此类问题,那么:方法0: 首先检查XXX函数或者符号是否的确包含在命令行用 -l 参数指定的所有库里。 你可以通过先简单的grep X

2017-06-29 21:48:42 621

转载 进程间8种通信方式详解一

1 无名管道通信无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。2 高级管道通信高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。3 有名管道通信有

2017-06-29 14:51:46 408

转载 sqlite入门基础(一):sqlite3_open,sqlite3_exec,slite3_close

打开数据库链接sqlite3_open用法原型:int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */);用这个函数开始数据库操作。需要传入两个参数,一是数据库文件名

2017-06-21 11:02:44 254

转载 sqlite入门基础(二):sqlite3_get_table,sqlite3_free_table

随笔 - 161  文章 - 0  评论 - 44sqlite入门基础(二):sqlite3_get_table,sqlite3_free_table上一篇介绍的sqlite3_exec 是使用回调来执行对select结果的操作。还有一个方法可以直接查询而不需要回调。但是,我个人感觉还是回调好,因为代码可以更加整齐,只不过用回调很麻烦

2017-06-21 11:00:15 234

转载 IP地址 网段的划分

IP地址 网段的划分IP和子网掩码我们都知道,IP是由四段数字组成,在此,我们先来了解一下3类常用的IP  A类IP段  0.0.0.0 到127.255.255.255   B类IP段  128.0.0.0 到191.255.255.255   C类IP段  192.0.0.0 到223.255.255.255  XP默认分配的子网掩码每段只有255或0

2017-06-20 08:41:09 1180

转载 字符设备和块设备的区别

Linux设备文件分为两大类:block device driver和character device drive两类。character device drive又被称为字符设备或裸设备,raw devices; block device driver通常成为块设备。传输方式:block device driver是以固定大小长度来传送转移资料 ;characte

2017-06-09 09:37:48 1883

原创 Linux下普通用户和超级用户的切换

默认按用户名和密码登陆的,都是普通用户,显示符号位$:linux@ubuntu:~$ 超级用户显示符号位# :root@ubuntu:/home/linux# ubuntu平台下:1.先解除root锁定,为root用户设置密码 打开终端输入:sudo passwdlinux@ubuntu:~$ sudo passwdPassword: Enter new UNIX passwo

2017-06-05 19:22:35 3577

转载 TCP、UDP、IP 协议分析

转载声明:http://blog.csdn.net/salkk123/article/details/18926305  侵删      互连网早期的时候,主机间的互连使用的是NCP协议。这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能。为了改善这种缺点,大牛弄出了TCP/IP协议。现在几乎所有的操作系统都实现了TCP/IP协议栈。

2017-06-04 20:39:30 196

转载 zImage和UImage的区别

转载声明:http://blog.csdn.net/salkk123/article/details/51762144  侵删(1)、内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。    那么uImage又是什么的?它是uboot专用的映像文件,它

2017-06-04 20:34:19 398

转载 内存与flash

1.什么是内存     什么是内存呢?在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD等,能长期保存信息,并且不依赖于电来

2017-05-26 11:33:46 828

原创 MMU-名词解释

参考:http://baike.baidu.com/link?url=SkMRPnjJWD6po8--NUGFcz6tIlffL-R0EQSenpPY0pIEfFuUn-EkXV3vP-fIfu7O_INhvxWkVNWjz-l0QXqbGK    来自百度百科MMU 英文名:Memory Management Unit  中文名:是内存管理单元定义:它是中央处理器(CPU

2017-05-26 09:58:01 1284

转载 系统移植的四大步骤

最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个简单的命令就可以完成非常复杂的功能,可是我们有没有想过,为什

2017-05-25 16:34:19 991

转载 Linux用户空间与内核空间内存映射

Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存

2017-05-25 15:42:06 2845

AD 教程 -电路板设计规则

本PDF对电路板设计规则进行了简单讲解,对于初学者来说是很好的资源

2018-06-01

空空如也

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

TA关注的人

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