《清华园日记》节选

我尝想,日记是最具体的生命的痕迹的记录。以后看起来,不但可以在里面找到以前的我的真面目,而且也可以发现我之成了现在的我的原因——就因为这点简单的理由,我把以前偶尔冲动而记的日记保持起来,同时后悔为什么不继续下来;我又把日记复活了,希望一直到我非停止记不行的时候。 ... 一九三二.九.十三晚九时记 清华园 以上的这些日记,我始终认为是我生命中顶有意义的一页。到了无聊到极顶的时候,我便取出来看看,使回忆的丝缕牵住了过去的时光,对我,最少对我,是再痛快没有的事了。 一九三三.五.二八 在清华园 二
分类: 其他 发布时间: 06-18 23:34 阅读次数: 3

Android Native进程内存泄露检测

Android Native进程内存泄露检测简介对于Android的native进程, Android源码中的Bionic库提供了一个很棒的API,get_malloc_leak_info用来检测Native代码内存泄露。相关原理相关的Property使用这个API需要设置libc.debug.malloc这个property。这个property用来控制malloc信息的debug等级。在使用这个
分类: 其他 发布时间: 06-18 23:34 阅读次数: 3

Android BLE开发: BLE Peripheral开发流程

BLE原理不多说了,网上有很多。 Android从lolipop开始支持了BLE Peripheral开发。网上也有关于Framework的文章。反而真的关于应用开发的确不多,google官网也只给出了一个Central的Demo。之前实习的时候做了一个BLE Peripheral的Demo,这里将Peripheral开发的一些流程简单整理一下。不多说,直接上代码。初始化//初始化Bluetooth
分类: 其他 发布时间: 06-18 23:34 阅读次数: 3

如何查看、管理npm模块--react-native为例

react-native版本升级
分类: 服务端 发布时间: 06-18 23:34 阅读次数: 11

ARMCC/GCC下的stack protector

Stack overflow攻击是一种很常见的代码攻击,armcc和gcc等编译器都实现了stack protector来避免stack overflow攻击。虽然armcc和gcc在汇编代码生成有些不同,但其原理是相同的。这篇文章以armcc为例,看一看编译器的stack protector。armcc提供了三个编译选项来打开/关闭stack protector。 –no_protect_stac
分类: 其他 发布时间: 06-18 23:34 阅读次数: 3

armv7a中的SMC指令应用

工作中用到了smc指令,感觉除了arm的手册介绍这个指令的资料并不是太多,所以写这篇文章记录一下。 SMC是TrustZone的一部分。Non-Secure world要切换到Secure-World的时候需要进入Monitor模式才能进行操作,而在armv7a中就是通过SMC指令进入到TrustZone。本文中只介绍跟SMC指令相关的东西,并不介绍TrustZone。本文中的所以指令的运行都是运
分类: 其他 发布时间: 06-18 23:33 阅读次数: 3

HyperBus Nor Flash小记

InterfaceMandatory I/O Summary Symbol Type Description CS# 主设备输出,从设备输入 Chip Select:当改信号从High变为Low时,HyperBus开始传输。 当该信号从低变为高时, HyperBus结束传输。 CK,CK# 主设备输出,从设备输入 Differential Clock:comma
分类: 其他 发布时间: 06-18 23:33 阅读次数: 3

Python RSA, ECDSA384签名/验证

工作中用到了RSA和ECDSA的签名,整理一下脚本代码,分享给有需要的人。RSA支持多种bit位数, ECDSA暂时只支持ECDSA384。RSA的脚本用的python2,ECDSA用python3写的。 RSA #!/usr/bin/python from cryptography.exceptions import InvalidSignature from cryptograph...
分类: 其他 发布时间: 06-18 23:33 阅读次数: 3

SHA512/384 原理及C语言实现(附源码)

闲来无事,造个哈希轮子,SHA384/SHA512这两者原理及实现一样的,只是输出和初始化的向量不一样。 原型 hash_val = sha512/384(message). hash_val: SHA512输出是512bit(64个byte),SHA384输出是384bit(48个byte) message: 0 < bits(message) < 2^128,messa...
分类: 其他 发布时间: 06-18 23:33 阅读次数: 1

CMSIS CM3源码注解

文中截图摘自《Cortex_M3权威指南》 core_cm3.h 1 Memory Map /* Memory mapping of Cortex-M3 Hardware */ #define SCS_BASE (0xE000E000) /*!< System Control Space Base Ad...
分类: 其他 发布时间: 06-18 23:32 阅读次数: 3

ECDSA 签名验证原理及C语言实现

这两天总算把ECDSA搞明白了,本来想造个ECDSA轮子,但最近有点忙,而ECDSA轮子又不像HASH那样简单,所以就直接拿现成的轮子来记录一些ECDSA学习心得。 这里贴上github上一个比较适合学习的ECDSA代码,当然这个版本的代码没有openssl等商业级的代码专业,但是它足够简单,用来学习ECDSA原理非常合适。 easy-ecc 非对称加密算法签名/验证无非包括三步: 1. ...
分类: 其他 发布时间: 06-18 23:32 阅读次数: 4

EMMC/SD学习小记

eMMC之分区管理、总线协议和工作模式 JDEDC EMMC 协议中文 SD卡协议中文2.0 3.0 EMMC4.4 非Boot模式读流程 等待74个时钟 CMD0 复位emmc至idle状态 命令索引 类型 参数 应答 缩写 命令说明 CMD0 bc 00000000 - GO_IDLE_STATE 复位设备至idle状态...
分类: 其他 发布时间: 06-18 23:32 阅读次数: 3

FATFS FAT32实现

FAT32概述 FAT32文件系统由DBR及其保留扇区,FAT1,FAT2 和 DATA 四个部分组成,其机构如下图: 这些结构是在分区被格式化时创建出来的,含义解释如下: DBR及其保留扇区:DBR的含义是DOS引导记录,也称为操作系统引导记录,在DBR之后往往会有一些保留扇区。 FAT1:FAT的含义是文件分配表,FAT32一般有两份FAT,FAT1是第一份,也是主FAT。 FA...
分类: 其他 发布时间: 06-18 23:32 阅读次数: 3

Android 中的dm-verity

Android 中的Verified Boot之dm-verity之前做了一个Verified Boot模块相关的工作,但是在网上只有找到google的文档和一个nexus的patch。虽然有patch,但在不同版本的代码上实现起来却可能有一些bug,所以特此记录一下debug这个东西的过程。之前debug的过程一直没找到问题,归根到底还是这个原理没搞清楚就下手,所以我分成原理,接口和应用来说明dm
分类: 其他 发布时间: 06-18 23:31 阅读次数: 3

自制嵌入式操作系统 DAY1

遥想当年刚学习操作系统的时候,很难理解教科书中关于线程/进程的描述。原因还是在于操作系统书上的内容太过抽象,对于一个没有看过内核代码的初学者来说,很难理解各种数据结构的调度。后来自己也买了一些造轮子的书,照着好几本书也造了几个玩具操作系统,有X86,有ARM的。经过实践之后回头再去看操作系统的书,才恍然大悟操作系统书中所写的知识点。 看了许多操作系统实践类的书籍后,有些书只是浅尝辄止,试图用30...
分类: 其他 发布时间: 06-18 23:31 阅读次数: 4

自制嵌入式操作系统 DAY2

话不多说,直接进入正题,今天要实现的便是RTOS任务相关的所有功能 1 临界区保护 本节代码在05_critical下 为什么需要临界区保护呢,请看下图: 当task1要对共享资源进行读-改-写操作时,在写回之前被某一事件中断打断切换到task2,而此时task2恰巧也有修改共享资源x的代码,此时task2将共享资源修改成了11,当完成这个操作后,task2交出cpu控制权,此时R...
分类: 其他 发布时间: 06-18 23:31 阅读次数: 3

自制嵌入式操作系统 DAY3

今天实现事件控制块,存储管理以及定时器。 1 事件控制块 本节代码位于12_event中 什么是事件控制块呢? 可以这样理解,前面学习我们已经知道,创建一个任务需要给这个任务分配一个任务控制块,这个任务控制块存储着关于这个任务的重要信息。那么,事件控制块就好比任务里的任务控制块。它存储着这个事件的重要信息,我们说创建一个事件(信号,邮箱,消息队列),其本质的过程就是初始化这个事件控制块...
分类: 其他 发布时间: 06-18 23:30 阅读次数: 3

springboot源码解析(五)prepareContext

SpringApplication中的prepareContext,其内容如下:private void prepareContext(ConfigurableApplicationContext context, ConfigurableEnvironment environment, SpringApplicationRunListeners listeners, Appl...
分类: 其他 发布时间: 06-18 23:30 阅读次数: 3

我的mpv插件配置

首先去github上,把scripts文件夹中的脚本都下载下来使用了,然后,在脚本放到~/.config/mpv/文件夹中后,别忘记使用chmod +x * 命令,让scripts文件夹下面的脚本都具有可执行属性。在此晒下我的mpv.conf的配置,如下:# vim: syntax=config ########### # General # ########### save-position...
分类: 其他 发布时间: 06-18 23:30 阅读次数: 1

springboot中tomcat的启动(一)入口

在springboot中,是融合了tomcat的启动与加载的,那么关于tomcat的启动与加载的入口就是研究的第一步,在EmbeddedWebApplicationContext类中,重写了AbstractApplicationContext的finishRefresh()方法,如下: protected void finishRefresh() { super.finishRefresh()...
分类: 其他 发布时间: 06-18 23:30 阅读次数: 3