看到吧里有几位大大,时不时的更新自己的学习历程,感觉这种方式蛮好的。我也模仿一波吧。楼主湖南某二本自动化专业,开学就大三了!大一大二玩了两年,最后还是决定嵌入式,一是觉得学校学的数电模电没浪费,二是比较喜欢编程。现在手上一块tq2440的,一套国嵌的视频,一台笔记本。外加一颗壮志凌云的心。
大一大二挺迷茫的,进大学就不知道该干什么了,没有爸妈老师追着逼着学习,自己也就懒了下来。大一上转眼就快结束了,忽然在图书馆看到本的8086汇编。这也就是我编程的第一本书了。每天还是翘课,但现在有点事情可以做了,看视频学汇编,其实汇编这玩意没什么用,就是让你知道CPU怎么工作的,最后也写了文本加密的小玩意。入门就汇编还带来了不少后遗症,这个以后说。
到大一下,计算机在我眼里还是各种神奇,高大上。只是学校开了c语言。学c语言还是挺舒坦的有汇编基础,室友常问我为什么这代码那代码编译不过,我也不懂什么编程语言抽象和规则,我只能从汇编的角度告诉他为什么。当时真的是自信爆破,c的语法在我眼里就是汇编下的不得不这样,特别是数组名和指针的区别哪。学c还自学了数据结构。数据结构看得蛮快,把书上的例子敲了遍。然后就学c++去了。这下汇编基础反而制约了我,卧槽,类这东西是怎么实现的,虚函数,std::move这么神奇?反正不像学c,很容易把代码翻译成汇编。但我知道,一定可以翻译成汇编。了一个月把,网上看到了c++虚表实现,这才敢用类和虚函数。大一也就干了这些把。
大二上,在汇编吧看到都在讲win32汇编,于是到图书馆借了本老罗的书。这是我第一次开始接触GUI吧,其实更多的是接触操作系统。当时我根本没把心放在怎么写图形界面上,想的都是,卧槽,操作系统到底怎么管理硬件的。这显然不是我当时水平能想通的。什么为啥这么多描述符啊,操作系统怎么操作硬盘的啊。。。现在看来,学习还是要按部就班,有些东西当时这么都想不透的以后自然就会明白,做好手上的事就好。这时候我也在想,以后到底干什么吃饭的问题了。这时我还是对这个行业一无所知,不知道程序员到底有哪些。去慕课网看了两个月的Java web开发。不喜欢,放弃了。这时候想到,要是硬件没操作系统就就可以更好的了解硬件了。于是买了套8051开发版自己玩。一个星期把就把8051搞得七七八八了(只是写程序,不会画)。后来就看qt去了。这学期也就这么过了。
和楼主一样准大三,大一大二和楼猪经历差不多,学了c看了c++学了汇编,操作了下arm9直到学校搞电子实习,确实被打击到了,简直是没有一样精通的,现在我在重新学习c语言在linux下,同时在学习stm32f1,感觉大一大二就积累了点意识要做东西还是很吃力,所以现在准备好好学完全吃透,毕竟快没时间了,。
今天看了点字符设备驱动。由于Linux一切皆文件的思想下,设备也是文件,并且和读写普通文件没差。首先创建一个设备文件,这里需要给出设备号,系统用主设备号找到对应的驱动程序,次设备号找到要操作的字符设备。这样,打开一个设备文件时,内核就可以将设备文件的file结构中的f_op指针赋值为驱动程序中的file_operations结构。而这个结构定义了各种操作硬件的函数,read,write等。然后,当用户在用户空间调用字符设备文件函数时,通过svc指令,跳到内核并找到对应的函数,最终操作硬件。总之,设备号就是设备文件,驱动程序和硬件设备之间连接的纽带。有了这样的连接,上层的系统调用才能知道如何操作硬件。