硬件玩转树莓派和Micropythom物联网开发实战(一)

–链接:博客:安翔------https://blog.csdn.net/messidona11

树莓派体验3-SSH登陆树莓派------安翔-----https://blog.csdn.net/messidona11/article/details/71514247

更多实例图文操作详细参考博客:虾米一代–linux C编程控制树莓派----
https://blog.csdn.net/czyv587/article/details/80905816

Linux驱动设备概念扫盲篇----虾米一代----https://blog.csdn.net/czyv587/article/details/71194325
内核模块和应用程序
每个内核模块只注册自己以便来服务将来的请求,模块初始化函数的任务是为了以后调用该模块的和拿书做好准备
事件驱动的应用程序和内核代码退出函数不同,一个终止的应用程序可以在释放资源方面懒惰但是模块退出函数必须小心恢复每个由初始化建立的东西。
一个模块在内核空间运行,而应用程序在用户空间运行,每个模式有它自己的内存映射,它的地址空间
内核编程与传统应用程序编程方式很大的不同是并发问题,大部分设备能终端处理,中断处理异步运行,当然,Linux可以在对称多处理系统SMP上运行。
所以,Linux内核代码,包含驱动代码,必须是可重入的,它必须能够同时在多核上下文中运行,数据结构必须小心设计以保持多个执行线程分开,代码必须小心存取共享数据。
--------------假装分割线--------------------------------
博客:念念有余-----linux驱动(一):linux驱动框架------https://blog.csdn.net/u012142460/article/details/78879079
驱动编写和应用层编写有什么区别:
(一)首先 入口函数的问题
1.缺省情况
int _init init_module(void) 加载模块时的初始化函数,也就是驱动模块的入口函数
(二)c语言的标准函数库不能使用
驱动属于内核一部风,我们此时无法使用类似像printf这样的c库,但是内核会提供自己的c库
(三)添加LICENSE声明
liunx时开源的系统,就要我们遵顼一定的规范,完成驱动编写后,如何加载到内核呢:我们需要通过Makefile生成.ko文件,一个简单的Makefile如下
,这是在Ubuntu下的,如果换位ARM平台下的linux需要更换源文件目录。

–==有关内核编译的可以参考博客–zqixiao_09----https://blog.csdn.net/zqixiao_09

–https://blog.csdn.net/zqixiao_09/article/details/50838043

你可能感兴趣的:(硬件玩转树莓派和Micropythom物联网开发实战(一))