怎样编写Linux设备驱动程序?

Linux驱动开发比Windows简单多了。

字符设备驱动要干的事就四样:初始化、读写数据、错误处理。

你那个多媒体卡项目,得先看硬件手册。

设备文件在/dev目录,就是系统给硬件开的接口。

驱动要注册自己,告诉内核怎么调用你写的函数。

数据传输靠内存映射,或者直接操作硬件寄存器。

调试用printk,比Windows的调试方便点。

但内核函数确实少,常用操作都得自己造轮子。

上周刚处理一个网络卡驱动,就踩了几个寄存器配置的坑。

你那个多媒体卡,是PCI设备还是USB的?

据说阿里巴巴大佬们都喜欢看的8本编程书籍,附PDF电子版在线分享

说实话,这些书确实都是各领域的经典之作,但要说哪本最值得掏腰包,我得按自己踩坑的经验来说说。
比如《Unix环境高级编程》,我当年刚接手服务器维护时啃这本书,简直像在啃操作系统源码——时间花了三天,但收获是实打实的。
特别是讲进程间通信那部分,我后来写分布式锁时直接照着抄代码,没出Bug。
不过这书可能有点偏激,适合做底层开发的,纯应用层可能觉得啰嗦。

《Java编程思想》是另一回事,Bruce Eckel那本书我拿在手上翻过两遍。
有意思的是,它不是那种让你照着敲代码的教程,而是讲"为什么Java是这样设计的"。
比如泛型那章,我当时也没想明白为什么设计成这样,后来做项目时突然就懂了——这比直接给答案强一百倍。
但缺点是太厚了,我后来都是挑着看,比如异常处理那部分,帮我省了多少回bug。

Python那本马瑟斯的《从入门到实践》,我觉得是写给我的这种零基础的。
当时我在公司接了个爬虫项目,手边正好有这本书,跟着做那个数字识别项目练了三天,居然真的搞出来了。
不过说实话,现在网上免费教程那么多,这本书的价值可能被稀释了点,但作为系统梳理知识体系的工具,还是挺靠谱的。

Android开发那本《第一行代码》,我同事用着说好使。
他当时做活动需要快速上线一个H5 导流的小程序,翻翻这本书,第二天就弄出来了。
但要注意,这本书是基于旧版Android的,现在看的话得配合官方文档一起用,否则有些新特性讲不到。

iOS开发那本,说实话我没亲自研究过,但我知道它为啥有名。
因为苹果生态封闭,很多坑只能靠书里教的避。
比如数据持久化那章,我见过的几个靠谱的iOS项目,都有这本书的影子。
不过现在Swift更新太快了,书里的例子可能需要自己更新一下。

前端那本《高效前端》,我当时学React时翻过。
作者讲响应式设计那段特别实在,直接把几个常见布局问题都解了。
但缺点是太实用了,看完容易陷入套路,反而没创意。
适合快速上手,但想当设计师可能得另外学。

最后那本PHP,确实挺逗的,开篇就吹"最好的语言"。
我当时用它搭网站后台,发现确实上手快,特别是数据库交互那部分,比Java的JDBC简单多了。
不过现在后端发展快,这本书可能得配着最新框架文档一起看。

总的来说,选书得看自己需求。
要搞底层开发就冲Unix那本,要做应用层Java就选Bruce的,想快速上手Python选马瑟斯的,搞移动开发就挑对应的——但记得补充最新资料。
这些书都是实打实的干货,但别指望读完就成大神,实践同样重要。

国产linux(麒麟)无法打印pdf文档的Bug解决

结论:麒麟系统PDF打印问题,改短名搞定。

文件名太长,打印软件不认。

终端改名法,简单粗暴。

图形界面也行,右键重命名。

批量文件?脚本自动改。

系统更新、驱动升级,不能少。

邮件附件乱码?转换编码试试。

自己掂量。