自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cheng3100的博客

个人的学习笔记,也希望可以对别人有所帮助,邮箱[email protected]

  • 博客(31)
  • 收藏
  • 关注

原创 在linux上搭建arm开发环境

可能很多人初次接触编译嵌入式工程都是在IDE上,IDE对于初学者会比较方便,因为他隐藏了包括工程构建、代码调试以及镜像烧写的很多细节。如果希望进一步学习SOC体系结构,在完全的linux环境中进行工程构建和调试是非常必要的,这里逐步介绍如何在完全的linux环境下进行工程构建、代码编译、gdb调试以及烧写镜像的方法,同时使用一个开源项目armdbg1作为step-by-step的例子以供大家参考学习.编译环境arm gccLinux下的arm cortex编译器为arm-none-eabi-gcc,

2020-11-28 12:28:26 2198

原创 解决ubuntu20.10 休眠耗电问题

最近在新买的thinkpad x13 amd版本上安装了ubuntu20.10, kernel verison 5.8, 所有功能基本正常,但发现合盖后休眠状态耗电稍高,大概一个晚上会耗电15%左右,这样休眠状态大概只能放置两天多,而我另外一台thinkpad t490s intel版本大概只有4~5%左右,经过一些研究后基本解决这个问题,目前休眠一天大概耗电3%左右,基本待机放置一两周都没有问题。...

2020-11-14 13:28:40 4046

原创 解决ubuntu20.10 无法休眠

最近在新买的thinkpad x13 amd version上安装Ubuntu20.10时发现合盖无法休眠,也无法唤醒,结果发现是bios中设置suspend模式的问题导致的

2020-11-14 13:27:29 2496

原创 解决vim卡死冻结问题

在使用vim的时候,有的时候会突然发现vim整个界面“冻结”了,无法对任何输入做出响应,此时可千万不要直接关闭终端,很可能是因为不小心按下了ctrl-s这两个按键,因为这两个按键在很多时候作为保存的快捷键,因此很容易误触,这个时候只需要再次按下ctrl-q解锁即可,更多vim配置请参阅我的开源项目myvim1,一个一键时配置vim作为ide的工具.vim 一键配置ide ↩︎...

2020-10-25 21:46:10 1077

原创 解决Linux下终端颜色显示缺失

有的时候登录到linux终端时,会发现终端颜色的显示会有些缺失,往往相同的配置,例如代码编辑器里的颜色区分,在本地可以正常显示,但远程ssh登录上去后就会缺失很多颜色,例如像下图一样:这种界面实在让人觉得乏味,幸运的是可以简单的配置就可以解决,这个问题的原因是terminal的色彩模式没有设置为256真彩色,在终端输入echo $TERM如果显示为xterm,则说明没有使能终端256真彩色,只需要在~/.bashrc文件中加入一行:export TERM=xterm-256color即可,此时会

2020-10-25 21:40:12 5893

原创 如何使用aircrack破解wifi密码

使用aircrack破解wifi密码0 准备工作0.1 选取wifi抓包网卡0.2 paket-injection 测试1 抓取空口报文2 执行deauthentication攻击促使station断链3 利用字典执行破解总结Aircrack-ng是一组用于wifi探测,抓包以及破解的工具集合。WPA是目前主要的wifi身份认证的方式,利用aircrack工具我们可以有效地探测到当前网络中的ap和station信息,并诱导抓取WPA的4次握手认证报文,从而利用字典方式进行破解。声明 : 本文仅用于研究

2020-10-25 21:05:56 2416

原创 x86实模式和保护模式寻址

文章目录x86寻址方式基址-偏移寻址分页寻址实模式寻址x86 分片寄存器32位保护模式寻址GDT结构GDT headGDT entryx86寻址方式基址-偏移寻址x86 cpu的寻址方式在历史早期主要是分片寻址(segmentation),其基本设计是任何地址由base 和 offset组成,通过将地址空间按不同规则切分成多块,每块起始地址作为base,在每个区块的偏移作为offset即可定位到具体物理地址,分片寻址在x86历史主要有两种real mode32bit protect moder

2020-09-01 22:11:44 982

原创 最好的vim教程-vim all in one-[下]

文章目录4 vim with plugin4.1 vundle框架4.2 vundle安装4.3 vundle配置4.4 vundle使用4.5 常用插件推荐5 vim with others5.1 git difftoolsvim all in one-14 vim with pluginvim 一大扩展方式是使用插件,所谓插件其实还是一系列vim脚本,但以一种便于管理的形式组织了起来,其中用于管理插件的本身就是一种插件,插件管理插件比较常用的是vundle4.1 vundle框架vundl

2020-05-19 21:11:44 436

原创 最好的vim教程-vim all in one-[上]

文章目录总览0. 字符说明1. vim mode1.1 insert mode1.2 normal mode1.3 visual mode2. vim config file structure3 vim 基本使用3.1 basic control3.2 basic setting总览近期因为换了工作缘故,尝试完全切换到了vim上进行代码编写工作。在之前其实本人曾多次尝试切换到vim上,但最终总是因为各种各样的问题,或者缺乏某些IDE上熟悉方便的功能替代而放弃,虽然包括vim配置、插件管理等都已经接触过

2020-05-15 21:55:05 1087

原创 wlan 802.11架构层次

文章目录1. wlan 设备层次架构1.1 host-device架构1.2 single firmware架构2. wlan协议层次架构2.1 link layer2.2 MAC&PHY layer3. wlan linux软件层次架构3.1 host driver/control plane3.2 device firmware/data plane1. wlan 设备层次架构1.1 host-device架构用于手机或者其他cpu性能较强场景,模块上划分为host和device,中间通过

2020-05-09 17:16:02 1781

原创 os临界区保护(critical region)以及mutex原理

[TOP]什么是临界区保护?临界区(critical region)是指一段特定的代码行为集合,其中可能包括对数据的修改,执行一段特定逻辑等等。临界区的概念是因为并发编程(multiprogram)的出现导致的,当出现多个task、多个cpu、甚至网络中多个服务器对同一个逻辑对象操作时,就会有条件竞争出现,如果设对该逻辑对象的操作为A,此时必须对A做特殊保护,约定对这A的这种特殊保护统称...

2019-07-28 15:42:52 3194 1

原创 os任务调度实现原理

文章目录为什么要做任务调度-why任务调度需要做什么?-what怎样实现任务调度?-how为什么要做任务调度-why操作系统中最为显著的特性就是任务调度,任务调度主要来自于以下几种需求:程序并发(multiprogram)任务间同步、消息传递实时性能要求其中第一点程序并发很好理解,对于一般意义的单核硬件平台而言,任何特定时间实际只能有一个机器指令在执行(实际上对于现代cpu不准...

2019-07-06 21:07:17 3055

原创 开源license学习笔记

文章目录开源license分类宽松许可BSD(二条款)BSD(三条款)MITApache2严格许可(copyleft)AGPLGPLLGPLMPL开源license限制分发(distribution)披露要求(notice requirement)闭源软件的开源代码使用策略有无分发是否为宽松许可最近因为工作相关,学习了下开源license的资料,这里整理如下。同时本文本身遵循permissive...

2019-03-01 22:33:15 749

原创 python使用ctypes调用C编译dll函数方法

文章目录1 生成被调用的C dll1.1 C文件编译为C动态链接库1.2 用于外部引用的C函数声明1.2.1 声明用于作为dll符号给外部调用1.2.2 C函数的调用规定2 ctypes加载dll库接口3 ctypes调用C函数参数传递3.1 出参为指针3.2 入参为字符串3.4 入/出参为结构体1 生成被调用的C dll1.1 C文件编译为C动态链接库在windows下,需要配置visu...

2019-02-24 23:01:58 5082

原创 Arduino检测外部电池电量方法

文章目录测量电池电量原理测电池电压可能方案代码atmega寄存器说明测量电池电量原理对于锂电池而言,可以用电池电压近似代替指示电池电量,一般来说单节锂电池电压范围是3~4.2v,测得电池电压后做百分比计算即可,因此关键即在于如何测量电池电压测电池电压可能方案初始思路 直接ADC测量电池电压ADC测量的前提是有一个稳定标准的参考电压Vref,默认Arduino的Vref取的是Vcc电压...

2019-02-02 00:08:20 14220 1

原创 ubuntu启动失败黑屏解决方案

现象启动直接进入黑屏,左上角有光标但不闪烁,ctrl+alt+fx也无法进入命令行界面异常前操作在有程序安装过程中直接reboot,接着就一直如此最终解决尝试了很多网上的方法,包括进入grub后按e改磁盘ro为rw啊,进入recovery模式该grub配置啊等等都无效,后来发现这种操作后就恢复正常了,即进入recovery模式后执行软件包升级和恢复即可,具体如下进入grub模式一...

2019-01-28 22:13:31 60595 18

原创 python byte类型与int、str类型转换

bytes类型解释python中的bytes类型可以类比为C中的uint8型数组,本质就是顺序排列的8bit二进制数字,例如以二进制方式从文件中读取时返回的就是bytes类型,或以b前缀的字符串也是bytes类型,如 a = b'abcd'print(type(a))返回<class 'bytes'>bytes类型与ascii码、str类型区别bytes类型非常容易和as...

2019-01-24 20:04:57 12269

原创 vim学习-vim框架解读&一键配置ide环境

目录VIM介绍vim的效率vim的能力vim的结构组成VIM介绍vim是linux下的一个开源的文本编辑器,特点是全部操作通过命令行实现,也不需要图形界面,从而可以很方便地通过ssh等方式连接到服务器上修改文件。vim的配置有些复杂,对于不想麻烦的同学,请尝试使用我的一键式配置工具vim的效率这是一个经常容易引发争执的话题,对于实用主义者而言,认为vim的大量繁琐命令操作既不直观也容易忘...

2018-10-27 23:47:02 610

原创 树莓派下配置samba共享目录以及通过window和linux访问方法

linux下配置samba共享目录安装samba配置samba共享目录linux下访问samba共享目录sambaclient安装sambaclient使用windows下访问samba共享目录资源管理器访问配置网络磁盘访问

2017-11-04 12:32:53 7614 1

原创 《数据结构与算法分析-C语言描述》详解-Sec2(三)幂指数运算

编写程序计算整数X的N次方,这个问题一个难点在于如何减少运算复杂度遍历自乘法//输出X的N次方,连续自乘//O(N)long int Power(int X, unsigned int N){ unsigned long temp = 1; for (int i = 0; i < N; i++) temp = temp * X; return temp

2017-03-28 17:48:11 1186

原创 《数据结构与算法分析-C语言描述》详解-Sec2(二)

第二章中给出了几个具体的例子并分别给出了几种不同复杂度的算法,我编写了书中例子中某些没有给出的算法代码并编译调试通过,同时对于大部分课后习题也做了解答和编译,下面是按照问题分别进行代码分析有序数组查找元素 问题描述 A[]是一个数组,其中元素按照顺序排列如A[0]算法1 顺序查找这是最直接的方法,即从0到N-1遍历int SequenSearch(const int A[], int X, i

2017-03-18 14:28:40 899

原创 《数据结构与算法分析-C语言描述》详解-Sec2(一)

第二章为“算法分析”,该部分主要介绍了计算机科学中目前用于测量一个算法的运行复杂的具体数学方法;同时给出了多个问题示例,对每个问题分别采用不同复杂度的算法,可以直观地了解到在解决实际问题时,不仅仅需要能够得出结果的算法,更应该给出算法复杂度更低的算法的意义数学工具:“大O”表示法,用于估计一个程序运行所需要的时间问题示例:采用更优的算法,使得解决问题所需要的时间缩短几个量级递归函数:举例说明不良

2017-03-11 11:47:32 2164 1

原创 python中从str中提取元素到list以及将list转换为str

在python中时常需要从字符串类型str中提取元素到一个数组list中,例如str是一个逗号隔开的姓名名单,需要将每个名字提取到一个元素为str型的list中。 如姓名列表str = 'Alice, Bob, John',需要将其提取为name_list = ['Alice', 'Bob', 'John']。而反过来有时需要将一个list中的字符元素按照指定的分隔符拼接成一个完整的字符串。好

2017-02-25 15:12:44 50729 2

原创 查看python的模块和函数帮助文档方法

python的一个优势是有着大量自带和在线的模块(module)资源,可以提供丰富的功能,在使用这些模块的时候,如果每次都去网站找在线文档会过于耗费时间,结果也不一定准确。因此这里介绍下python自带的查看帮助功能,可以在编程时不中断地迅速找到所需模块和函数的使用方法通用帮助函数help()在python命令行中键入help(),可以看到:>>> help()Welcome to Python 3

2017-02-17 13:42:25 134942 20

原创 linux中passwd_shadow_group详解

linux中与用户管理、用户组控制相关的主要的三个文件是 /etc/group /etc/passwd和/etc/shadow。这三个文件中确定了系统中的所有用户以及其所在组的信息,包括用户名,用户密码,用户组,用户ID和组ID等等,直接通过修改这些文件就可以实现增加用户等操作,而如adduser <username>这样的指令本质上最终也是在修改这些文件。下面对这个三个文件的内容做一个简要分析。/

2017-02-15 19:57:53 3158

原创 Arduino烧写bootloader

什么是bootloader一般情况下微处理器写入程序时都通过专门的编程器进行烧写,但是也可以通过在MCU中预先写入一些程序来实现某些基本功能,这些预先写入的程序代码就是bootloader。这样每次复位时MCU就不是从程序存储器起始位置开始读取命令,而是先加载bootloader,实现一些设置和功能,再开始执行代码。 arduino通过预先写入的bootloader,每次通过串口给arduino板

2017-02-10 23:20:58 19266 3

原创 一款基于ssd1306驱动的12864屏简介

最近在淘宝上找到了一款便宜的12864 OLED屏,阅读了相关的数据手册后整理了一些关于这种屏的资料,方便大家写驱动 硬件结构这款屏幕模块尺寸约为0.96英寸,主要由裸屏和底板PCB组成,裸屏由SSD1306驱动,这也是一种较为广泛使用的led驱动芯片。 基本信息 参数 驱动电压 3.3~5V 分辨率 128x64 驱动接口 I2C I2C地址 0x3c(默认

2017-02-07 16:00:00 17984 2

原创 arduino安装第三方开发板库文件

Arduino作为一个开源硬件项目,目前官方支持的产品线已经非常丰富了,从最开始的8位AVR芯片扩展到多种32位arm芯片,以及内嵌linux的soc等等。同时arduino也支持第三方厂商以认证方式加入该项目,其中不乏intel、三星等大公司,也有很多小型的组织如这里要介绍的WMOS,目前的主要产品是具有wifi接入能力的开发板和一些附属模块。wemosD1是其中一款流行的基于ESP8266的wi

2017-02-04 13:07:41 22317 2

原创 arduino中使用watchdog

bug修补者-watchdog最近在自己的一个Arduino项目中发现了一个很奇怪的异常,系统开机一段时间后出现死机,死机出现的时间和触发原因看起来似乎没有任何规律,检查程序也找不到任何错误,同时因为死机出现的随机性,也很难进行调试。问题可能是程序中的一些隐藏bug,或者与硬件有关,但无论如何,一直没有找到确切原因。因此在其中加入watchdog作为一种修补,至少每次出现异常后系统可以自动复位总比一

2017-02-01 13:37:22 2347

原创 按键切换状态的不同C写法对比

一个容易被忽视却并不简单的问题给定一个按键,以及一个状态输出(如一个LED),按下一次按键后LED灯改变一次状态,再按一次按键LED再次切换状态,这是嵌入式编程中一个很简单的任务,但要想达到很好的效果并不容易,一下对比几种C写法(以arduino为例):程序一void loop(){ buttonState = digitalRead(buttonPin);//read the key butt

2017-01-24 19:35:42 8234 3

原创 自制NixieDisplay辉光数码管显示时钟

用arduino做的一个辉光显示时钟,同时也可显示温湿度

2017-01-16 12:50:58 14407 5

空空如也

空空如也

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

TA关注的人

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