自定义博客皮肤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)
  • 资源 (5)
  • 问答 (2)
  • 收藏
  • 关注

原创 数据脱敏的正确姿势

数据脱敏策略使用加解密接口,加解密分布在业务代码。优点:方便实施缺点:易出现问题,难以维护使用拦截器,优点:其他开发无需关注脱敏的事情,缺点:拦截所有sql。效率低。缺乏灵活性使用类型处理:优点: 可根据需要对数据脱敏,推荐流程项目使用spring+mybatis,使用mybatis的TypeHandler脱敏继承BaseTypeHandler ,重写...

2019-04-02 11:43:59 2261

原创 uboot lds文件分析

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")/*指定输出可执行文件是elf格式,32位ARM指令,小端*/OUTPUT_ARCH(arm)/*指定输出可执行文件的平台为ARM*/ENTRY(_start)/*指定输出可执行文件的起始代码段为_start*/

2014-10-19 16:54:03 414

原创 uboot1.1.6/lowlevel.S详解

_TEXT_BASE:.word TEXT_BASE // 这个TEXT_BASE是在uboot1.1.6/board/smdk2410/config.mk内定义的,TEXT_BASE = 0x33F80000。config.mk内有注释,这个地址是规划用来运行uboot的SDRAM区域开始地址。所以这个地址定义在这里主要是给链接器使用的,让链接器在链接时,重定位步骤中,将uboot代码重定位

2014-10-19 16:54:01 552

原创 lowleve_init.S分析(转)

/* * Memory Setup stuff - taken from blob memsetup.S * * Copyright (C) 1999 2000 2001 Erik Mouw ([email protected]) and *                     Jan-Derk Bakker ([email protected]) * * Mo

2014-10-19 16:53:59 469

原创 C语言堆栈入门——堆和栈的区别

来看一个网上很流行的经典例子: main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() { int b; 栈 char s[] = "abc"; 栈 char *p2; 栈 char *p3 = "123456"; 123456\0在常量区,p3在栈上。 static int c =0; 全局(静态)初

2014-10-19 16:53:54 474

原创 NOR Flash

所谓Flash,是内存(Memory)的一种,但兼有RAM和ROM 的优点,是一种可在系统(In-System)进行电擦写,掉电后信息不丢失的存储器,同时它的高集成度和低成本使它成为市场主流。     Flash 芯片是由内部成千上万个存储单元组成的,每个单元存储一个bit。具有低功耗、大容量、擦写速度快、可整片或分扇区在系统编程(烧写)、擦除等特点,并且可由内部嵌入的算法完成对芯片的操作

2014-10-19 16:53:52 801

原创 动态链接库

GNU体系下so的兼容性及so内各接口实现的兼容性主要通过两种措施来保证: 1)  SONAME 2)  接口的符号版本   1.       SONAME GNU版本命名规范一般是..,简称为x.y.z 。其中Major不要求兼容性;Minor要求接口的向后兼容,只增加新接口;release是bugfix。因此保证兼容性要求Major

2014-10-19 16:53:50 547

原创 NOR Flash的烧写方式

相对于硬件工程师和嵌进式软件工程师一般在完成设计之后经常需要验证FLASH是否在工作.在应用当中,也有很多时候需要对FLASH进行写操纵.该文章简单先容了基于ARM芯片的NOR FLASH烧写,并提供了2个具体的实例和源代码,希看对有需要的朋友有点帮助.在开始之前,先声明一下,这篇文章只是先容了如何写 NOR FLASH 的烧写驱动,和H-JTAG/H-FLASHER没有直接的联系.   

2014-10-19 16:53:47 3313

原创 Linux -soname深入理解

-Wl 表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上,每一个库都有一个soname,当连接器发现它正 在查找的程序库中有这样一个名称,连接器便会将soname嵌入连结中的二进制文件内,而不是它正在运行的实际文件名,在程序执行期间,程序会查找拥有 soname名字的文件,而不是库的文件名,换句话说,soname是库的区分标志。 这样做的

2014-10-19 16:53:45 1002

原创 静态库和动态库的区别

库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。  1. 静态函数库     这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺

2014-10-19 16:53:43 306

原创 CPU 用户时间 系统时间

时钟时间(墙上时钟时间wall clock time):就是一个进程从开始运行到结束运行后,时钟走过的时间,这其中包含了进程在阻塞和等待状态的时间。    用户CPU时间:就是用户的进程获得了CPU资源以后,在用户态执行的时间。    系统CPU时间:用户进程获得了CPU资源以后,在内核态的执行时间。   进程的三种状态为阻塞、就绪、运行。   时钟时间 = 阻塞时

2014-10-19 16:53:41 744

原创 linux驱动头文件说明

#include 是在linux-2.6.29/include/linux下面寻找源文件。 #include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。 #include 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。 #include在linu

2014-10-19 16:53:38 445

原创 dev/null和dev/zero

使用/dev/null 把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用. 禁止标准输出.    1 cat $filename >/dev/null2 # 文件内容丢失,而不会输出到标准输出. 禁止标准错误 (

2014-10-19 16:53:36 309

原创 C语言条件编译及编译预处理阶段

一、C语言由源代码生成的各阶段如下: C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件        其中 编译预处理阶段,读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。或者说是扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。预处理过程先于编译器对源代码进行处理。

2014-10-19 16:53:29 327

原创 linux命令英文缩写的含义(方便记忆)

linux常用命令的英文单词缩写 命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户rpm:redhat package manager 红帽子打包管理器pwd:print work di

2014-10-19 16:53:27 455

原创 如何写Makefile from 精华文章@chinaunix.net

[精华] 跟我一起写 Makefilehttp://www.chinaunix.net 作者:gunguymadman 发表于:2009-06-30 15:55:17【发表评论】【查看原文】【C/C++讨论区】【关闭】 陈皓 概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工

2014-10-19 16:53:24 551

原创 linux service命令

ervice命令,顾名思义,就是用于管理Linux操作系统中服务的命令。1.声明:这个命令不是在所有的linux发行版本中都有。主要是在redhat、fedora、mandriva和centos中。2. 此命令位于/sbin目录下,用file命令查看此命令会发现它是一个脚本命令。3. 分析脚本可知此命令的作用是去/etc/init.d目录下寻找相应的服务,进行开启和关闭等操作。

2014-10-19 16:53:22 359

原创 二进制实用程序(objdump, readelf,ar, nm等)

GNU 二进制实用程序Binutils (GNU binary utilities)包括:objdump、readelf、addr2line、strip、ar、nm、ldd、ngprof、gcov等。 一。 objdump - 显示二进制文件信息 objdump可以根据目标文件来生成可读性比较好的汇编文件。常用的命令如下:  gcc -g3 test.c -o

2014-10-19 16:53:20 555

原创 在ubuntu下利用vim编程常用的快捷操作

本文来自本人实际操作,特别实用,有更加实用的方法还请大神指教。终端操作:Ctrl+Alt+T 在桌面状态下打开终端;Ctrl+Shift+N 打开另一个终端;Alt+Tab 多终端切换;vim操作:dd 剪切(多用于删除一行);num+yy 复制;p 粘贴;Ctrl+u 撤销; 管理员在2009年8月13日编辑了该

2014-10-19 16:53:17 483

原创 C语言中const 的常见用法

const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable)。我们来分情况看语法上它该如何被使用。1、函数体内修饰局部变量。例:void func(){const int a=0;}首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量,我们给它赋予初始值0。然后再看const.

2014-10-19 16:53:15 458 1

原创 嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一)

嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn 一、移植环境主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.

2014-10-19 16:53:13 230

原创 bootloader详解(转载)

转载,出处不明,文章写得非常好! 一。bootloader介绍 bootloader是硬件在加电开机后,除BIOS固化程序外最先运行的软件,负责载入真正的操作系统,可以理解为一个超小型的os。目前在Linux平台中主要有lilo、grub等,在Windows平台上主要有ntldr、bootmgr、grldr等。这里以grub-0.97为基础描述bootloader的启动过程。

2014-10-19 16:53:10 6077

原创 ARM流水线

流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一。ARM7处理器核使用了典型三级流水线的冯·诺伊曼结构,ARM9系列则采用了基于五级流水线的哈佛结构。通过增加流水线级数简化了流水线各级的逻辑,进一步提高了处理器的性能。    ARM7的三级流水线在执行单元完成了大量的工作,包括与操作数相关的寄存器和存储器读写操作、ALU操作

2014-10-19 16:53:08 524

原创 arm 中断基础

各异常中断的中断向量地址以及中断的处理优先级 中断向量地址 异常中断类型 异常中断模式 优先级( 6 最低)

2014-10-19 16:53:06 317

原创 ARM工作模式与中断

在ARM处理器7种运行模式中,除用户模式外,其余6种模式称为非用户模式或特权模式,其中除用户模式和系统模式以外的5种又称为异常模式。在非特权模式(用户模式)下,不能对CPSR寄存器设置,只能读取CPSR的值。ARM汇编进入默认模式的是管理模式。CPSR的控制位共有8位,也就是最后8位。M[7]为中断禁止位I,M[6]为快速中断禁止位F,M[5]为处理器的运行状态位T,M[4:0]为运行位。

2014-10-19 16:53:04 507

原创 arm基础

1.     ARM中一些常见英文缩写解释MSB:最高有效位;LSB:最低有效位;AHB:先进的高性能总线;VPB:连接片内外设功能的VLSI外设总线;EMC:外部存储器控制器;MAM:存储器加速模块;VIC:向量中断控制器;SPI:全双工串行接口;CAN:控制器局域网,一种串行通讯协议;PWM:脉宽调制器;ETM:嵌入式跟踪宏;CPSR:当前程序状

2014-10-19 16:53:01 572

原创 利用《双缓冲技术及其在VC的GDI环境下的实现》理解armv7计数器中的双缓冲技术

arm的资料凤毛麟角,最近在研究arm计数器,里面用到的双缓冲技术对于初学者很难理解,下面这篇文章对理解双缓冲很有用。  1、Windows 绘图原理  我们在 Windows 环境下看到各种元素,如菜单、按钮、窗口、图像,从根本上说,都是“画”出来的。这时的屏幕,就相当于一块黑板,而 Windows 下的各种 GDI 要素,如画笔、画刷等,就相当于彩色粉笔了。我们在黑板上手工画图

2014-10-19 16:52:59 400

原创 把Vim改装成一个IDE编程环境

1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我

2014-10-19 16:52:57 294

转载 c++计划

1.C语言与C++语言的区别与联系;2.C++内存模型,命名空间和数据类型;3.C++函数,引用,内联函数,函数模板,函数重载;4.面向对象编程(OOP),类和对象;5.构造器,拷贝构造,析构,new/delete;6.运算符重载;面向对象编程(OOP),封装;7.面向对象编程(OOP)继承;8.面向对象编程(OOP)友元;9.面向对象编程(OOP)多态;10.

2014-10-01 18:37:22 338

C语言接口与实现:创建可重用软件的技术

C语言接口与实现:创建可重用软件的技术,更高一层的认识C码开发。

2015-08-17

C嵌入式编程设计模式

史上最高清的《C嵌入式编程设计模式》,让你对嵌入式软件开发有更深入的理解。

2015-08-17

基于状态机的嵌入式系统开发

《基于状态机的嵌入式系统开发》带你走进嵌入式开发的深层思想。

2015-08-17

arm经典300问

比较详细的列举了初学者接触arm时出现的问题,并且给出了比较深刻而详细的解答。

2013-07-27

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

TA关注的人

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