大道至简之天道酬勤

前言

俗话说:欲成其事,并先利其器。一代代前辈前赴后继的探索,填坑,希望能为后辈填出一条星光大道,至此,献上我崇高的敬意。

下面,介绍一些从学程序入门到放弃的实用工具:

1)首先,学习c语言,教程不能少,可以从B站里面找视频学习,CSDN里面找资料(相信我的话可以期待一下后期学习美文。毕竟,小时候踩过坑,长大后也要给你们挖坑麻),GitHub里面找源代码等等。

2)其次,编写代码总需要一个得心应手的编辑工具麻,用是你能力强能用编辑本,记事本,能把几千行,几万行眼不花心不乱的写完,那请收下小弟的膝盖吧;废话不多说,下面推荐几个我认为比较好用的编辑工具,其工具能通过关键字显示代码在哪里声明使用什么的,比如:

3)编译调试

开篇

根据个人学习经验及其知识点的理解,现把linux驱动学习分为八个阶段,其中有不足之处请多多包涵。

第一阶段为初识:初次接触到linux驱动要对其应用场景有所了解,并要求掌握一些与C语言相关的知识;

第二阶段为感知:感受linux驱动的内核框架的组成,了解其启动需要配置的步骤;

第三阶段为不惑:所谓不惑就是要熟练掌握linux驱动编译环境,要掌握一些常用的开发工具及其会使用Makefile文件;

第四阶段为洞玄:洞悉linux驱动的框架,并对内存空间地址有所了解;

第五阶段为知命:知道一些常用的使用场景,并知道自己与别人的差距;

第六阶段为无距:不断缩小与别人之间的距离;

第七阶段为超凡:超出常人的理解;

第八阶段为无矩:成为传奇。

第一阶段:初识篇

        初识:初次接触到linux驱动要对其应用场景有所了解,并要求掌握一些与C语言相关的知识。        

        在学习此篇时最好熟练掌握c语言基础,最好还要有点数据结构与算法思维,这样子学习起来就不费吹灰之力了,要是没那基础也没事,多踩几个坑就长大了。

c语言必学基础

  1. C语言程序结构: 顺序结构,循环结构(三个循环结构),选择结构(if和switch);
  2. main函数:每个C语言程序中main函数是有且只有一个。读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
  3. 存储形式:计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八个位。数据存放的位置就是它的地址;

  4. 注释:是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。

  5. 书写格式:每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上;

  6. 标识符:合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。有其它元素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了。 

  7. 实型数据:实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。2.333e-1就是合法的,且数据是2.333×10-1。考试口诀:e前e后必有数,e后必为整数;

  8. 字符。字符数据的合法形式,字符型和整数是近亲;

  9. 整型数据:整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节;

  10. 转义字符:在程序中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驱动的坑的一个接一个的,其调用到的结构体更是一套接一套的,下面的更新步骤主要根据上面流程步骤流程来,灵活避开一些坑。要是有什么要建议及其补充的可以留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我来挖坑啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值