自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小灰笔记

学习笔记,仅用于自我参考回忆!

  • 博客(1092)
  • 论坛 (1)
  • 收藏
  • 关注

原创 507_linux内核学习_write函数小结

全部学习汇总:https://github.com/GreyZhang/little_bits_of_linux 代码中有一个printf函数的实现,这里面是通过write函数来实现的,而这个write又用到了vsprintf函数。关于vsprintf函数的返回值: 这个函数的返回值其实是写入到printbuf中的字节数。 而write,其实是写在unistd.h头文件声明的库文件。这个函数的功能是想文件中写入信息,而第一...

2021-01-13 22:26:12 40

原创 506_linux内核学习_sprintf函数分析

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 前面看了vsprintf的实现,在代码中看到这个函数经过又一层封装变成了sprintf。之前看vsprintf的时候,其实看得也有点糊涂。其实,结合这个代码实现倒是有点理解了这个使用方式。 其实,vsprintf的部分参数确定其实正好是通过va_start来实现的。在vsprintf中,通过va_arg类似逐个遍历的方式处理每个参数...

2021-01-12 21:19:51 31

原创 505_linux内核学习_关于C语言函数的可变参数

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 在main.c中有一个函数的定义如下: 关于代码,我做了一部分注释说明。这次用了SI来看代码,在语义分析解读上还是很有用的,这个1000块其实是还是很值的。 理解上面的代码,首先看看va_start。 相应的功能,我在代码中做了简单的说明。 接下来其实是需要vsprin...

2021-01-11 23:04:21 22

原创 504_linux内核学习___va_rounded_size宏分析

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 在分析linux的代码的时候,main最开始的时候调用了一个sprintf函数。这里面用到了一个宏__va_rounded_size。今天看看这个宏的功能。其实,在C语言的开发中基本上都是直接使用标准库中提供的这个功能。一般,stdarg.h文件中包含了相应的定义。我正在看的linux代码中也直接包含了这个文件,不过可能是一个精简版本的。...

2021-01-11 21:39:37 18

原创 503_linux内核学习_main函数分析

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 进入内核启动的正题,开始分析main函数。我手中这个比较原始的内核,main函数的内容还比较简单。具体如下: 再往下,是一个死循环。我觉得,一行行代码拆分分析,写在这里会比较麻烦。干脆,直接在代码中通过注释备注一下。 不做过多概述,直接把我写的注释增补过来。 看了下,其实跟我现在熟悉的...

2021-01-11 21:38:04 35

原创 502_linux内核学习_vsprintf函数的功能分析

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 开始看Linux内核的C代码,软件工程其实跟大部分的C工程有一定的相似之处,其实看一个工程基本上从main函数开始即可。而通常,分析的第一个文件则是包含这个函数的文件,这个在我看的这一份内核代码中就是main.c。 在看这个文件的时候,有一个静态函数sprintf,这个肯定是这在这个文件中用的。可以先看看在这个工程中的具体作用。...

2021-01-11 21:36:21 26

原创 501_linux内核学习_skip_atoi函数分析

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 最近在看一个老版本的Linux内核源代码,为了快速了解内核中的一些实现机制,快速过掉了几个汇编文件。现在开始看C文件,感觉舒服了很多。而且,由于代码实现的功能跟我平时的嵌入式开发相差很大,看起来还是很有意思的。 今天看代码的时候遇到了一个skip_atoi函数,其实基本上猜测的出来这个是字符转整形的意思。有点类似atoi这样的函数,不过...

2021-01-11 21:34:21 22

原创 500_C语言判断一个字符是否是数字

全部学习汇总: https://github.com/GreyZhang/c_basic 我之前使用C虽说很多年,基本都是嵌入式的驱动开发,各个库文件的使用极少。最近看的东西多少有一点点“跨界”,正好是一个复习之前基础知识的好机会。 Libc中有专门判断一个字符是否是数字的函数,在ctype的头文件中进行了声明。具体的声明如下: 我看linux的内核中也有一个相同的函数,而且从注释看就是为了不使用这个库函数而设计的。其实我有一...

2021-01-11 21:32:35 24

原创 499_C语言中的逗号运算符

全部学习汇总: https://github.com/GreyZhang/c_basic 虽然我现在已经做了多年的C程序员,但是现在看看别人的代码(我现在看的是Linux的内核代码)还是经常看到一些我一般不用的使用方法。总体看下来,倒让我觉得我的C语言还不算是很扎实。 今天通过实际的代码测试,看看逗号运算法的作用。 其实,大部分的功能基本上靠一段代码就可以测试说明,我写的测试代码如下: 9~12行的代...

2021-01-11 21:30:13 55 3

原创 498_linux内核学习_head.S代码略读

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 看了几段汇编代码文件,的确是有点头大。虽然,花时间还是可以看得懂,但是我觉得这么古老的硬件继续学习下去意义也不是很大。姑且,把这几个汇编文件当做故事来看看吧,对于现在的Linux开发者来说,相信他们也不会需要过多的时间来做这个。他们所做的工作,应该更加集中于C代码相关的工作吧。而这个,也是我真正感兴趣想要深入看看的地方。这是我看上一份汇编代码的一个想法或者...

2021-01-11 21:28:23 22

原创 497_linux内核学习_setup.S代码略读

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 看了几段汇编代码文件,的确是有点头大。虽然,花时间还是可以看得懂,但是我觉得这么古老的硬件继续学习下去意义也不是很大。姑且,把这几个汇编文件当做故事来看看吧,对于现在的Linux开发者来说,相信他们也不会需要过多的时间来做这个。他们所做的工作,应该更加集中于C代码相关的工作吧。而这个,也是我真正感兴趣想要深入看看的地方。 这段代码主...

2021-01-11 21:24:19 20

原创 496_linux内核学习_bootsect信息概览

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 大概看了一下这个文件的内容,其实我每行代码都看懂意义不大,只是学习了一下x86的汇编而已。这样,这个模块我知道了什么功能继续向下或许会好一点。这样,我能够更快接触到OS的设计,而C语言我也更加熟悉。 我觉得,注释是很多程序员高手代码中真正可以给我启发的地方。顺着代码,不管是注释还是什么关键标记,快速浏览一遍。 这...

2021-01-10 15:03:25 43 2

原创 495_linux内核学习_bootsect中的几个常量以及信息定义梳理

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 今天做下面这段代码的分析: 这些主要是一些信息定义,更多能够看到的是汇编代码的使用。 27行,其实可以类比C语言定义一些全局变量,但是这些其实都是段定义。 18~34行,其实可以理解为一个段的切换。应该是让编译器知道,分析到了这个地方的时候,接下来的信息存放到当前指定的分段。...

2021-01-09 11:48:00 30

原创 494_linux内核学习_0x7C00地址的选择原因

全部学习汇总:https://github.com/GreyZhang/little_bits_of_linux 正式开始看Linux的代码了,先从汇编开始。简单浏览了一下很头大,进而很高兴。这又不是什么工作,也没啥KPI,更没有工作中大跃进的要求。学习其实是一种享受,不会意味着问题很多,也就意味着我会有更多的收获。 先看一段汇编代码的开头,具体如下: 这一段代码基本上是注释,前面4行,说明了一个参数。感觉上,其实是想说SYS...

2021-01-07 20:21:43 59

原创 493_linux内核学习_Linux文件系统

全部学习汇总:https://github.com/GreyZhang/little_bits_of_linux 今天来看一下Linux的文件系统,就用我现在虚拟机里面安装的一个Ubuntu来做参考,看看从中是否还能找到最初Linux目录的痕迹。 首先,需要知道的是Linux采用了根文件系统,根目录在表达上就是一个/,而这个就是文件系统的起始位置。借用emacs切换到这个目录下,这样能够有一个很好的查看体验。 这是我现在安装的...

2021-01-04 20:29:41 47

原创 492_linux内核学习_使用python处理引导扇区程序并在Bochs中运行

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 现在对着教程开始工具链部分的学习了解,在汇编工具以及汇编语言讲解的过程中引入了一个测试代码: 我用了截图来展示这段代码,这样能够看到一部分语法信息。这一次暂且不去分析这段代码的实现以及功能,先来测试使用一下工具链。这是一段引导扇区程序,能够正常编译链接通过,并且在Bochs里面运行。 实现运行,首先需要实现编译链...

2021-01-02 11:10:22 53

原创 491_linux内核学习_在Bochs模拟环境中进行linux 0.12与主机之间的文件交换

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 按照教程做了一下测试,完成了一次从这个小巧的linux系统中提取文件的过程。感觉真是很有趣的一件事情。 类似的折腾,在linus当初的hack过程中肯定是没有的,他应该也不屑于去用windows吧?不过,可想而知,他当时完成了这么多的功能他的成就感以及欣喜的心情。 我手头拿到的两个linux的镜像,一个名称是FD一个...

2021-01-01 16:09:24 52

原创 490_linux内核学习_bochsrc-0.12-fd运行

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 想来这次的题目或许不是很合适,不过既然是仅仅用于自我回忆参考的学习笔记这个也可以不讲究了。就怕到时候又遇到一堆人留言说我说的不清楚,其实不清楚是合理的,毕竟这个不是教程。 而我参考的教程是《linux内核完全剖析》,也并非做广告,完全理解我写得东西或许大家都得参考类似的书籍。 在书籍的配套资料中,有两个Bochs配置...

2020-12-31 18:21:43 46

原创 489_linux内核学习Bochs运行例程以及问题排查

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 这次记录一下Bochs的使用过程,我印象中之前用过,也曾经成功运行起来了。但是,时间间隔的有点久了现在一点印象都没了。 我在看的是《Linux内核完全剖析》这本书,下载了里面给出的一些文件包。解压之后的文件: 安装文件等,自然还是知道是干什么的。MAP文件,其实也还算是熟悉,其他的倒不是很熟悉了。按照书中的介绍,...

2020-12-30 21:38:12 29

原创 488_linux汇编语言基础常识

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 一直感觉其实Linux系统或者生态是技术圈中高大上的东西,也是高手必备的技能。只可惜,我自己这方面的技能还是很肤浅。充其量,我只是装好了系统用了一下而已,关于什么原理或者优劣我的确是没有什么太多的心得。不过,随着时间的推进,倒是很多曾经在这平台上的一些体验给我的工作或者生活提供过一些灵感。但是,很不成系统。因此,我决定还是把这部分做一个梳理,从最简单的起步...

2020-12-29 20:21:56 65

原创 487_python中布尔条件判断使用注意项小结

全部学习汇总: https://github.com/GreyZhang/python_basic 最近在看Google的编码规范,先看的python的编码。其实我自己平时用的都是一些脚本,写得比较随意。但是,如果是用于开发应用程序,那么最好还是有一点规则规范好一些。关于布尔条件的判断,有如下的描述: 关于几个我不是特别确认的信息,我写了一段测试代码如下: 运行结果: 从上面的结果,有几个需要注意的...

2020-12-22 10:49:28 60

原创 486_python finally的使用

全部学习汇总: https://github.com/GreyZhang/python_basic 这几年我也一直在用python,但是只是写一点点简单的批处理脚本而已。有很多语言编码的细节还是不熟悉。今天晚上看了Google的python编码规范,里面还是有一些不熟悉的地方的。 在里面有上面这一段,其中提到了finally的用法。而之前,我基本上只是try/except基本上就OK了。今天,从最基础的使用上初步了解一点finally的使用。按照...

2020-12-20 14:10:10 33

原创 485_Linux环境下扫描局域网内所有设备的IP

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 最近一直想学习一下局域网的部分相关技术,目前来说我这方面掌握的实用性的知识非常少。手里有一个群晖的服务器,最多也就是ssh连接一下,但是使用的也不是很多。过一阵子,重新折腾一下手里的树莓派,或许能够学到不少东西。而那时候,我估计使用局域网访问各个设备的使用情况不会少。 我现在手里的路由器似乎不会让设备的IP固定死,这样,我很需要一个设备...

2020-12-18 22:04:31 114 1

原创 483_Windows Terminal中默认光标为小方块

全部学习汇总: https://github.com/GreyZhang/editors_skills 其实,这次的学习笔记分类不合适,不过暂且没有其他的repo可以放暂且放在这里吧!毕竟,这个问题的解决其实是我在使用emacs的evil的时候遇到的。 默认的时候,终端里面的光标是一个竖线,这样如果在使用vim的时候就会遇到不好确认是插入模式还是Normal模式。如果,默认下是一个小方块,那么识别这个状态就容易了。此外,如果是一个小竖线,在整个终端环...

2020-12-17 21:36:15 95

原创 482_C语言函数指针小结

全部学习汇总: https://github.com/GreyZhang/c_basic 近来团队中加入了几个新人,基础都一般。感觉似乎看到了最初的我,怕他们也跟我一样成长慢,这些简单的小知识帮他们梳理一下,而我自己也算是复习。 指针似乎会难住大批的初学者,而函数指针或许更加让大家迷惑。今天,简单做一下这个知识点的小结。 通常来说,使用的方法不过三个:1,定义一个函数类型,然后在此基础上定义一个指针变量; 2,直接定义一个函数指针...

2020-12-16 20:40:26 33

原创 481_C语言野指针

全部学习汇总: https://github.com/GreyZhang/c_basic 其实,我现在的开发工作中基本上遇不到野指针,因为我现在开发产品中基本上没有使用存储的分配和释放过程。当然,这是除了局部变量的使用之外。 野指针会存在什么常见的问题呢?通常,指针指向的内存空间可以进行存储的申请分配,但是通常来说分配还都会带着一个释放的过程。一般来说,为了保证软件的可靠,这个分配和释放都是成对的。如果一个指针通过存储的分配申请操作指向了一个位置,再...

2020-12-15 21:31:15 77

原创 480_C语言编译链接结果文件分析

全部学习汇总: https://github.com/GreyZhang/c_basic 前面做了一个简单的测试,在我的机器上指针占用的空间是4个字节。为什么这样呢?因为我用的64bit的系统。其实,这也不是唯一的原因,根本原因其实应该是我使用了64bit的开发套件。因为,64bit的系统上其实还是可以生成32bit的软件的。 以下是上次的代码: 查看最终编译结果的属性: 从属性看,a.exe是具有可执...

2020-12-14 21:38:05 29

原创 479_C语言sizeof知识点小结

全部学习汇总: https://github.com/GreyZhang/c_basic 今天新增了一个学习笔记repo,慢慢积累一点之前自己没有注意到的C语言知识。今天来看看C语言中的sizeof。 我做嵌入式控制开发,说起来这个操作符我用的不是很多。 我看的这份教程中有这么一段描述,这个之前还真被这个首席给带偏了,原来这个就是操作符而不是宏。这个章节还是比较有意思的,看着像π。 几种常用的方式,我写了几...

2020-12-13 09:52:54 35

原创 478_Arduino telnet连接测试

全部学习汇总: https://github.com/GreyZhang/arduino_uno 利用一个Arduino的例子测试一下telnet,虽然我现在还不知道telnet是怎么玩的。简单网上搜了一个XX知道,就这么做个初步测试吧! 其实,这样的环境中Arduino算是一个小的网络服务器。部分配置如下: IP地址前面的一个例子中初步知道了,这里的客户端,我感觉跟我接下来的测试有一点相关性。不过,测试的数目似乎又有一点不对...

2020-12-12 10:36:54 117

原创 477_Arduino以太网板盾功能测试

全部学习汇总: https://github.com/GreyZhang/g_arduino 这个例程我第一次调试通过其实是花了不少时间的,主要是我对以太网几乎没有什么基础的知识积累。经过了一个晚上的煎熬,最终也是没能够调试成功。而更加不幸运的是,我买的两个扩展板有一个是坏掉的,而我第一次的测试其实就是使用了坏掉的那一个。 最初使用Arduino内置的例程的时候,调试没有通过。后来,用了一个网络的测试程序测试通过。 代码比较精简,...

2020-12-11 21:15:32 35

原创 476_Arduino abi.cpp文件内容分析

全部学习汇总: https://github.com/GreyZhang/arduino_uno 在Arduino的基础库文件实现中,发现了一个abi.cpp文件,文件内容非常简单,没太明白这个文件的设计意图。 从注释看,这个文件中的两个接口有可能是为了做部分UART诊断信息的处理。而从接口调用看,其实,运行到这里面的接口的时候其实是系统终止了一个线程的时候。 Abi,从这个文件看不好猜测是什么缩写,什么含义。我从网络上查了一...

2020-12-10 21:13:04 27

原创 475_使用Arduino学习C++之函数的weak属性

全部学习汇总: https://github.com/GreyZhang/Arduino_Cpp 其实,今天做的这个小结并不是一个C++的知识点。但是,这个知识点是我在看Arduino的C++代码的时候学到的,因此在此做一个简单的梳理总结。 在Arduino的main函数中有如下的代码: 而这个函数的声明: 上面的这个声明,涉及到了一个weak的属性。我查了一下网络的信息,其实这个并不是C++的一个功能...

2020-12-09 20:29:04 50

原创 474_Arduino中二进制的标识实现分析

全部学习汇总: https://github.com/GreyZhang/arduino_uno 在之前的学习工作经验中,C语言对于二进制的支持还是很自然的。我并不知道C++中到底是什么情况,毕竟在Arduino的开发环境中,C++其实才是占有的霸主。 我之前尝试使用过其他平台的二进制表达模式,但是编译的时候没有被识别。今天看了一个文件之后,恍然大悟,为什么例程中的用法是没有问题的。 在Arduino IDE的安装目中,我找到...

2020-12-08 19:13:35 35

原创 473_Arduino.h内容分析

全部学习汇总: https://github.com/GreyZhang/arduino_uno 前面做了main.cpp的简单分析,大概的代码如下: 其中,包含了一个Arduino.h的头文件。今天,来看看这个头文件。 前面的头文件暂且不考虑,这里面的几个宏的信息其实主要是分为2部分。第一个是MCU的各个端口信号相关的状态或者属性,第二个则是数据中心用到的一些常量参数。 这个具体的作用我没有猜出来...

2020-12-07 22:12:40 121 2

原创 472_Arduino setup之前的工作分析

全部学习汇总: https://github.com/GreyZhang/arduino_uno 在Arduino的一个程序的框架中,初始化的部分在setup函数中实现,而之后软件进入到一个叫做loop的无限循环。这个是大概的一个套路性的处理。 那么,在嵌入式的软件中,最初的软件执行一般是startup,然而用户真正需要了解的软件的初始其实还真就是main函数。C语言中如此,嵌入式的C++也是差不多的。如此,可以根据这个线索找到setup之前是否还有...

2020-12-06 11:01:00 51

原创 471_Arduino初始化以及loop的实现

全部学习汇总: https://github.com/GreyZhang/arduino_uno 在进行各种例程调试的时候,我们知道Arduino的工程中有一个初始化的函数setup,还有一个无线循环loop。 这是其中的一个例子,如果把这两个函数改一个名字会出现报错。例如,我修改一下setup为setup_test,之后打开编译的详细输出。 链接的时候,找不到这个函数。 为什么会出现这种情况呢?我在逐...

2020-12-05 11:44:49 69

原创 470_Arduino LCD驱动初步

全部学习汇总: https://github.com/GreyZhang/arduino_uno 手里也有一个LCD的模块,最早的时候应该是跟着Arduino一起买的。但是,一直以来也没有用过。其实,有好几次想把这个模块开发出来,这样可以让我的很多测试信息可以方便的显示出来,后来全都放弃了。 最近打算从最底层的层面看看Arduino的整个开发基础框架,全部的例子以及驱动的开发全都摸一遍。还是看到了这里,找出来做了简单的测试。 几个...

2020-12-04 21:52:00 16

原创 469_Arduino超声波距离传感器例程调试

全部学习汇总: https://github.com/GreyZhang/arduino_uno 最近在逐个分析学习Arduino中自带的一部分例程,同时梳理一下学习笔记。中间有不少例子有一些雷同或者最基础的元素是相同的,我也就直接跳过了。这次看的这个超声波距离传感器则是比较新的,在此之前并没有接触过这样的模块。我手头正好也有这样的一个模块,在我手里也不知道多久了,一直没有用起来。正好,这个也是很好的机会,让我之前学习上的投资也算是有点回收。 首先看...

2020-12-03 20:52:56 34

原创 468_Arduino生成ASCII码表

全部学习汇总: https://github.com/GreyZhang/arduino_uno 看了一个ASCII码表的生成程序,其实非常简单,我估计这个例程的存在主要是为了演示串口的输出功能。 大概的软件如下: 其中,thisByte的初始值是33,而ASCII码的范围也是33到126。等全都处理完之后,进入到一个死循环。 相比C语言的printf来说,Arduino的这个串口输出功能其实功能还要丰富一...

2020-12-01 20:01:36 72

原创 467_Arduino AD采集范围标定

全部学习汇总: https://github.com/GreyZhang/arduino_uno 这个其实电路跟我之前调试过的几个差不多,功能我也不再去调试了。不过,这里面有一个小技巧在里面。 管脚的配置其实没有什么特殊的地方,不过在这里有一个记录的过程,那就是尝试测试最小以及最大的AD值。当然,记录的时间在启动之后的5S之内。这样,如果硬件设计上有偏差的时候,就能够测试出一个具体的AD可以采集到的范围。 这里其实还是AD...

2020-11-30 21:35:43 52

空空如也

grey_csdn的留言板

发表于 2020-01-02 最后回复 2020-05-15

空空如也

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

TA关注的人 TA的粉丝

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