自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (6)
  • 收藏
  • 关注

原创 chroot: failed to run command 'adduser': Exec format error 解决方法

dockers遇到的问题Run this command to register the qemu parts correctlydocker run --rm --privileged multiarch/qemu-user-static:register --reset

2020-01-16 15:23:53 3455

原创 E: Sub-process /usr/bin/dpkg returned an error code (1) 解决办法

在 Ubuntu 执行sudo apt-get install 时,出现了如下的报错:Setting up ssh (1:7.6p1-4ubuntu0.3) ...Processing triggers for libc-bin (2.27-3ubuntu1) ...Processing triggers for ca-certificates (20180409) ...Updat...

2020-01-16 15:18:11 593

转载 Linux驱动mmap内存映射

mmap在linux哪里?什么是mmap?上图说了,mmap是操作这些设备的一种方法,所谓操作设备,比如IO端口(点亮一个LED)、LCD控制器、磁盘控制器,实际上就是往设备的物理地址读写数据。但是,由于应用程序不能直接操作设备硬件地址,所以操作系统提供了这样的一种机制——内存映射,把设备地址映射到进程虚拟地址,mmap就是实现内存映射的接口。操作设备还有很多方法,如ioctl...

2019-07-09 13:23:51 214

转载 Linux 下格式化 FAT32 分区,只是一个 mkfs.vfat 就行了吗?

转载网址: Linux 下格式化 FAT32 分区,只是一个 mkfs.vfat 就行了吗?问题发现首先不得不说的是,当年在我不了解如何格式化一个分区到 FAT32 类型时,我选择了百度,当时得到的答案是 mkfs.vfat device。虽然惊奇于为何如此简单,但却没做深究,后来学会了如何看 infopage、manpage,也没仔细研究这里面的问题。直到现在,在种种偶然情况下...

2019-06-17 16:40:06 7647

转载 uboot下的命令行

转载: uboot下的命令行 1.典型嵌入式linux系统启动过程:嵌入式系统上电后先执行uboot、然后uboot负责初始化DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS(OS启动后uboot就无用了)2.uboot必须解决哪些问题1、自身可开机直接启动(1)一般的SoC都支持多种启动方式,譬如SD卡启动、NorFlash启动、NandF...

2019-06-04 14:35:24 1284

原创 Ubuntu 18 安装gcc

Ubuntu 18,安装gcc步骤:打开控制台,依次输入指令:sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt-get updatesudo apt-get install gcc默认获取最新版本的gcc。安装之后,gcc还不是默认编译器,再次输入如下指令:gcc -v显示版本号,同时会将gcc设置成默认...

2019-05-15 13:56:25 429

原创 程序员必须知道的几个Git代码托管平台

下面推荐几个比较好的Git代码托管平台,这里我不做过多的说明和评价,也好让大家多看看,比较一下,找到自己的"真爱"。首先先介绍3个国际知名的1、GitHub首先推荐的是GitHub,好多好的开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有 仓库要收费,如果你做的是一个开源项目,可以首选GitHub。GitHub地址:https://github.com/,其首...

2019-04-29 18:04:35 1293

原创 Shell命令——文件目录

Linux只有一个文件系统树,不同的硬件设备可以挂载在不同目录下。文件或目录有两种表示方式: - 绝对路径:从根目录”/”开始 - 相对路径:从工作目录开始,使用”..”指向父目录,”.”指向当前目录。在大多数情况下”./”可以省略。隐藏文件:以”.”开头的文件命令 作用 pwd 显示当前工作目录 cd 切换工作目录 ls 列出目录的内容 ...

2019-04-26 14:45:24 797

转载 MobaXterm学习与使用

转载地址: MobaXterm学习与使用首先要弄清几个概念1.先来看看SSH是什么,定义如下: SSH是一种可以保证用户远程登录到系统的协议。实际上,SSH是一个网络协议,允许通过网络连接到Linux和Unix服务器。SSH使用公钥加密来认证远程的计算机。通常有多种途径使用SSH,自动连接或是使用密码认证登录。 Windows用户应该都听说过Telnet,这也是一种命令行...

2019-04-24 12:24:28 1612

转载 Linux常用命令及其英文全称

转载网址:Linux常用命令及其英文全称alias:给命令起别名awk = "Aho Weiberger and Kernighan" ,三个作者的姓的第一个字母bash:GNU Bourne-Again Shell,大多Linux的默认shellbc = Basic Calculator,基础计算器,scale设定小数位,quit退出bg = BackGround,后台...

2019-04-01 16:07:14 244

原创 ARM Cortex-M memcoy的效率

c语言示例1如下:void mem_cpy(void *Dst,const void *Src,unsigned int size){ unsigned int i; unsigned char *pDst = (unsigned char *)Dst; unsigned char *pSrc = (unsigned char *)Src; for(i=...

2019-03-02 22:46:22 275

原创 ARM Cortex-M:结构体 vs 分散变量

 以下运行环境为Cortex-M4内核,编译环境为Keil MDK并且优化级别为-O2。静态变量使用结构体表示的代码无论在space上还是speed上都要优于分散变量,应当尽量使用结构体。对于局部变量采用结构体还是分散变量并没有什么区别。结构体创建一段测试代码,定义一个结构体test_t,包含4个成员变量,函数func给结构体的4个成员变量赋值。struct test_t{...

2019-02-01 15:34:00 320

原创 ARM Cortex-M设备重启从特定位置运行

在项目开发中,有些设备在接收到相关指令或者遇到某种中断触发后需要重启。如果从程序入口处进行启动,会有一段比较长的时间进行初始化工作,相当浪费时间。重启的位置可以从初始化后的特定位置重新运行,这就需要把当前的程序计数器PC及堆栈SP指针进行备份。下面的程序不涉及到进程堆栈,备份的断点位置是在线程模式下。首先需要声明两个变量:// Global Variables to track test...

2019-01-28 23:50:16 726 1

转载 ARM Cortex-M底层技术(十三)手把手教你写分散加载

转载地址:  手把手教你写分散加载还记得之前教大家写的启动代码吗?木看过滴,出门左转,第四篇【编写自己的启动代码】,当然仅仅能编写自己的启动代码怎么够,说了那么多分散加载的东东,是时候检验一下我们的水平了,合上书,来出题考试了~【自己编写分散加载】。来司机们,将装B进行到底~首先,看看我们之前第四篇文章里面的简易版分散加载:如下,之前按着没讲,前面罗里吧嗦的扯了辣么多分散加载,...

2019-01-25 23:30:46 750

转载 ARM Cortex-M底层技术(十二)KEIL MDK 分散加载-堆栈与预处理器

转载地址:   分散加载-堆栈与预处理器在分散加载中处理堆栈:分散加载机制提供了一种方法,用于指定如何在映像中放置代码和静态分配数据。 应用程序的堆栈和堆是在 C 库初始化过程中设置的。 通过使用特别命名的ARM_LIB_HEAP、ARM_LIB_STACK 或 ARM_LIB_STACKHEAP 执行区,可以调整堆栈和堆的放置。 此外,如果不使用分散加载描述文件,则可以重新实现__use...

2019-01-23 20:00:17 687

转载 ARM Cortex-M底层技术(十一)KEIL MDK 分散加载示例3-单独函数/变量的指定加载

转载地址:  单独函数/变量的指定加载小编我一向主张在实战中学习,不主张直接去去学习规则&定义,太枯燥,在实际应用中去摸索,才会真正理解具体的技术细节,下面我们就通过实际的简单用例来搞清楚分散加载。将函数和变量放到特定的指定加载地址的方法: 通常,编译器通过单个源文件生成RO、RW和ZI节。要将单个函数或者数据固定放在特定的地址上,我们必须允许链接器单独处理这个函数或数据并...

2019-01-23 17:28:35 533

转载 ARM Cortex-M底层技术(十)KEIL MDK 分散加载示例2-代码加载到片内SRAM中运行以及部分规则

转载地址:  KEIL MDK 分散加载示例2-代码加载到片内SRAM中运行&部分规则小编我一向主张在实战中学习,不主张直接去去学习规则&定义,太枯燥,在实际应用中去摸索,才会真正理解具体的技术细节,下面我们就通过实际的简单用例来搞清楚分散加载。简单示例这个功能是非常有用的,这个小编我之前的文章提过,是一种可以显著增加程序运算速度的方法,所以比较常用,可以把核心算法相关...

2019-01-20 18:44:43 933

转载 ARM Cortex-M底层技术(九)KEIL MDK 分散加载示例1-更改程序运行基址

转载地址:  KEIL MDK 分散加载示例1-更改程序运行基址小编我一向主张在实战中学习,不主张直接去去学习规则&定义,太枯燥,在实际应用中去摸索,才会真正理解具体的技术细节,下面我们就通过实际的简单用例来搞清楚分散加载。更改程序运行基址我们先来做一个最简单的示例,然后逐步深入。这里选择一颗简单一些的MCU,LPC824,一颗M0+作为示例(因为其比较简单,作为示例比较合...

2019-01-20 11:40:54 359

转载 ARM Cortex-M底层技术(八)KEIL MDK 分散加载-2-语法

转载地址:  KEIL MDK 分散加载的结构-2-语法 语法、枯燥的、烦人的语法……,但是有些时候木有办法,我本来也不想写这些东西,但确实绕不过去,我认为把它当成一种工具比较合适,了解大概结构以及基本的语法,一些细节没必要记的那么清楚,遇到问题的时候知道去哪里查就好了,这部分东西来自Keil的帮助文档,帮助文档中内容更加丰富也更加复杂,我节选出了一部分,了解这些基本可以搞定绝大多数应用,...

2019-01-19 23:18:32 500

转载 ARM Cortex-M底层技术(七)KEIL MDK 分散加载-1-分散加载的结构

转载地址: KEIL MDK 分散加载的结构1、我们先来解剖一只麻雀很多人会说我做项目时没用过分散加载啊,可能有些人甚至都不知道它的存在。事实上,开发环境会默认生成一个分散加载文件(或者叫链接器描述文件),你使用的可能就是这个默认的分散加载文件,先来看一下Keil默认生成的分散加载文件,使用LPC54608随便找了一个示例代码用Keil生成了一个,如下图所示:这个分散加载是keil...

2019-01-19 22:39:56 723

转载 ARM Cortex-M底层技术(六)分散加载的简单介绍

转载地址: 分散加载原理的简单介绍分散加载我自己在最初学习这部分内容的时候在网上找吐血了都没找到很靠谱的深入的文章,基本看之前不懂,看完了就更不懂了,后来只能硬着头皮自己慢慢摸索,也花了很多功夫,这里跟大家系统的分享一下,小编我会分成几篇文章来讨论这部分内容,争取做到让各位看官老爷看过我的文章后能够了解其原理并应用到自己的项目中去。前面N篇文章总是提及的分散加载我们将在接下来的几篇文档里面把他...

2019-01-18 20:47:35 845

转载 ARM Cortex-M底层技术(五)编译器编译内核原理以及其应用的简单介绍

转载地址: 编译器编译内核原理以及其应用上篇文档简要介绍了一下编译器的编译内核,当然介绍的很简单,没有深入进去,俗话说不深入怎么High,所以这里我们深入进去搞一下,看看里面都有些什么有用的东东。这里以市面上用的最多的Keil MDK为例,我们来研究下。1、先上一张老图,然后我们仔细看下这个器、那个器的都是干啥的:上一篇文章的图片,上一篇文章也简要介绍了下,但你可能会问,这...

2019-01-17 09:23:27 453

转载 ARM Cortex-M底层技术(四)编写自己的启动代码

转载地址:  ARM Cortex-M底层技术(四)编写自己的启动代码上一篇扯了一些关于启动代码的应用方面的内容,列举了4种我自己遇到过的常见的启动代码应用,当然实际的应用肯定不止上一篇文章中提到的那几种,关键是大家懂了原理后根据实际的需求添加自己的应用,这个才是关键。这一篇文章主要分享下如何编写自己的启动代码,你可能会说这种脱了裤子放屁的事情没必要的,CMSIS规范了标准的启动代码模板,...

2019-01-09 23:48:06 891

转载 ARM Cortex-M底层技术(三)启动代码的使用

转载网址: ARM Cortex-M底层技术(三)启动代码的使用上一篇扯了一些关于启动代码的原理,了解了原理不去使用意义就没有那么大了,了解了启动代码不是终极目的,我们的目的是深入理解Cortex-M系列MCU的底层原理,并应用到实际的产品中,加速开发,提升产品稳定性;下面就小编我的实际使用经历来看一下,启动代码的具体应用。启动代码的本质是在程序进入用户代码(main函数)之前初始化向量表...

2019-01-09 19:23:22 404

转载 ARM Cortex-M底层技术(二)启动代码原理分析

转载网址:ARM Cortex-M底层技术(二)启动代码原理分析写在前面的话:近些年来ARM Cortex-M阵营各厂商(ST、NXP、ATMEL、Freescale……)发布新产品的节奏越来越快,以及微控制器应用普及程度的加深,越来越多的开发者把更多精力投注在应用层开发上,花在对底层技术上的时间越来越少。小编我希望借助我之前对底层的一些积累,可以帮到大家快速的建立对Cortex-M系列处...

2019-01-09 18:11:09 604

转载 ARM Cortex-M底层技术(一)ARM Cortex-M系列微控制器概况

曾经也想对ARM Cortex-M做一些总结,在网上闲逛时,突然发现有位博主写的很不错,借此转载。转载网址:  ARM Cortex-M底层技术(一)ARM Cortex-M系列微控制器概况写在前面的话:近些年来ARM Cortex-M阵营各厂商(ST、NXP、ATMEL、Freescale……)发布新产品的节奏越来越快,以及微控制器应用普及程度的加深,越来越多的开发者把更多精力投注在...

2019-01-09 17:45:05 902

原创 NOR flash与NAND flash的区别

FLASH存储器又称为闪存,它也是可重复擦写的储器,部分书籍会把FLASH存储器称为FLASH ROM,但它的容量一般比EEPROM大得多,且在擦除时,一般以多个字节为单位。如有的FLASH存储器以4096 个字节为扇区,最小的擦除单位为一个扇区。根据存储单元电路的不同,FLASH存储器又分为NOR FLASH 和NAND FLASH,见下表。NOR FLASH 与NAND FLASH 特性对...

2019-01-08 22:34:28 685 1

原创 Cortex-M系列内核启动文件分析

启动文件简介启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作:1、初始化堆栈指针SP=_initial_sp2、初始化PC 指针=Reset_Handler3、初始化中断向量表4、配置系统时钟5、调用C 库函数_main初始化用户堆栈,从而最终调用main 函数去到C 的世界启动文件使用的ARM 汇编指令汇总其中DCD 相当于C语言力的&...

2019-01-04 20:20:46 840 1

原创 简单的Cortex-M栈检查

源文件CortexM_StackCheck.c代码如下:#include "CortexM_StackCheck.h"#include "myassert.h"extern void Stack_Mem(void);extern uint32 __get_MSP(void);#define CheckKey1 (0x12345678)#define CheckKey2 (0x8...

2019-01-01 23:39:11 950

转载 const T vs. T const ——Dan Saks 【翻译】

转载网址:  https://blog.csdn.net/bianbian17556231/article/details/5398039写程序的过程中遇到了const的用法,上网搜了点资料,都说Dan Saks的这篇文章讲的比较全面,就打算好好看看,可惜是英文的,因此决定自己来翻译一遍,为了更好地理解const的同时也能复习一下英语。原文可以参见:http://blog.csdn.net/b...

2018-12-30 20:12:08 171

转载 const T vs. T const ——Dan Saks

原文地址:  const T vs. T const ——Dan SaksIn my last column, I discussed one of the reasons why the rules by which a compiler can place data into ROM are a bit more complicated in C++ than they are in C....

2018-12-30 18:34:18 154

原创 volatile的用法与陷阱

基本用法一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1). 并行设备的硬件寄存器(如:状态寄存器)2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic vari...

2018-12-30 18:01:10 4337

原创 MDK 编译器优化

USE MicroLIBMicroLIB C函数库用于对微控制器以及其他嵌入式应用的优化,如果 MicrolIB选项没有使能,则默认使用ISO C函数库。。MicroLIB中的程序占用较少的存储器空间,不过同时它性能也降低了,并且在使用上还有一些局限性。USE Cross-Module Optimization通过跨模块优化这项技术,利用之前在建立过程中获取的信息,未使用的函数会被放到...

2018-12-29 23:58:03 2324

原创 Keil MDK编译器内存分配

CODE、RO、RW、ZI Data 域及堆栈空间   Keil MDK编译器完成编译链接后,在调试窗口会出现Code,RO,RW,ZI 四种内存分配区域,下面说明其中的意思。Code区:即代码区。该区域除了存放指令外,还包括指令数据(inc .data),如局部变量数组的初始化值。当函数被调用时,该函数用code区内指令数据来初始化堆栈区内分配的局部变量数组。注:局部变量用立即数来赋...

2017-07-27 15:12:07 4612 3

原创 Keil 51与MDK中的const

在Keil 51中,code修饰的变量放在ROM(Flash)中,而const修饰的变量为只读(不可修改),放在RAM中!可以用“code const”修饰变量,表示变量存储在ROM(Flash)中,且为只读,由此看来“code”与“code const”修饰变量有一样的功用。    在Keil MDK中,code修饰符无法使用,使用的话会报错。那么要怎么来修饰存放在ROM中的变量?此时是用到

2017-07-27 10:44:36 3046

国密算法SM2 SM3 SM4

SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括加解密与签名验签;SM3杂凑算法是我国自主设计的密码杂凑算法;SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算。 面临的机遇和挑战 1、推广情况说明 国家在金融领域启动国产密码算法试点工作以来,国家发改委启动了金融领域安全IC卡及密码关键产品专项支持工作,积极推动产业链发展。目前支持国密算法的软硬件密码产品共699项,包括SSL网关、数字证书认证系统、密钥管理系统、金融数据加密机、签名验签服务器、智能密码钥匙、智能IC卡、PCI密码卡等多种类型,目前已初步形成形式多样、功能互补的产品链,并保持着持续增长的势头。 2、数字认证系统(CA)的升级改造情况 2015年2月国家商业密码管理办公室发布公告称:根据要求全国第三方电子认证服务机构针对电子认证服务系统和密钥管理系统公钥算法进行了升级改造完毕已经全面支持国产算法,同时各认证服务机构正在积极推动国产算法的应用服务改造,淘汰有安全风险以及低强度的密码算法和产品。北京天威诚信作为最早成立的第三方电子认证服务机构也最早按照国密的要求完成了电子认证服务系统的升级改造,并且同步开始对服务类型的证书应用进行升级改造,目前已经累计完成150余个企业的应用升级工作,使得企业信息系统的安全性得到了极大的提升,也为我们带来了相应的经济效益。 3、挑战和机遇 虽然在SSL VPN、数字证书认证系统、密钥管理系统、金融数据加密机、签名验签服务器、智能密码钥匙、智能IC卡、PCI密码卡等产品上改造完毕,但是目前的信息系统整体架构中还有操作系统、数据库、中间件、浏览器、网络设备、负载均衡设备、芯片等软硬件,由于复杂的原因无法完全把密码模块升级为国产密码模块,导致整个信息系统还存在安全薄弱环节。 作为电子认证机构这个国产密码算法排头兵来说,由于密码服务是信息化安全建设的基础服务,密码的国产化改造和推广就成为我们重要的历史使命。为了普及和推广国产密码我们可以:一方面是产品升级改造,对于国外的产品,通过国产算法的标准出海战略,让国产算法成为国际标准从而国外的产品也就能够支持;对于国产的产品,加快国产算法模块的改造和应用,真正让国产算法为信息系统的安全自主可控;另一方面是应用的宣传和推广,国产算法虽然在安全圈里面是众所周知的事情,但是在其它领域根本就没有听说。所以对于从业者来说,就要不断对用户灌输使用国产密码算法以及尽快升级到国产算法的思想。只有从以上这两个方面入手并且持之以恒,相信国家提出的信息安全领域的自主可控战略最终就会实现。

2017-10-20

UCOS-II在C8051f340上移植源码

UCOS-II在C8051f340上移植源码

2016-07-06

ISO7816-4-2005

SO7816-4通信协议第二部分行业间交换命令,描述了各命令的格式。

2015-10-16

LUA中文教程

Lua不仅是一种易于扩展的语言,也是一种易整合语言。

2015-06-18

智能卡协议7816-3

7816-3协议描述了智能卡的一些电气特性和底层协议。

2015-06-18

空空如也

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

TA关注的人

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