linux驱动模块编程 HelloWorld 广州创龙电子科技有限公司

Slides:



Advertisements
Similar presentations
校园及周边治安防范 暨应急预案桌面演练 实 训 乐山应急管理学会 贾 伟. 目 录 校园治安问题包含的内容 校园治安问题的特点 避免引发校园治安问题的对策 校园应急预案桌面演练实训 校园治安问题的成因.
Advertisements

“ 我不能 上学了,我 每天还要帮 家里拾柴火 呢。 ” 给远方的小学生写一封信 书信的基本格式: 开头顶格写称呼,打上冒号; 换行空两格写问候语; 接下来换行空两格写正文部分; 正文结束后,换行写祝颂语; 最后在右下方写上寄信人姓名和 写信日期。
仁德醫護管理專科學校 職業安全衛生科  0  順天國中菸害防制 主講人:仁德醫專職業安全衛生科 王義文.
中醫藥就醫用藥 - 婦女篇 中醫藥安全衛生教育資源中心 中醫藥就醫用藥百分百、就是藥做到: 停、看、聽、選、用專業.
第八章 負債 8-1 負債之意義及內容 8-2 流動負債 8-3 長期負債 8-4 其他負債.
钱伟长校长和自强不息的精神 —钱伟长学院钱伟长教育思想实践丛书 —2011年10月9日钱伟长学院宣告成立 探寻大师的轨迹--钱伟长为什么能?
定海区渔农村集体资产 股份合作制改革工作 档案管理培训班
祝贺您获得国家留学基金资助 请您登陆“国家留学网”查看《出国留学人员须知》,您在出国前及在外学习期间所需要办理的手续及具体流程,以及可能遇到的政策上疑问均在此《须知》上有所列明。
实际问题与一元二次方程(一).
一、會計循環之意義 二、會計憑證概要 三、日記簿概要 四、分類帳概要
新北市廠商聯合抗旱會議 104年3月23日.
香港普通話研習社科技創意小學 周順強老師.
第三課 宗教(倫理)的獨特向度 單元 3.2 全球倫理:兩項原則和四項座右銘
科學與科技課程 教師分享會 二OO四年五月七日.
LINUX 环境下程序开发基础 曙光用户培训课程系列 课程时间:1.5小时 更新日期:2008年3月.
基于操作系统的编程复习 张玉宏
陈 汉 文 厦门大学会计系 主任 经济学教授 博士生导师
我真的很不想活,日子過得太沒有意思了。. 我真的很不想活,日子過得太沒有意思了。 聽起來,你現在的日子真難熬,你 願意說說看為什麼嗎?
目录 组织保障机制 业务规则学习 账户规范报送 技术平台建设 上线后续工作.
老员工心态管理.
Linux Further.
FIFO 与 UPP 本节我们结合UPP接口给大家介绍一下FIFO在实际工程中的使用。 广州创龙电子科技有限公司 01 51ele.net
嵌入式操作系统 陈香兰 Fall 2009.
DM8148 A8和M3通信框架 广州创龙电子科技有限公司
產品責任險的意義 想一想,什麼是「產品責任險」? Q
Linux环境下程序编译 曙光信息产业(北京)有限公司.
OpenMP简介和开发教程 广州创龙电子科技有限公司
配置编译内核.
本节我们结合AD5724驱动时序给大家介绍一下状态机在实际工程中的使用。
DM81X 视频采集处理 ——MCFW框架介绍 广州创龙电子科技有限公司
DM81X 视频采集处理 ——软硬件环境介绍 广州创龙电子科技有限公司
褚霸 核心系统数据库组 /11/15 Oprofile 系统层面的性能微调工具 褚霸 核心系统数据库组 /11/15.
本节我们结合AD5724驱动时序给大家介绍一下状态机在实际工程中的使用。
FIFO 与 UPP 本节我们结合UPP接口给大家介绍一下FIFO在实际工程中的使用。 广州创龙电子科技有限公司 01
存储设备介绍 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
DM81X 视频采集处理 ——综合采集显示例程讲解 广州创龙电子科技有限公司
实践演练 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
简单PCB设计 广州创龙电子科技有限公司 Simple PCB Design
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
AM437x平台下Linux驱动的开发流程 广州创龙电子科技有限公司
SPI驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
I2C驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
文件读写实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
按键驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
实验2:Linux内核重建及内核模块 主讲教师:夏莹杰
DM8148与DM8127 ISS框架讲解 广州创龙电子科技有限公司
作業系統實習課(三) -建造新的System Call-
AM5728 视频输入端口VIP软件框架 广州创龙电子科技有限公司
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
如何生成设备节点 广州创龙电子科技有限公司
本节我们结合AD5724驱动时序给大家介绍一下状态机在实际工程中的使用。
Linux 文件操作——系统调用和标准 IO 库
(第2版).
Linux核心編譯與模組管理 2013/01/19.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
政府採購作業流程.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab3.
古诗鉴赏.
投標須知及招標文件製作 行政院公共工程委員會 鍾佩真
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab3.
FPGA 在线调试技术 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd 本节将讲解FPGA的在线调试技术。主要以VIVADO和ISE为例,讲解一下虚拟输入输出VIO (Virtual Input/Output)和集成逻辑分析仪ILA.
C语言环境配置.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
LED驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
进程的概念 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
本节内容 如何调试驱动程序? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
劉庠宏、林合治編著 國立高雄大學應用數學系 2005年3月1日
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
Presentation transcript:

linux驱动模块编程 HelloWorld 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd

01 内核模块简介 02 模块开发常用的命令 03 最简单的模块HelloWorld

01 内核模块简介 第 1 部分

内核模块简介 何为内核模块 内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),简称为模块。 作用: 不用编译进内核,控制内核大小; 新增或删除功能,不需重新编译内核,只需加载或卸载模块。 04 广州创龙电子科技有限公司

内核模块简介 内核模块程序结构 1. 模块加载函数 Linux内核模块加载函数一般以__init标识声明,示例代码如下: 1. 模块加载函数 Linux内核模块加载函数一般以__init标识声明,示例代码如下: static int __init myModule_init(void) { return 0; } module_init(myModule_init); 当通过加载内核模块时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作。 05 广州创龙电子科技有限公司

内核模块简介 内核模块程序结构 2. 模块卸载函数 模块卸载函数一般以__exit标识声明,示例代码如下: 2. 模块卸载函数 模块卸载函数一般以__exit标识声明,示例代码如下: static void __exit myModule_exit(void) { } module_exit(myModule_exit); 当卸载某模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能。 06 广州创龙电子科技有限公司

内核模块简介 内核模块程序结构 3. 模块声明 MODULE_LICENSE(“GPL”); 内核可以识别的许可证有GPL(任意版本GNU通用 公共许可证)、GPL v2等 MODULE_AUTHOR(“author”); 声明作者信息,可不用 MODULE_VERSION (“version”); 声明版本信息,可不用 MODULE_DESCRIPTION (“description”); 声明模块功能,可不用 许可证(LICENSE)声明描述内核模块的许可权限,如果不声明LICENSE,模块被加载时,将收到内核被污染 (kernel tainted)的警告. 注意:许可证(LICENSE)声明描述内核模块的许可权限,如果不声明LICENSE,模块被加载时,将收到内核被污染(kernel tainted)的警告. 07 广州创龙电子科技有限公司

02 模块开发常用的命令 第 2 部分

模块开发常用的命令 insmod XXX.ko 加载内核模块 rmmod XXX 卸载内核模块 lsmod 查看所有已加载的内核模块 modprobe XXX 可加载指定的个别模块,或是载入一组相依赖的模块 modinfo XXX.ko 查看模块信息 modprobe会根据depmod所产生的依赖关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。 04 广州创龙电子科技有限公司

03 最简单的模块HelloWorld 第 3 部分

最简单的模块HelloWorld 编写hello.c static int __init hello_init(void) { printk("Hello World!\n"); return 0; } static void __exit hello_exit(void) printk("Goodbye World!\n "); 11 广州创龙电子科技有限公司

最简单的模块HelloWorld 编写Makefile ifneq ($(KERNELRELEASE),) obj-m := hello.o else KDIR=<内核路径> CROSS_COMPILE=<编译工具路径> all: make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) clean: rm -rf *.ko *.o *.mod.o *.mod.c *.symvers modul* .hello.* .tmp_versions .*.*.cmd help: @echo "make KDIR=<you kernel path> CROSS_COMPILE=<your CROSS_COMPILE>" endif 12 广州创龙电子科技有限公司

最简单的模块HelloWorld 如果不会编写Makefile怎么办? 13 广州创龙电子科技有限公司

广州创龙电子科技有限公司 谢谢 官网: www.tronlong.com 论坛: www.51ele.net 微信公众号:广州创龙