- 博客(39)
- 资源 (8)
- 问答 (3)
- 收藏
- 关注
原创 OSI模型之物理层概述
关于Internet的OSI模型,有五层的也有七层的,大体意思都是一样的,所谓的七层模型是指:物理层(Physical)、数据链路层(Data Link)、网络层(Network)、传输层(Transport)、会话层(Session)、表示层(Presentation)、应用层(Application)。
2015-09-30 15:36:10 704 1
原创 script的执行方式的区别
上节简单的介绍了script的编程,那我写完一个.sh文件怎么运行呢? 不同的 script 执行方式会造成不一样的结果!尤其影响 bash 的环境很大呢!脚本的执行方式除了前面sh或bash命令外,还可以用 source 和小数点 (.) 来执行喔!那这种执行方式有何不同呢? 1、用直接执行的方式来执行 script 当使用直接指令下达
2015-09-29 16:38:33 640 1
原创 uCGUI学习笔记之显示文本
ZlgGUI适合于低端处理器;uCGUI应用最广泛,易于移植,被大部分中低端处理器采用;openGUI的源码为汇编编写,适用于通用PC机,可在各种操作系统移植、Microwindows兼容windows。 uCGUI对CPU要求不限,底层为ANSI C编写。带有图库算法,不需要浮点算法,速度快。支持各种LCD驱动。视窗显示和管理工作。
2015-09-28 15:22:53 2586
原创 shell script基础编程
在DOS中有一种文件.bat后缀,它叫批处理文件。顾名思义,他起的作用就是一次执行多个命令处理作用。那么在Linux下我们是如何做到批处理的呢?这就是shell script的工作了。 shell script是一种文本文件,话说回来,无论是C、C++、HTML都可以用纯文本的方式编写,但他们都有固定的格式。那我们就用最经典的“Hello World”来看下shell scri
2015-09-27 09:49:20 720 3
原创 Linux下的数据流重定向
前几天看Linux系统运维的面试题,有考到很细微的一些细节,而这些细节又不可忽略,于是随笔记了下来。不得不说Linux里内容太多,想要做一名好的Linux系统运维工程师绝非易事。写给还在路上的自己。 数据流重定向。相信玩过STM32的童鞋都遇到过这个名词,无论是野火还是原子都把printf重定向到一个串口的输出。今天我们说的是Linux终端里的数据重定向,不过大家如果对这个名词有
2015-09-24 19:50:55 666 1
原创 C++的引用类型
啊刚刚说了C++的运算符重载,运算符重载实际上就是运算符函数的重载,然后调用这个函数。既然是函数调用,那么问题来了:值调用的实质是参数赋值,而运算符函数的参数主要是结构体,结构体可以很大,参数复制既浪费空间又浪费时间。而且运算符函数调用频率又高,这样付出的代价是令人难以承受的。 大家自然而然的想到的解决办法是地址调用,可是地址调用的参数是指针,而指针是标准类型,不可以形参都是指针的。
2015-09-24 17:15:17 1163
原创 C++中的重载
函数重载 在C语言中,函数名代表函数地址,不同的函数必须有不同的函数名,即使是参数表不同但功能相同的函数,这显然与高级程序设计的简约原则不符合。所以在C++中,功能相同的函数可以拥有同样的函数名,这就称之为函数重载。 函数重载要求函数的参数表不同,即参数类型或者形参个数不同。如: void Selection(int *pa, int n);
2015-09-24 16:31:33 384
原创 磁盘组成解读
大家应该都看过硬盘吧!硬盘依据台式机和笔记本电脑而有分为 3.5 寸和 2.5 寸的大小。以 3.5 吋癿桌面计算机使用硬盘来说明。 在硬盘盒里面其实是由许许多多的圆形磁盘盘、机械手臂、 磁盘读取头和主轴马达所组成,整个内部如同下图所示: 实际的数据都是写在具有磁性物质的磁盘
2015-09-22 16:43:31 1430
原创 流与文件
这两天要用到文件系统Fatfs,所以又把C语言书翻粗来看看文件相关的操作函数。(书籍真是人类的好朋友!) 数据常常需要从一个位置“流向”另一个位置,这种数据的流动称为”流“,每个具体的数据流动总是和设备和外部介质有关,这些设备和介质统称为文件。 每一个文件对应一个文件指针,如键盘对应stdin,显示器对应stdout,打印机对应sprn,数据的流动通过文件指针与一个
2015-09-22 11:05:09 518 1
原创 二维数组与指针的探索
二维数组是一种特殊的一维数组,由类型相同、长度相等的行一维数组组成,存储空间依次相邻。可有公式 loc(a[i][j]) = a +(i*列数+j)*sizeof(元素类型).计算出元素a[i][j]的地址。 二维数组名也代表指针,称为二维数组指针。这个指针与一维数组指针既有联系、又有区别。 例: int a[4][3]; a作为二维数组的
2015-09-21 15:17:06 559
原创 联合和枚举类型
说了结构体,就不得不说联合和枚举。 联合这个类型的设计就是为了节省内存,联合内的元素共用一段存储空间,空间大小由最大的数据元素决定。联合空间只有一个最新赋值的成员值有效。一句话总结:空间共享,后来为主。 联合的定义跟结构一样,也有3种方式“: union UNI { char ch; fl
2015-09-21 10:42:08 1396
原创 结构体的定义和结构变量的定义
以前写程序的时候总是要用到结构体,但是对结构体的定义老是稀里糊涂,今天梳理下,让自己长长记性! 结构体的定义有以下3种形式:‘ 1、struct Date { int year,month,da; }; 这时定义结构体变量:
2015-09-21 10:37:04 2221 3
原创 内存技术浅读
计算机的内存DRAM(Dynamic Random Access Memory)随机存取内存:CPU 所使用的数据都是来自主存储器(main memory),无论是软件程序还是数据,都必须要读入主存储器后 CPU 才能利用。 随机存取内存只有在通电时数据才能使用,断电后数据就消失了。因此也称这种 RAM 为挥发性内存。 DRAM 根据技术的更新又分好几代,而使用上较广泛的有所谓的
2015-09-20 17:39:56 365
原创 指向常量的指针与常量指针的异同
当我们在模块化程序设计时,有一些数据希望共享,而又不希望其他程序修改它,也就是”只读“,我们常用const来修饰它。 指向const常量的指针:一个指针,如果通过它实施的间接引用操作只能读取不能修改,即它指向的空间是只读的,我们称这个指针为指向const常量的指针或只读指针。 const int *pc; 或 int const* pc; 表示
2015-09-20 16:03:49 505
原创 递归问题
递归的定义:把一个问题分为几个小问题,然后用同样的方法解决,这就是递归方法。 数学中很多问题是递归的,例如阶乘问题,可以用小整数的阶乘来计算大整数的阶乘;幂次值问题,可用小实数的乘幂值计算大实数的幂次值。下面以阶乘问题来介绍递归,求n!; long Fact(long n) { if(n == 0 || n == 1)
2015-09-20 15:05:40 393
原创 动态空间管理
定义数组时,占用静态分配单元,数组大小在编译阶段就确定了,而实际应用中又经常需要在程序运行期间才确定数组大小,这就需要动态分配函数malloc和calloc,从内存空间中的堆中获取动态空间,建立动态数组。(在C#中不用这么麻烦啦,一个List类就解决问题) void* malloc(unsigned size);//按字节数size分配内存空间,返回空间起始地址。 vo
2015-09-20 12:30:33 668
原创 寄存器变量小记
目前程序中的变量都是存放在内存中,CPU找到内存中的操作数,送入运算器的寄存器,计算完成后再送回内存。如果程序中一些变量使用简单而频繁,那么可以直接将这些变量直接放在寄存器中,则访问变量的速度与指令执行的速度同步,程序的性能得到提高。 寄存器变量就是用寄存器存储的变量,寄存器变量的定义格式:register 类型指示符 变量标识符;
2015-09-20 12:07:12 667
原创 一维数组的探索
昨天面试时被考官问到指针和数组,比较刁钻的问题,没答出来,丢死人了。 按照定义,一维数组是指全部数组元素组成的一段连续的存储空间,这个空间称为数组变量。数组中的元素只能间接引用,所谓间接引用,是指通过指向该单元的地址指针来访问该单元。因此,数组名都代表数组首元素的指针常量(首元素的地址)。其实数组名首先是数组空间的标识符,代表数组变量,这就是数组名的另一个含义。 数
2015-09-19 17:50:05 375
原创 计算机组成
自冯诺依曼于1945年提出”程序存储思想“的计算机体系结构设计思想,我们到现在每本计算机相关的书籍上都有这样一段计算机组成的介绍。 计算机由运算器+控制器+存储器+输入输出设备组成,其中运算器+控制器组成CPU(Centerial Processing Unit)。运算器是由逻辑与非门或门组成的VLSI电路,能够进行各种算术运算和逻辑运算;控制器按照机器指令的要求控制机和指挥整个运
2015-09-19 10:35:33 708
转载 C/C++堆栈详解
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教
2015-09-17 21:14:40 577
原创 Cortex-M3的咬尾中断技术
Cortex—M3在中断控制系统上的设计可谓是煞费心机,这也不奇怪,要支持操作系统,必须要有优越性能的中断系统。 今天在看《Cortex—M3权威指南》时(这是一本很好的书,Cortex系列的精品!想学习ARM的童鞋不能错过),看到了他的中断咬尾技术,觉得好熟悉,才想起在学习TI的M4系列开发板时听过这个东西,当时根本不懂,糊里糊涂就把单片机用起来了。今天仔细看了这个所谓高大上的
2015-09-16 17:21:20 4160 2
原创 功率放大器的分类
做过电路的同学们功放肯定都用过,但是像自动化专业的同学们做车或四轴时可能不知道自己用得是功放,就是说或者用了也不明所以,今天重新翻了遍模电书,把几种常见功放理解下,写下自己的心得,书读百遍其意自见。 分类原则:根据输入信号一个周期内放大管的导通情况,放大电路工作状态可分为甲类、乙类、甲乙类、丙类。 若静态工作点Q位于放大区中间,在输入信号(假设为正弦信号)的整个周期内
2015-09-13 17:12:56 3737
原创 STM32的启动文件解读
用stm32开发的人都添加过启动文件吧,一般是keil mdk给我们默认添加的,但是如果要升级换代,还是要手工添加或者修改下,这时候就必须要弄明白它的启动文件里到底是什么鬼了,不然不明不白的就去修改它,肯定会出问题的啦。 在一大堆注释后,它首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,从__Vectors 开始到__Vectors_end结束。 其第一个
2015-09-12 16:52:46 723
原创 uC/OS--II在STM32F103ZET6上的移植
本文是在参考野火移植uC/OS教程的基础上写的一点心得,如有误请指正。 第一件事就是去下载uC/OS的源码啦,要用什么版本的你自己定,我用的是v2.86,v2.90也可以。http://micrium.com/,要自己注册账户哦,免费下载。 解压后有几个重要的文件,AppNotes/ANxx_ST_XX,这个是uC/OS作者在stm32上移植时的写的移植笔记,很有借鉴价
2015-09-12 10:58:55 1910
原创 ARM处理器的MMU单元
MMU(存储器管理单元)在ARM7、ARM9、ARM10、ARM11、Xscale、Cortex-A系列都有,它能把系统中不同类型的存储器(Flash,SRAM,SDRAM,U盘等)进行统一管理,通过地址映射,是需要运行在连续地址空间的软件运行在不连续的物理存储器中,使需要较大运行内存的软件运行在容量较小的物理存储器中,这就是所谓的虚拟存储技术。 (1)虚拟地址到物理地址的映射
2015-09-11 00:09:47 1118
原创 C#的委托
今天在极客学院学的C#委托章节,觉得很有意思,说点我的课后感悟跟大家讨论讨论。 C#中的委托与C、C++中的函数指针很类似,但是比他们要安全的很多(我觉得授课布道师讲得最多的就是C#如何写一个安全可靠的程序)。怎么安全呢?每个委托的声明delegate 类型 函数名 (参数类型 parameter),函数类型、参数类型都要与你要调用的函数完全一致才可以用哦,这就避免了因为类型不
2015-09-10 20:47:17 421
原创 Cortex-M3的存储器映射
Cortex-M3不同于其他ARM系列的处理器,它的存储器映射表已经在内核设计时固定好,不能由芯片厂商更改。 Cortex‐M3预先定义好了“粗线条的”存储器映射。通过把片上外设的寄存器映射到外设区,就可以简单地以访问内存的方式来访问这些外设的寄存器,从而控制外设的工作。结果,片上外设可以使用C语言来操作。这种预定义的映射关系,也使得对访问速度可以做高度的优化,而且对于片上系统的设
2015-09-10 10:48:37 3573
原创 Thumb-2指令集
Thumb‐2是一个突破性的指令集。它强大,它易用,它轻佻,它高效。Thumb‐2是16位Thumb指令集的一个超集,在Thumb‐2中,16位指令首次与32位指令并存,结果在Thumb状态下可以做的事情一下子丰富了许多,同样工作需要的指令周期数也明显下降。 图1.4 Thumb-2指令集与Thumb指令集的关系 从图中可见,Cortex‐M3勇敢地拒
2015-09-10 10:09:14 26187 3
转载 Linux的内核态与用户态切换
今天做题目的时候遇到的问题,问的是Linux的内核态与用户态之间的通信方式,我直接懵逼了,虽然接触了Linux有段时间了,但是这么抽象的问题还没研究到。果断百度下,这哥们写的很通俗易懂,稍微懂点操作系统的都能看懂。 先上该博主的链接:http://blog.chinaunix.net/uid-1829236-id-3182279.html 我说下我的理解,如有不对的
2015-09-09 14:45:21 1590
原创 touch指令解读
鸟哥在私房菜里写到:“修改档案时间戒建置新档: touch” 档案时间?不就是一个创建时间吗?要修改创建时间?非也非也,不要再用windows的思想来学习Linux。每个档案在 linux 底下都会记录很多时间参数, 其实是有三个主要的时间变量,那么这三个时间变量意义是什么呢? modification time (mtime):该档案的内容数据变更时,就会更新这个时
2015-09-08 20:37:40 409
原创 Linux文件权限管理
Linux下面所有的文件存储都是以档案的形式存储,用ls指令就可以查看当前目录下所有档案的权限(这个权限是你现在使用的登入者身份下的权限哦,也就是说,你以不同的身份登入时,权限有可能是不一样的)。 举一个例子:-rw-r--r--,1 ,root ,root ,43240,Sep4 18:23 ,install.log 一共7个字段。 第一个字段是指档案
2015-09-08 10:36:02 314
转载 指针函数与函数指针的区别
只怪自己当年学艺不精,对指针函数和函数指针总是傻傻分不清楚,要用到的时候总是翻书查一下,然后又忘了.......今天做了中兴的笔试题,又考到了这类问题,我当时就蒙逼了,有摄像头监控,手头又没有C语言书,只有蒙了........ 指针函数是指返回值是该类型的指针变量,本质上还是函数。比如 int * A(int num); 这就是一个 指针函数。 函数指针 是一个
2015-09-07 22:43:17 444
原创 uC/OS--II的时间管理
上一次我们谈到了任务管理,今天来讲一下uC/OS的时间管理。 大家初学单片机的时候都跑过流水灯这个例程吧,流水灯程序里一定有延时函数delay吧,想想那时候delay是怎么写的:让CPU空转!空转啊同学们,多么令人心疼的事,8051核这么经典的设计让你们用来空转啊(咳咳,当然了51跑多任务还是比较吃力的)。 那么说回来,uC/OS是如何处理眼是这个问题的呢?μ
2015-09-07 21:45:22 809
原创 SRAM与DRAM区别
随机存储器是指能够在存储器指定的存储单元随时写入或读取信息,断电时信息随之消失的存储器。SRAM(静态RAM):由存储矩阵、地址译码器和R/W控制电路组成。存储矩阵是由若干个存储单元组成的二维矩阵,每个存储单元可以存放一位二进制信息。DRAM(动态RAM):静态RAM的存储单元用的晶体管数目多、功耗大,为克服这个缺点,人们研制出DRAM。DRAM的存储单元是利用MOS管栅极电容具有暂存电荷
2015-09-06 23:35:58 1010
原创 uC/OS-II任务机制理解
半年前接触的uC/OS,看了两个月之后又因为其他的事把他放下了。现在因为项目需要又把它重拾起来。 uC/OS----Micro Controller OS微控制器操作系统,美国人Jean Labrosse于1192年完成,1998年出现uC/OS--II,2000年NASA许可可用于飞行器中(无人机中有木有啊!但是很少有极客把他用到飞控中,APM的操作系统是一个裁剪的Linux-
2015-09-05 09:19:43 1286
原创 移植APM代码之PID调节
APM代码我也看过了好几个版本的了,从2.91b到可以用PIX4FLOW的3.2.1到最新的3.3.1,不同版本的PID代码都有些区别,关于对他的PID代码的理解我会在单独的文章中聊一聊,今天先讲一下我在瑞萨G13单片机平台上调节PID的心得,PID代码是移植ArduCopter_3.2.1rc1的,大家可以自己去github下载。 调PID的过程有参考博主super_mice的博
2015-09-04 18:49:04 3673 1
转载 姿态结算----梯度下降法
以前搞四轴飞行器都是用的集成传感器如MPU9150、MPU6050啦,不得不说Invensensor的MEMS传感器不输ADI,后来深入研究AHRS(Attitude and Heading Recognition System)和IMU(Inertial measurement unit)这两个姿态结算方法,网友告诉我要想找到问题出在哪,必须理解算法。于是便找资料研究这两个算法,其实他们的本质算
2015-09-04 17:39:49 1626
原创 六足机器人的步态分析与实现——1
1、六足机器人步态的定义 步态:是指机器人的每条腿按一定的顺序和轨迹的运动过程,正是因为这一运动过程实现了机器人的步行运动。 步态周期:步态周期是指多足机器人完成一个步态所需的时间,也就是所有腿轮番完成一次“提起-摆动-放下”的动作所花费的时间,在此过程中机器人机体也完成过渡过程。本系统的步态周期参数可调,经过实际测试,最小步态周期是300ms,这个参数受限于舵机的
2015-09-04 17:11:50 23332 3
目录树浏览器
2015-11-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人