自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 【MIPS】--- 教你看懂MIPS架构的基本汇编程序(全是干货)

使用龙芯Ls2k1000系列处理器,遇到内存的问题,真的是百般刁难。要梳理内存初始化流程,然后最麻烦的是龙芯的内存乃代码全是汇编源码,看起来着实有点头疼,被汇编按在地上摩擦了无数回后,也算是对汇编有个基本的认识。接下来用一篇文档教你如何快速入门看懂龙芯MIPS的汇编源码!按照国际惯例,先抛问题 1. 汇编常用指令 2. MIPS架构处理器的寄存器简析 3. 汇编语法总结 4. 基本的编...

2020-06-11 09:54:00 127

原创 【UEFI】---史上最全的X86平台启动流程分析(软硬结合)

最近研究了下X86处理器的启动流程分析,相比于常见的ARM来说,X86平台启动流程真的复杂了很多,本次基于项目实际的两个问题入手,研究了包括以下几个部分的内容:  1. 从硬件角度看启动流程  2. 从软件角度代码执行流程  3. Reboot过程详解  4. X86-ACPI简析  5. 常识问题总结由于文章太长,因此不太方便直接写入博客里面,下面是总结内容的目录。如果...

2020-05-05 17:27:00 96

原创 【VIM】---GVIM打造Linux最轻量最方便的IDE

业务需要必须在Ubuntu系统上进行开发,但个人电脑性能地下,开虚拟机后卡到废弃,各种vscode和source insight只要打开就能卡爆,最终折腾了挺久最终还是回归vim/GVIM。一下列出来常用的一些插件和配置,以作备忘:单独介绍一下:1. Bundle 'vim-scripts/OmniCppComplete'该插件主要用于C/C++编程时的结构体或枚举变量的成...

2020-03-09 11:36:00 39

原创 【Linux】--- Linux系统下常用的压缩指令

对于Linux系统下可能经常需要命令行压缩,解压。其实操作的多了,就会发现在复杂的命令也等于俩字“工具”,因此把他当成工具来看就好,工具是让人用的。zip格式:sudo zip file.zip ./file/对于bz2,...

2020-03-06 10:30:00 52

原创 【C/C++】--- 基础C语言的知识复习

一段时间不写代码,真的会手生,一些简单的知识点都快忘了。单开个帖子 ,记录下自己曾经以往的C知识,以便以后复习。1. 如何使用宏定义定义一个数组?根据查阅的资料,目前貌似单纯使用宏不可以定义一个数组。2. 字符串数组的长度计算假如定义了一个二维的字符串数组,必须指定每个维度的字符串最大数值多少。其次计算该二维数组中有多少个数组的话,此处必须用二维数组的形式表示,不可以用指针数...

2020-02-19 17:18:00 30

原创 【UEFI】--- 探究BIOS NvRam空间的位置以及大小

按照国际惯例--先上问题:1. 什么是NvRam空间,里面存储了什么数据 2. 如何找到NvRam空间在BIOS-bin文件中的位置NvRam空间的学名为: Non-Volatile Ram即非易失性存储空间,简单来说就是一段掉电也不丢失数据的存储空间。这类存储介质有很多,像多数的E2prom,Rom都是可以作为该类空间的介质。而具体到BIOS的话,多数情况下可以理解为在BIOS-Ro...

2020-02-18 19:11:00 148

原创 【Tool】---ubuntu20.04配置oh-my-zsh工具

作为Linux忠实用户,应该没有人不知道bash shell工具了吧,其实除了bash还有许多其他的工具,zsh就是一款很好得选择,基于zsh shell得基础之上,oh-my-zsh工具更是超级利器强推。基于Ubuntu18.04系统配置oh-my-zsh得步骤如下:1. 使用apt-get工具安装zsh工具:sudo apt-get install zsh2. 安装oh-my-...

2020-01-18 22:33:00 43

原创 【UEFI】---记录一次debug过程中的调试经验

最近在调试一次SMBIOS的动态更新以及I2c设备的配置读取时,遇到了很多问题,特此总结:
1. 第一个是调试一个I2c设备的时候,遇到了一个很奇怪的问题,也由此问题总结了下SMBUS模块的知识,如下:
 待完成
2. 在动态更新到SMBIOS某些type字串时,遇到很多细节问题,总结如下:
1)问题:同样的代码,放置位置不同会导致代码跑飞:&#1...

2020-01-08 21:56:00 65

原创 《将博客搬至CSDN》

为了能与更多志同道合的小伙伴共同进步,现将本人博客园的博客记录搬至CSDN,以后发布两个网站同时发布!

2020-01-03 18:39:53 30

原创 【X86】---X86处理器大小端的数据存储验证

之前也关注过大小端的存储,可能时间久了,加之又之前的电脑抽象换成了当前的处理器寄存器的值判断,导致自己总是有点蒙圈。看Spec手册的时候,有时会无法与手册中某个Bit的值与RU/RW工具读出来的对应上。这就很尴尬了。专门花时间整理下该部分的内容:1. 什么是大小端先解释下什么是大小端(自行百度)2. X86处理器用RU工具读取的值如何与Spec的描述进行Bit对应2.1 如:下面...

2019-12-12 22:23:00 21

原创 【UEFI】---基于UEFI编程的基本思路

最近基于UEF在写代码的时候,发现由于粗心总是出现很多问题,而且都是一些小问题。虽然UEFI玩了挺久,但是也没梳理一下思路。借此机会整理一下:UEFI对复杂的BIOS代码做了很好的封装和模块化。 而且UEFI的标准库函数也十分丰富,多数情况下需要跨模块调用各种丰富的库函数来进行功能开发,这其中重点是了解整个代码的框架。在写代码之前要对当前调用的函数了然于胸,不然就会发生总是因为一些...

2019-12-12 21:49:00 27

原创 【Tool】---SVN的超级简单并具体得使用介绍

又一次被打脸,笔者表示再也不相信自己的记性了。简单的SVN隔了一段时间后,由于项目的需要要重新简历代码库,竟然一下子又忘了。天那,这就好比战士上了战场发现没带枪,这能行吗?因此,趁着今天又简短的复习了一遍,简要记录一下,纯粹为了以后看。
本地初始化代码库
使用SVN工具的开始应该要在本地初始化仓库以及构建仓库。步骤如下:
1. 建立一个空的文件夹
...

2019-11-12 22:01:00 45

原创 【Linux】---Linux系统下各种常用命令总结

在Linux系统下,“万物皆文件”,之所以强调在强调这个概念,是因为很多人已经习惯了win系统下找找点点得那种方式和思维,因此总是会觉得linux系统下很多指令既复杂又难记。其实都是一样得东西,只是win系统提供了一套可视化得操作方式,而linux提供了一个命令和参数让你可以查看。两者基本是等价得。理解了这个概念后,无论针对什么样得命令,都和win中有相似得操作。
查看硬盘容量...

2019-11-07 10:16:00 17

原创 【UEFI】---关于BIOS,EIST和PState&CState和CPU主频变化得关系

Intel处理器都支持Turbo和EIST,且一般情况下,各家厂商在BIOS中都会设置EIST和PState的开关,那么这些开关与CPU的频率的关系是什么呢?今天对此做个总结:
按照国际惯例,本次梳理将会解决下列问题:
1. EIST是什么?
2. EIST与Turbo与PState和CPU频率得关系
3. 如何在linux下使用Pwr工具查看CP...

2019-11-06 21:10:00 252

原创 【UEFI&BIOS】---BIOS开机串口报"ERROR: C2:V1050007 IO 93B80003-9FB3-11D4-9A3A-0090273FC14D 6413FA18"的分析...

intel的X86 CPU对运行错误的处理已经做的非常完善了,一般即使是开机卡死,跑飞等各种问题也会丢给你相关的提示信息,那么掌握这种错误的分析手段就显得至关重要。在实际开发的过程中,我遇到了一个错误,现总结下分析思路
问题一
描述如下:
  1. 开机过程中在遇到等待用户按esc键可进入BIOS Setup界面的时候,如果停顿1-3s,然后再按esc键尝试...

2019-10-31 20:09:00 29

原创 【LC_Lesson7】---将两个有序链表合成新的一个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
太久没复习数据结构和C/C++的链表实现了,一时间感觉无从下手头蒙了半天,花了半天时间整理了下单链表的基本知识,同...

2019-10-31 19:28:00 21

原创 【C&数据结构】---关于链表结构的前序插入和后序插入

刷LeetCode题目,需要用到链表的知识,忽然发现自己对于链表的插入已经忘得差不多了,以前总觉得理解了记住了,但是发现真的好记性不如烂笔头,每一次得学习没有总结输出,基本等于没有学习。连复盘得机会都没有,花了一个上午得时间重新整理了下,如下:
单链表
单链表应该是最简单得链式结构了,应用广泛也十分简单,这里需要注意单链表常用得前序插入和后序插入,要从根本原理上理解&...

2019-10-31 11:43:00 26

原创 【LC_Overview1_5】---学会总结回顾

刷LeetCode题目一周,主要采用C++和Python编程手段,截至目前做了5道简单的leetcode题目,做下阶段性的小结:
小结主要通过手撕代码,复习加回顾,尽量避免自己眼高手低的情况发生,对于自己还不熟悉的内容,再次标注出来吗,以下是手撕代码的记录:
Python实现:
第二遍编程中出现的问题和不熟的地方,都已标注出来,着重复习,
&#13...

2019-10-30 15:52:00 21

原创 【LC_Lesson5】---求最长的公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串""。
示例1:
输入: ["flower","flow","flight"]
输出: "fl"
示例2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
&#...

2019-10-29 14:39:00 19

原创 【LC_Lesson4】---罗马数字到整数得转换

罗马数字包含以下七种字符:I,V,X,L,C,D和M。
  字符 数值  I 1  V 5  X 10  L 50  C 100  D 500  M 1000例如, 罗马数字 2 写做II,即为两...

2019-10-28 18:52:00 23

原创 【LC_Lesson3】---回文数的判别

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: ...

2019-10-27 21:25:00 24

原创 【LC_Lesson2】---整数反转练习

题目描述:
  给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321

示例 3:
输入: 120
输出: 21一. 题目分析  难以程度: 简单  思路: 整数反转...

2019-10-25 17:54:00 23

原创 【LC_Lesson1】--字符串反转练习

LeetCode算法练习题目一: 给定一个字符串,要求将该字符串反转后输出
努力学习,天天向上。借助LeetCode的题目,练习编码能力,数据结构,以及C++和Python的编码能力。

一. 算法实现
解法一: 首尾互换位置
(重点:关注到不同方法的时间复杂度,空间复杂度,以及一种评测算法效率的实现方式)
比较好的方式,首位...

2019-10-24 15:44:00 19

原创 【PCIE-4】---PCIE中部分概念或问题总结(很基础很重要)

前面三小节,介绍了PCIE的基本知识和概念,以及扫描流程。在不求甚解的情况下,我想各位小伙伴应该对PCIE有了个宏观的认识,OK,那么本章我们在之前的基础上,再单独把一些概念和更深层次的问题摘出来具体讨论。
首先依旧是国际惯例,先列问题:
  1. PCIE的各个模块中,经常提到Bridge/Host Bridge,Root Complex, Root port以及一...

2019-10-05 14:01:00 55

原创 【PCIE-3】---PCIE设备的枚举扫描(经典好文)

前面两个小节大致总结了下PCIE的基本知识,算是扫盲篇吧。本文主要总结PCIE设备的枚举扫描过程,此部分才是PCIE模块的重点,无论是在BIOS下还是系统驱动下都会用到。按照国际惯例,先列问题: 1. 系统如何判断PCIE设备是否在位? 2. 设备中的配置空间的数据一开始就有嘛?谁写的? 3. Bus号,Dev号,和Fun号与硬件有关系嘛?P 4.Bridge和Device的...

2019-10-03 18:11:00 77

原创 【PCIE-2】---PCIE配置空间及访问方式简介

  对新手来说,第一步了解PCIE的相关基本概念,第二步了解PCIE配置空间,第三步深入研究PCIE设备枚举方式。本章主要总结第二步的PCIE配置空间
按照国际惯例,先提问题:
1. 什么是PCIE的配置空间?
2. PCIE设备的配置空间有多大? PCI和PCIE的配置空间有何区别与联系?
3. 如何访问PCIE设备的配置空间?
...

2019-10-03 16:30:00 94

原创 【PCIE-1】---Pcie基本概念普及(扫盲篇--巨适合新手)

  PCIE由早期得PCI扩展衍生而来并且对兼容PCI,两者得主要区别在于并行到串行得切换,且速率更快。目前主板上越来越多得设备都挂载到PCI总线下面,甚至部分硬盘也会挂载PCI总线下面,可见PCIE得应用越来越广。PCIE设计的知识面比较广,无论是在BIOS下还是系统下都显得尤为重要。本章主要介绍PCIE的基本概念及基本知识扫盲,初次学习的同学必看。
知识点扫盲:
...

2019-10-03 10:45:00 53

原创 【UEFI】---BIOS中对Guid的使用以及Lib函数的使用总结

---恢复内容开始---
  BIOS发展至今传统的汇编实现早已被抛弃,UEFI作为目前一套主流的标准定义接口,被广泛使用。之前被一些有关GUID和一些Lib函数的使用以及跨Pkg调用给折腾的不行,每次改代码都要build好多次,才能build过。趁着这次的一个Bug,针对GUID和Lib的跨Pkg使用做下小结。     
/*GUID*/
  顾名思义--...

2019-09-29 18:57:00 33

原创 【UEFI】---BIOS中UserPassword的重复校验总结

  UEFI作为目前较为流行的一套X86架构初始化的标准框架,已受到业界内的广泛认可。而其中很多编程所采用的思想确实值得学习。今天总结下UEFI的框架下修改代码的一点小经验,仅供菜鸟参考。 先列干货,具体的小结后续补充:   1. 明确你要的某个功能的实现逻辑,都需要在哪个位置添加代码。 (很重要,这决定着你的方案是否可行重要前提,一旦此步骤错误,后续的代码实现也...

2019-09-14 10:31:00 15

原创 【Tool】---推荐一个好用的代码量统计工具

由于工作需要,需要统计下目前我负责模块的代码量,还是第一次遇到这样的要求,虽然我不知道具体多少,但总之很多就对了。整个代码包差不多1w+个文件,有的一个文件就要大几千行,如何初步统计出来代码量?使用什么工具呢? 一开始自然少不了度娘,度出来的结果大多是使用基本的SVN和Git自带的插件也可以,不过我没用过,觉得稍微有些麻烦。后来同事推荐了Colc工具,使用超级简单,在此强推。...

2019-09-04 09:53:49 1211

原创 C语言专题----你必须了解的面试中经典易错的C知识点

关于二级指针的解析和引用  1.1 二级指针意义   二级指针存放的是一级指针的地址 Ex: Int a = 5; Int *p = &a; Int **q = &p;1.2. 为啥要用二级指针  如果将一个指针作为形参传入某个函数,并在函数体内进行判断,改变该指针的指向,形参必须设置为二级指针,也就是将原指针的地址传入才可以,否则...

2019-03-27 17:58:03 122 2

原创 【C_Language】你必须知道的----C语言笔试面试中经典易错的一些知识点(持续更新)...

1. 关于二级指针的解析和引用   1.1 二级指针意义   二级指针存放的是一级指针的地址 Ex: 

1 Int a = 5; 
2 Int *p = &a;
3 Int **q = &p;

   1.2. 为啥要用二级指针   如果将一个指针作为形参传入某个函数,并在函数体内进行判断,...

2019-03-27 17:16:00 17

原创 UEFI之_CR总结

最近一直在学习UEFI,偶然看到一点宏定义CR的介绍,查阅其他博友的记录和总结,也算是对CR有了一点了解,总结一下。本人是标准的菜鸟,因此不把这种“高端大气上档次”的东西说的跟“1、2、3……”这种类似于大白文的东西,实在是感觉不够理解的不够深入,废话不多说,直入正题。 首先先看以下对于CR的描述,这是一个宏定义,原型为: #define CR(Record, ...

2019-03-20 14:39:50 100

原创 Python专题----DEBUG(print)函数的使用

受到之前做C开发的一点感想,无论是做什么编程开发,在程序运行的过程中能够将一些重要的信息print出来应该是很有用的,多数人应该都使用print加过debug信息,但是加完后,无奈最后还要去掉,这样的过程有些繁琐,所以希望能重建以下这样的机制:话不多说,直接上代码:#DEBUG information settingDEBUG_INF = 2#DEBUG LevelNO_...

2019-03-20 11:44:15 774

原创 Ubuntu18.04下Sublime Text3安装、破解、以及输入中文!

一、ubunut18.04安装Sublime Text3任意代开一个终端,依次输入以下命令即可安装成功(安装后软件未注册,可能会有不能输入中文问题!详见步骤二、三)    1. wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -    2.sudo apt-get inst...

2018-08-29 09:14:15 6612 1

原创 【UEFI】--- 关于UEFI&PCD的总结介绍

1个人理解
  个人理解PCD基本等同于Token,应当算是一种描述性语言,按照规定书写好PCD的配置档,在编译的过程中,会根据你的配置生成同等含义的C文档,而在C文档中对应会出现相应的define或者变量声明定义。下面通过具体的例子来说明PCD档的基本含义和使用方式以及注意事项:首先需要准备EDK的环境,具体到某个案子的代码也可以,因为UEFI的架构下,基本上都是使用EDK编...

2018-04-08 09:40:00 39

原创 【UEFI】--- 关于BIOS&UEFI查阅资料网站总结

  UEFI和BIOS的水太深,网上能找到的资料是那么的少,各个组织之间互有交叉,难弄的很,总结了下常用的BIOS资料网站,仅供参考,如果遗漏之处,请指出,博主将继续完善补充……


...

2018-04-02 17:58:00 29

原创 【Shell】--- shell脚本中变量的类型及作用域

  一直对shell脚本有一种特殊的感觉,因此花了一段时间学习,本人擅长C语言编程,深受C语言荼毒,在学习其他任何类似于编程语言的东东的时候,都会不自觉的与C进行对比,因此对于shell中的变量的作用域一直有点疑问,在此总结一下:
  首先,脚本的变量声明相比于C来说还是比较简单好用的,跟python有的一拼,没有那么复杂的用法,直接说明然后使用,无论是字符串还是数字都一样。但...

2017-11-27 16:13:00 24

原创 【ARM】---关于STM32F407启动后的系统时钟频率问题

  玩STM32的时间也比较久了,最早的一直玩的是STD标准库的103系列,但是ST公司也是“与时俱进”,舍弃了当年的标准库,转而推广HAL库,反正无论怎么样把,对于STM32的使用也仅仅停留在使用阶段,底层涉入不神,我一直觉得真正的大牛们,都是趴在最底层不愿意起来的那一群,唉……底层难啊。近来由于课设要求,重新捡起来F407的板子,继续ST进阶之路。长时间不玩,对于STM32陌生了好多...

2017-04-21 12:19:00 48

转载 C语言宏定义用do{}while(0)的情况

转自:http://www.cnblogs.com/Anker/p/3418792.html1、前言    今天看代码时候,遇到一些宏,之前没有见过,感觉挺新鲜。如是上网google一下,顺便总结一下,方便以后学习和运用。C语言程序中广泛的使用宏定义,采用关键字define进行定义,宏只是一种简单的字符串替换,根据是否带参数分为无参和带参。宏的简单应用很容易掌握

2017-04-20 10:24:49 321

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