- 博客(55)
- 收藏
- 关注
原创 设计模式之设计原则-迪米特法则
迪米特法则迪米特法则,又称为最少知道原则,意思是说:一个对象应该对其他的对象有最少的了解,也就是说,一个类应该与自己需要耦合或者调用的类知道的最少,我不管你内部的实现是负责或者简单,高效或者冗余,那是你自己的事情,我只管调用你的public方法,完成我的任务,其他的一概不关心。知道的越少越好迪米特法则对类的低耦合提出了明确的要求,包含以下4层含义:只和朋友交流迪米特法则还有一个...
2018-03-02 12:04:15
480
原创 MDM(EMM)前期基本调研
MDM基本涵盖方面在这里我们只谈基本的设备管理(MDM),其他的设计到内容管理,邮件管理的暂且不谈,这里也会涉及到一些应用管理的部分。设备生命周期管理MDM或者说是EMM,由于其使用场景特殊,基本要求对设备的管理具有闭环的生命周期。设备注册也可以叫做设备绑定或者设备启用,不论是COPE或者是BYOD的设备,都要求对设备和服务器进行绑定,服务器创建设备或者用户,下发注册信...
2018-03-02 09:47:33
5436
原创 设计模式之设计原则-接口隔离原则
接口隔离原则的定义既然是接口隔离原则,那我们的主角就是接口了,在这里,接口分为两种:实例接口和类接口。接口分类实例接口实例接口指的是Java中的类,你没看错,Java中的类也是接口的一种,我们知道,接口的本质是抽象,在于制定规范。例如,我们声明一个Person类,然后使用Person zhangsan = new Person();产生了一个该类的实例,那么这个zhangs...
2018-03-01 11:59:54
497
翻译 Java加密体系结构(JCA)参考指南
介绍Java平台强调安全性,包括语言安全,密码学,公钥基础设施,认证,安全通信和访问控制。JCA是平台的一个主要部分,包含一个“Provider”体系结构和一组用于数字签名,消息摘要(哈希),证书和证书验证,加密(对称/非对称块/流密码),密钥生成 管理和安全随机数生成等等。 这些API允许开发人员将安全性轻松集成到应用程序代码中。 这个架构是围绕以下原则设计的:实现独立性应用程序
2018-02-01 11:28:48
7945
3
翻译 Java安全架构概览
介绍Java平台在设计的时候就着重与安全方面,在Java核心设计中,Java语言本身就是类型安全的,并且提供了自动垃圾收集机制,用于增强代码的健壮性,类在加载时需要被验证,用于保证只有合法的Java代码会被执行。初始的Java平台创建了一个安全的运行环境,用于执行那些可能不被信任的代码,例如从公共网络上下载下来的Java applets。随着平台的成长以及部署范围的扩展,Java安全体系结
2018-01-30 15:38:42
13840
原创 uboot启动过程(一)
uboot运行有两个阶段,一个阶段是运行在SRAM中的汇编阶段,另一个是运行在DDR中的C语言阶段。我们先进行第一阶段的分析。start.S文件start.S文件组成了uboot的第一阶段运行内容,在链接脚本中的代码段中第一句链接的start.o就说明了这一点,我们知道C语言中main函数就是整个程序的入口,在uboot汇编阶段中,程序的入口取决链接脚本中ENTRY声明的部分,我们知道ub
2018-01-18 22:35:23
4521
1
原创 uboot的配置和编译文件解析
Makefile分析版本确定在文件开头的几行就是版本号:VERSION = 1 // 主版本号PATCHLEVEL = 3 // Patch版本号SUBLEVEL = 4 // 次版本号EXTRAVERSION =U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)VERSION_
2017-12-13 21:20:30
4078
原创 uboot之初体验
uboot基础认识uboot来源我们可以从uboot的官网下载uboot源代码,这种方式下载的源代码可能没有针对于当前开发板的移植,也可以从soc厂商提供的地址下载,这种方式一般是针对这个Soc已经移植过的uboot,还可以从开发板供应商处获得uboot,这种方式的uboot移植的更加彻底。编译一般在开发板厂商提供的bsp中可以找到移植好的uboot,拿到之后先进行配置,一
2017-11-05 19:23:25
244
原创 Shell和Makefile
Shell可以理解为Linux系统的操作命令行界面,是人机交互的一种方式,可以使用shell和操作系统,uboot等软件系统进行交互,
2017-09-27 22:24:52
1068
原创 uboot基础知识
uboot简介uboot主要是用于启动操作系统内核,部署整个计算机系统,操作主板上的驱动,提供命令行界面供操作员操作等工作。uboot启动过程计算机系统通常有CPU,外部存储区,内部存储区三部分构成,典型的PC机在上电时先启动固化在主板上NorFlash的BIOS程序,由BIOS程序初始化DDR内存,硬盘,从硬盘将操作系统镜像读取到DDR中,然后跳转到DDR中执行操作系统,直到操作系统
2017-09-18 21:47:08
1030
原创 C语言链表,状态机和多线程
链表数组有两个缺点,数组中所有元素的类型必须一致,并且数组的大小必须事先指定并不能更改,结构体解决了数组的第一个缺点,使用链表这种数据结构就可以解决数组的第二个缺点,链表的长度可以实时的增大或者减小。链表是将一个一个节点相互链接起来,每个节点中的内存可以用来存储数据,每个节点是结构是完全类似的,由有效数据和指针构成,在C语言中使用指针将每个节点链接起来,有效数据用于存储信息,指针区域用于指
2017-06-04 10:39:51
1393
原创 C语言杂散问题
操作系统到底是什么?操作系统其实就是类似于人类社会一样的软件系统,操作系统本身并不直接生产价值,他的主要任务是管理资源,并为应用程序提供服务,操作系统既是管理者,也是服务者。操作系统的调用通道:API应用程序和操作系统之间通过API接口进行互相调用,应用程序需要使用系统资源的时候,通过API向操作系统发出申请,操作系统响应申请,以帮助应用程序执行功能。C库和API某些时候,
2017-06-03 22:54:32
2365
原创 存储类,作用域,生命周期和链接属性
概念解析存储类存储类就是存储类型,描述C语言变量在什么地方存储,内存中有多重管理方法,堆,栈,数据段,bss段,text段,变量存储类属性描述的就是这个变量存储于什么内存段中。作用域作用域就是该变量起作用的范围,C语言变量起作用的范围是当前代码块。生命周期生命周期描述的是运行时给变量分配内存空间,以及回收该变量的内存空间的一个阶段。链接属性把源代码编译成目标文件之后,目标文件总包含众多的符号和各种段
2017-05-28 21:25:55
451
原创 C语言预处理和函数
预处理预处理是C语言中的一个重要特性,值得我们深入讨论,源代码到可执行程序源代码经过编译。生成.o文件,再经过链接,成为elf可执行程序,但是实际上,源码经过编译之后,不是直接的.o文件,而是汇编文件.S,汇编文件经过汇编,才得到目标文件.o,所以说,C语言程序需要先被编译成汇编文件,再把汇编文件编译为目标文件,但是更进一步,在源码被编译成汇编文件之前,需要先进行预处理,也就是我们这个
2017-05-28 15:18:10
2203
原创 C语言之数据结构
C语言中的基本结构体以及内存之间的关系,我们经常用到,所以我们今天来学习一下这些内容内存内存是什么,和数据结构有什么关系?内存从哪里来?内存是程序运行的活动之地,程序需要放在内存中运行的,程序运行时需要内存来存储一些临时变量数据。内存在物理上本身是一个硬件器件,由硬件系统提供,内存在使用的时候需要由操作系统来统一管理,操作系统为了方便合理的管理内存,操作系统提供了多种机制来让应用程序使用内存,这些机
2017-05-22 22:49:20
1733
原创 指针进阶
本节继续讨论C语言中的指针。指针数组&数组指针先理解一下什么是指针数组和数组指针,指针数组的实质是个数组,这个数组中存储的元素都是指针变量,而数组指针实际上是一个指针,这个指针指向一个数组。通过表达式区分不同指针数据和数组指针的表达式有一定的区别,关键在于号的位置,如果号和变量结合性强,表示是指针,否则,就是数组,所以,符号的优先级在这里非常重要,决定了两个符号同时和变量结
2017-05-03 20:47:10
646
原创 C语言之指针
常用的位操作符号常用的位操作符有大概6种位与&:只有两个位都为1时,结果为才1位或 |:只要两个位中有一个为1,结果就为1取反 ~:对于特定位,如果位等于0,则结果为1,如果位等于1,则结果为0异或 ^:两个位同为1或者同为0时,结果为0,否则结果1移位 >:对于一个数,将其二进制位向左统一向左边移动n位,称为左移>,左边空出来的位,无符号数补0,有符号数补符号位。C语言中
2017-03-26 17:34:06
717
原创 设计模式之设计原则-依赖倒置原则
依赖倒置原则依赖导致原则最原始的定义是这样的: High level modules should not depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details.Details should depend upon abstrac
2017-02-28 16:28:37
769
原创 Android中LaunchMode详解
越是做的时间越长,基础知识就忘的越干净,最近做一个项目中,发现启动的几个Activity居然重叠了,我ri~~,再不回忆一下就要退出Android界了。概念解释TaskTask叫做任务,这个简单,表示我们需要完成的事情,注意,这里我们说的是任务,是个名词,例如要发短信,那我们的任务就是发送一条短信,仅此而已,再例如教官说:”张三,你去吃屎!”,ok,那张三的任务就是吃屎。Back Stack我们常叫
2016-12-21 17:29:17
5808
10
原创 C语言之内存和位操作
内存和程序运行程序运行的目的是为了得到特定的结果,计算机本质上是用于计算的,既然是用于计算,就需要参与计算的数据,那这些数据就存储在内存中,计算之前参与运算的数据以及运算之后得到的数据,都存储在内存中。程序运行无外乎两种目的,一种是为了得到某种结果,另外一种是为了执行某一种过程,在C语言中返回值void类型的函数就是为了执行某一种过程,有具体返回值的函数就是为了得到某种结果。计算机程序
2016-11-20 18:12:08
5340
原创 Shell
什么是ShellShell是壳的意思,计算机中Shell常用于表示一种命令行的用户操作接口,Shell常用来表示封装,由于计算机很复杂,所以常把功能的实现和调用分开,Shell里边是功能实现,外边是功能调用,所以Shell可以看做是复杂功能实现的封装并向外部提供的比较容易的而接口程序或者操作系统的接口程序或者操作系统在运行起来之后,都会为用户提供操作界面,该界面就是一种Shell,用户
2016-11-13 22:47:47
729
原创 触摸屏
输入类设备IO输入输出是计算机中重要的概念,计算机通过输入从外部获取数据然后进行计算,然后通过输出向外部输出计算结果,计算机通过IO和外部进行交互,每台计算机都有标准输入,标准输出,在编程中还有标准错误输出的概念。常见输入类设备常见的输入类设备有键盘,鼠标,触摸屏,游戏机手柄,摇杆,摄像头,扫描仪,传感器等触摸屏的特点触摸屏,尤其是电容式触摸屏,和人和显示器的关系很紧密,几乎是
2016-10-27 23:11:48
916
原创 LCD
LCD分类和特点LCD背光是白色的,白光的像素值是255,255,255,通过白光可以显示任何其他颜色的光,LCD分很多种:TN面板:最早的面板,响应性不够强,有拖尾现象STN面板:解决了拖尾现象TFT面板:超薄 - 其他显示技术CRT阴极摄像管显示器,寿命短,体积较大,、等离子显示器,未成 主流OLED,可以实现柔性 显示LED,户外大屏幕,照明LCD接口
2016-10-23 17:44:56
1917
原创 设计模式之设计原则-里氏替换原则
父类和子类面向对象语言中的继承,有以下优点:代码共享,减少创建子类的工作量,只要继承了父类就拥有父类的方法和属性提高代码重用性子类可以完全继承父类的方法,又可以对父类的方法进行重写,既可以和父类保持一致,也可以有自身的特点提高代码的扩展性,只要实现父类的方法就可以调用,许多开源框架都是继承父类来实现的提高项目和产品的开放性但是缺点也有:继承具有侵入性,只要继承,就必须
2016-10-19 13:21:37
1925
原创 I2C通信和ADC
I2C接口I2C接口只有两根线,SCL和SDA:SCL:时钟线,传输时钟信号,由主设备向从设备传输时钟信号,SDA:数据线,传输数据信号,主从设备之间相互传递数据的通道I2C属于串行通信,数据以bit为单位在SDA线上串行依次传输,同步工作状态,主从设备工作在同一个时钟频率下,通过SCL线同步时钟,I2C传输电平信号,不需要很高的速度,通信双方距离很近,所以不需要差分信号来抗干扰,I2C通常用
2016-10-03 22:48:52
13040
原创 NandFlash和iNand
NandFlashNand型号和命名例如K9F2G08这个NandFlash,K9F表示三星公司的NandFlash,2G表示2Gbit,08表示该Nand有8位数据位。Nand数据位Nand的数据位有8位和16位之分,软件应该根据实际采用的Nand来进行设计和编写。Nand采用并行接口存储,数据位上传递的不一定是纯数据,也可能是命令,地址等。Nand功能框图框图如
2016-10-02 22:54:12
2407
原创 使用SD卡启动
主流外存储设备我们一般把RAM叫做内存,ROM叫做外存,常见的外部存储器有:磁带,CD,软盘,硬盘,光盘等磁性存储设备,技术成熟,价格便宜,但是读写速度和可靠性不足,桌面电脑使用较多,嵌入式设备一般不采用Flash存储设备:使用电学原理存储,没有物理动作,损耗小,读写速度较快,在嵌入式设备中应用较多 纯粹测NandFlash,NorFlash,出现的最早,最原始的Flash颗粒,对存
2016-10-01 20:29:04
2485
原创 定时器,看门狗&RTC
定时器作为Soc中的常见外设,和其他外设并没有什么不同,通常和计数器联系在一起,定时器常用来实现定时执行代码,相当于Soc的闹钟,可以让Soc具有计时功能。定时器原理定时器通过内部的计数器的计数来实现的,计数器根据时钟频率来工作,时钟源来自APB总线,通过时钟模块的分频器分频之后到达计数器,每个时钟周期计一个数,定时器的时间就是计数器的计数值*时钟周期,定时器中有一个TCNT寄存器,计时开始时放入一
2016-09-25 17:59:16
5376
原创 串口通信
串口基本概念通信基础通信中的两个重要方面:信息的表示和解析方式,通信双方需要事先约定好,应该保持一致信息的传递方式,信息在传输介质上的传输过程通信过程分为编码,传输,解码三个基本步骤。电子通信概念同步通信和异步通信同步:发送方和接收方按照同一个时钟节拍工作,这种方式配合很好,但是,需要发送方需要同时发送时钟信号给接收方,接收方根据时钟信号安排自己的工作节拍
2016-09-09 17:56:54
992
原创 去除烦人的This Handler class should be static or leaks might occur
消灭This Handler class should be static or leaks might occur
2016-09-08 18:16:38
10748
原创 时钟系统
时钟系统需要理解其概念,然后会控制时钟系统即可。时钟概念时钟可以理解为一个根据同步节拍而进行同步工作的系统,Soc内部有CPU和一系列的内部和外部外设,这些都要同步的进行工作,需要有一个共同时钟系统来同步指挥,就Soc的时钟,时钟可以产生同步信号,来指挥CPU和外设进行同步工作。 时钟可以从外部输入获得,例如通过引脚获得时钟频率,也可以通过外部晶振+内部时钟发生器,还可以添加内部
2016-07-19 22:31:41
6714
原创 重定位和链接
链接和重定位是嵌入式C中很重要的部分,对于这一块掌握的越精细越好。指令位置分类指令分为两种:位置无关编码(PIC):汇编源文件被编码成二进制可执行程序时编码方式与位置(内存地址)无关位置相关编码:汇编源文件被编码成二进制可执行程序时编码方式与位置(内存地址)相关在程序设计编译链接过程会给程序一个运行地址,而且必须给编译连接器指定这个地址,最后得到的二进制程序是和指定的
2016-07-10 11:32:44
8043
原创 汇编启动
使用汇编代码启动S5PV210开发板。使用汇编进行启动,需要经过下面几个基本步骤:关看门狗设置栈初始化iCache看门狗看门狗的概念看门狗,watchDog Timer,其实是一个定时器,这个定时器每隔固定时间会发出一次让CPU复位的指令,以防止CPU跑飞或者出现其他异常,之后可以复位重置。为什么要喂狗在启动阶段如果不去喂狗,则看门狗就会发出复位指令,所
2016-07-09 10:05:29
780
原创 裸机开发之点亮LED
基于X210开发板的LED灯点亮。原理图和引脚分析查阅底板原理图可以得到,四个LED引脚分别为:D22:GPJ0_3D23:GPJ0_4D24:GPJ0_5D25:PWMTOUT1其中PWMTOUT1引脚与核心板的GPD0_1引脚相连,所以可以通过操作GPD0_1引脚来操作D25。
2016-07-04 22:51:23
1095
原创 交叉编译环境
搭建嵌入式交叉编译环境简单教程。GCC交叉编译工具链安装将光盘中toolchain工具链拷贝到linux中,选择一个目录安装,我安装在/usr/local/arm目录下,没有该目录可以自行创建设置环境变量设置环境变量,可以编辑家目录下的”.bashrc”文件,添加”export PATH=$PATH:/usr/local/arm/bin”,然后执行命令”source .bashrc”即可.可以为每一
2016-07-02 14:00:11
997
原创 开发板镜像烧写
本片文章属于ARM裸机教程,记录在九鼎X210VB3S开发板上烧写系统镜像的几种方式。基本操作刷系统其实就是利用刷机工具,下载系统镜像到NAND或者Nor Flash中,使其在开发板上运行起来,专业一点叫做烧录;烧写系统镜像需要使用串口通信,串口其实是一种硬件通信接口,用于在开发板和其他设备之间进行通信,现在的串口通常用来做调试使用,当做嵌入式系统控制台来使用,一般使用串口线连
2016-06-27 20:21:30
4133
原创 ARM汇编指令集
ARM汇编指令集的介绍,包括指令和伪指令。指令和伪指令概念指令指令指的是CPU机器指令的助记符,是由CPU的指令集提供的,经过编译之后,会以二进制机器码的形式由CPU读取执行伪指令伪指令本质上不是指令,和CPU的机器指令没有任何关系,只是和指令一起写在代码中而已,是由编译器环境提供的,其目的是用于指导编译过程,伪指令经过编译后不会生成二进制机器码,仅仅在编译阶段有效果指令编程风格ARM官方风格官方风
2016-06-26 10:13:22
10133
原创 ARM体系结构(二)
ARM体系结构第二篇,主要理解CPU的内存接口,ARM启动过程。内存映射S5PV210属于Cortex-A8架构,有32位地址线和32位数据线,所以CPU的地址空间为4G,但是由于使用了统一编址,外设占用了一部分地址空间,实际供内存使用的地址空间将小于4G,那么对于这个4G的地址空间的分配,就是内存映射,或者说叫地址映射,下图是S5PV210的内存映射分布图,来自于用户手册: 内存分布的描述: i
2016-06-25 22:25:19
8521
原创 ARM体系结构(一)
ARM体系结构第一篇,主要是一些概念性的东西,需要仔细理解。可编程器的编程特点和原理 在固定频率的时钟控制下有节奏的运行可以通过总线获取外部存储中的二进制指令,从而解码执行这些二进制指令是CPU设计的时候决定的,由CPU的设计者定义,这就是CPU汇编指令集CPU的指令集 指令集就是ARM汇编指令集汇编语言相对C等高级语言比较复杂,且移植性差,不适合较大型的项目,但是汇编语言效率高
2016-06-25 09:17:04
5929
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人