前言
俗话说:欲成其事,并先利其器。一代代前辈前赴后继的探索,填坑,希望能为后辈填出一条星光大道,至此,献上我崇高的敬意。
下面,介绍一些从学程序入门到放弃的实用工具:
1)首先,学习c语言,教程不能少,可以从B站里面找视频学习,CSDN里面找资料(相信我的话可以期待一下后期学习美文。毕竟,小时候踩过坑,长大后也要给你们挖坑麻),GitHub里面找源代码等等。
2)其次,编写代码总需要一个得心应手的编辑工具麻,用是你能力强能用编辑本,记事本,能把几千行,几万行眼不花心不乱的写完,那请收下小弟的膝盖吧;废话不多说,下面推荐几个我认为比较好用的编辑工具,其工具能通过关键字显示代码在哪里声明使用什么的,比如:
3)编译调试
开篇
根据个人学习经验及其知识点的理解,现把linux驱动学习分为八个阶段,其中有不足之处请多多包涵。
第一阶段为初识:初次接触到linux驱动要对其应用场景有所了解,并要求掌握一些与C语言相关的知识;
第二阶段为感知:感受linux驱动的内核框架的组成,了解其启动需要配置的步骤;
第三阶段为不惑:所谓不惑就是要熟练掌握linux驱动编译环境,要掌握一些常用的开发工具及其会使用Makefile文件;
第四阶段为洞玄:洞悉linux驱动的框架,并对内存空间地址有所了解;
第五阶段为知命:知道一些常用的使用场景,并知道自己与别人的差距;
第六阶段为无距:不断缩小与别人之间的距离;
第七阶段为超凡:超出常人的理解;
第八阶段为无矩:成为传奇。
第一阶段:初识篇
初识:初次接触到linux驱动要对其应用场景有所了解,并要求掌握一些与C语言相关的知识。
在学习此篇时最好熟练掌握c语言基础,最好还要有点数据结构与算法思维,这样子学习起来就不费吹灰之力了,要是没那基础也没事,多踩几个坑就长大了。
c语言必学基础
- C语言程序结构: 顺序结构,循环结构(三个循环结构),选择结构(if和switch);
- main函数:每个C语言程序中main函数是有且只有一个。读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
-
存储形式:计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八个位。数据存放的位置就是它的地址;
-
注释:是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。
-
书写格式:每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上;
-
标识符:合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。有其它元素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了。
-
实型数据:实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。2.333e-1就是合法的,且数据是2.333×10-1。考试口诀:e前e后必有数,e后必为整数;
-
字符。字符数据的合法形式,字符型和整数是近亲;
-
整型数据:整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节;
-
转义字符:在程序中int a=0x6d,是把一个十六进制的数给变量a,注意这里的0x必须存在。
数据结构与算法基础
一.九九乘法表:
#include"stdio.h"
int main()
{
int i , j ;
printf("\n");
printf("---------------------------------------------------------------------------------\n");
for(i=1;i<=9;i++)
{
printf("|");
for(j=1;j<=9;j++)
{
if(j<=i) printf(" %d*%d=%2d |",j,i,j*i);
else printf(" |");
}
printf("\n");
printf("---------------------------------------------------------------------------------\n");
}
printf(" Chinese multiplication table\n");
printf("\n");
return 1;
}
结果:
该算法时间复杂度为T(n) = O(n*n) ;空间复杂度为F(n)=O(1).
所有的算法都要关注其时间复杂度和空间复杂度,掌握好该二个概念会为系统优化提供更好的优化方向。所谓时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。
在撰写本文之时,小编正处于第三层,正要摸到第四层的阶梯。对于初学者来说,linux驱动的坑的一个接一个的,其调用到的结构体更是一套接一套的,下面的更新步骤主要根据上面流程步骤流程来,灵活避开一些坑。要是有什么要建议及其补充的可以留言。