首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
stdout
路由器
sudo
log4j
kubectl
zsh
k8s
tengine
grafana
fabric
ubuntu
devops
grep
apache
awk
service
服务器
centos7
debian
nginx
sftp
crontab
7层
unix
server
vagrant
容器
jenkins
syslog
4层
负载均衡
port
交换机
shell
运维
colors
docker
centos
ssh
touch
tomcat
dns
curl
cron
linux
压力测试
当前位置:
开发笔记
>
运维
> 正文
如何在嵌入式Linux中增加自己的设备驱动程序
作者:数字货币交易所贺顾问 | 来源:互联网 | 2017-06-26 09:57
文章标题:如何在嵌入式Linux中增加自己的设备驱动程序。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
驱动程序的使用可以按照两种方式编译,一种是静态编译进内核,另一种是编译成模块以供动态加载。由于uClinux不支持模块动态加载,而且嵌入式LINUX不能够象桌面LINUX那样灵活的使用insmod/rmmod加载卸载设备驱动程序,因而这里只介绍将设备驱动程序静态编译进uClinux内核的方法。
下面以UCLINUX为例,介绍在一个以模块方式出现的驱动程序test.c基础之上,将其编译进内核的一系列步骤:
(1) 改动test.c源带代码
第一步,将原来的:
#include
#include
char kernel_version[]=UTS_RELEASE;
改动为:
#ifdef MODULE
#include
#include
char kernel_version[]=UTS_RELEASE;
#else
#define MOD_INC_USE_COUNT
#define MOD_DEC_USE_COUNT
#endif
第二步,新建函数int init_test(void)
将设备注册写在此处:
result=register_chrdev(254,"test",&test_fops);
(2) 将test.c复制到/uclinux/linux/drivers/char目录下,并且在/uclinux/linux/drivers/char目录下mem.c中,int chr_dev_init( )函数中增加如下代码:
#ifdef CONFIG_TESTDRIVE
init_test();
#endif
(3) 在/uclinux/linux/drivers/char目录下Makefile中增加如下代码:
ifeq($(CONFIG_TESTDRIVE),y)
L_OBJS+=test.o
Endif
(4) 在/uclinux/linux/arch/m68knommu目录下config.in中字符设备段里增加如下代码:
bool 'support for testdrive' CONFIG_TESTDRIVE y
(5) 运行make menuconfig(在menuconfig的字符设备选项里你可以看见我们刚刚添加的'support for testdrive'选项,并且已经被选中);make dep;make linux;make linux.text;make linux.data;cat linux.text linux.data > linux.bin。
(6) 在 /uclinux/romdisk/romdisk/dev/目录下创建设备:
mknod test c 254 0
并且在/uclinux/appsrc/下运行make,生成新的Romdisk.s19文件。
到这里,在UCLINUX中增加设备驱动程序的工作可以说是完成了,只要将新的linux.bin与Romdisk.s19烧入目标板中,你就可以使用自己的新设备test了。
linux
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
容器
CGroups: 资源管理和控制
CGroups(Control Groups)是Linux内核提供的一个功能,旨在限制、记录和隔离进程组使用的物理资源,如CPU、内存和I/O等。它通过精细的资源管理,支持现代容器技术如Docker的资源限制需求。 ...
[详细]
蜡笔小新 2024-12-04 15:19:11
server
Windows 平台 Ruby on Rails 安装指南
本文详细介绍如何在 Windows 系统上安装 Ruby 及其开发框架 Rails,包括必要的环境配置和组件安装。 ...
[详细]
蜡笔小新 2024-12-04 13:28:05
server
如何在IntelliJ IDEA中集成和使用Sigar库
本文介绍了如何在IntelliJ IDEA开发环境中配置和使用Sigar库(版本1.6.4),包括下载、模块导入以及Linux环境下的库文件配置步骤。 ...
[详细]
蜡笔小新 2024-12-03 18:48:24
unix
Linux环境下Memcached安装指南
本文详细介绍如何在Linux虚拟机上安装Memcached,包括必要的依赖库安装,以及使用Xshell进行文件传输的具体步骤。 ...
[详细]
蜡笔小新 2024-12-03 18:28:27
nginx
解决getallheaders函数导致的500错误及8种服务器性能优化策略
本文探讨了解决getallheaders函数引起的服务器500错误的方法,并介绍八种有效的服务器性能优化技术,包括内存数据库的应用、Spark RDD的使用、缓存策略的实施、SSD的引入、数据库优化、IO模型的选择、多核处理策略以及分布式部署方案。 ...
[详细]
蜡笔小新 2024-12-03 18:26:35
server
利用 Linux 构建高效网络路由器
本文介绍了如何在 Linux 系统上构建网络路由器,特别关注于使用 Zebra 软件实现动态路由功能。通过具体的案例,展示了如何配置 RIP 和 OSPF 协议,以及如何利用多路由器查看工具(MRLG)监控网络状态。 ...
[详细]
蜡笔小新 2024-12-03 17:33:54
server
Java 线程池优雅关闭策略详解
本文探讨了在Java应用中实现线程池优雅关闭的两种方法,包括使用ShutdownHook注册钩子函数以及通过SignalHandler处理信号量。每种方法都提供了具体的代码示例,并讨论了可能遇到的问题及解决方案。 ...
[详细]
蜡笔小新 2024-12-03 14:33:02
server
在VMware中为CentOS 7 Minimal安装GNOME桌面环境
本文详细介绍了如何在VMware环境下安装CentOS 7 Minimal,并成功配置GNOME桌面环境的过程。包括解决网络连接问题和设置默认图形界面等关键步骤。 ...
[详细]
蜡笔小新 2024-12-03 14:29:40
unix
linux图形图像三剑客,Linux必会的三剑客命令
grep、sed、awk一、grep的用法1、grep简介grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep包 ...
[详细]
蜡笔小新 2024-12-03 13:02:44
路由器
深入解析 OpenWrt 中的 Luci API 文档及 szloogson 模块构建
OpenWrt 是一款高度可定制的嵌入式 Linux 发行版,广泛应用于无线路由器等领域,拥有超过百个预装软件包。本文详细探讨如何在 OpenWrt 上通过 Luci 构建自定义模块,以扩展其功能。 ...
[详细]
蜡笔小新 2024-12-03 12:06:08
路由器
Python语言的核心特点及其应用领域
Python作为一种广泛使用的高级编程语言,以其简洁的语法、强大的功能和丰富的库支持著称。本文将详细介绍Python的主要特点及其在现代软件开发中的应用。 ...
[详细]
蜡笔小新 2024-12-03 12:00:39
server
linux下ipvsadm命令,Linux命令:ipvsadm
ipvsadm命令简介:ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。在fedora14、Linux6.0之后系统中 ...
[详细]
蜡笔小新 2024-12-03 11:30:18
server
深入解析C/S与B/S架构的差异及其发展趋势
本文详细探讨了当前主流的两种系统架构——C/S(客户端/服务器)与B/S(浏览器/服务器)架构的特点、优缺点及未来的发展趋势。 ...
[详细]
蜡笔小新 2024-12-03 11:04:55
server
Kodi与XBMC:探索开源媒体中心的演变
Kodi(原名XBMC)是一款由XBMC基金会开发的免费开源媒体播放器应用,支持多种操作系统和硬件平台。该软件以其强大的多媒体处理能力和用户友好的界面受到广泛欢迎。 ...
[详细]
蜡笔小新 2024-12-03 10:04:55
zsh
Zsh 开发指南(第三篇 字符串处理之转义字符和格式化输出)
导读上一篇讲了zsh的常用字符串操作,这篇开始讲更为琐碎的转义字符和格式化输出相关内容。包括转义字符、引号、print、printf的使用等等。其中很多内容没有必要记忆,作为手册参 ...
[详细]
蜡笔小新 2024-12-03 03:30:40
数字货币交易所贺顾问
Vxin:QKL17999
Tags | 热门标签
stdout
路由器
sudo
log4j
kubectl
zsh
k8s
tengine
grafana
fabric
ubuntu
devops
grep
apache
awk
service
服务器
centos7
debian
nginx
sftp
crontab
7层
unix
server
vagrant
容器
jenkins
syslog
4层
RankList | 热门文章
1
Java前后端技术资源全面整合与梳理
2
深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
3
字节跳动深圳研发中心安全业务团队正在火热招募人才!
4
LoadRunner 12.02 中实现服务器资源监控与 IP 欺骗配置方法
5
使用Charles代理工具破解HTTPS请求的详细方法与技巧
6
Python编程入门:3.11.1 版本中的Collatz序列解析与实践
7
射频领域博士学位:信号处理算法在射频技术中的职业前景如何?
8
飰字释义:新华字典中的读音、笔画、常用组词及命名应用解析
9
赛博朋克2077频繁崩溃如何解决?专业技巧助你畅玩游戏
10
大型电机控制系统中电机与驱动器的选择策略分析
11
Android - Google Play 应用复制保护与许可功能:是否支持后续添加?
12
Visual Studio 2015 是否支持内置控制台功能?
13
通过菜单项触发Activity启动过程详解
14
提升项目效能与质量的综合优化策略
15
如何在命令行中启动、停止和重启 Nginx 的详细指南
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有