Linux数码管驱动详细过程
更新时间:2023-10-19 09:47:01 阅读量: 综合文库 文档下载
- linux数码管驱动程序推荐度:
- 相关推荐
嵌入式Linux系统系列培训
基于JXARM9-2410-1实验
嵌入式Linux中驱动程序的编写(静态加载方式,模块(动态)加载方式)与应
用程序开发。
分5个步骤:
① 数码管驱动程序seg和应用程序segtest编译; ② 修改驱动程序seg虚拟地址空间――smdk.c;
③(静态或动态)加载驱动程序seg到linux内核(zImage); ④ 修改文件系统Ramdisk.gz,将应用程序segtest加入其中; ⑤ 下载linux内核和文件系统,并自动运行应用程序运行。
一、 在Linux下编译驱动程序,以学习机上的数码管显示驱动Seg应用程序为例。
数码管显示驱动和应用程序包括seg.h,seg.c,segtest.c,segc四个文件,其中seg.h,seg.c是驱动程序,segtest.c是调用驱动的应用程序,segc是编译文件。
DEVICE_NAME: “char_dev” (seg.c定义) MAJOR_NUM: 96 (seg.h定义) DEVICE_FILE_NAME: “seg” (seg.h定义)
1. 将WinXP下的seg目录下的四个文件复制到VMware中的linux中的/home/cvtech/jx2410/examples/seg目录下。
采用两种方法将winxp中的文件夹映射到VMware中的linux系统中。 方法①: (共享目录)
在VMware中,选择;
VM > Settings > Option, 选shared folders,eg:e:\\seg Add共享文件夹
在VMware下的linux中,显示的文件夹为: /mnt/hgfs/seg 方法②: (TFTP)
通过tftp将winxp中的seg文件夹中的文件复制到VMware中的linux中,具体步骤:
a) 改winxp 主机IP为192.168.1.160,子网掩码为:255.255.255.0,其它不填
b) 在VM > Linux 中,输入:
$ifconfig eth0 192.168.1.180↙ (激活IP) (Linux login:root, password:123456)
c) 在Winxp下启动tftp,设置e:\\seg为目录,server interface:192.168.1.160 d) 在VM > linux中,执行
$cd /home/cvtech/jx2401/examples↙ $mkdir seg↙ $cd seg↙
$tftp 192.168.1.160↙
Tftp > get * . ↙(get seg.c按照文件名copy,copy完,q退出) $chmod 777 *↙ (设置刚复制的文件属性为可读写)
以上步骤,则将winxp中的E:\\seg\\下的文件,复制到VMware->linux下的/home/cvtech/jx2401/examples/seg中。
2.Linux下的seg编译步骤:
$cd /home/cvtech/jx2410/examples/seg↙
$./segc↙ (seg.c 批处理编译脚本,生成segtest应用程序和seg.o) $cp seg.o /tftpboot $cp segtest /tftpboot
二、 修改驱动程序所涉及到的虚拟地址空间
Linux系统中不允许应用程序直接访问设备的物理地址,所有的物理地址需
要转换为虚拟地址。
$cd /home/cvtech/jx2401/linux/arch/arm/mach-s3c2410 $vi smdk.c↙
在map_desc_smdk_io_desc[ ]结构体中增加数码管物理地址0x1000006的映射。
…. ….. 0xd3000000,
…..
0x10000000,
0x01000000,
DOMAN_IO,0,1,0,0
退出vi并保存(wq)。 如图1:
编译新修改的内核: $make zImage 下载到目标机:
在DNW中,执行: JX2410#run loadlinux 启动Linux后
#mount 192.168.1.180:/tftpboot /mnt/nfs (在目标机上映射主机(虚拟机)
tftpboot目录为目标机的/mnt/nfs目录)
#cd /mnt/nfs↙ #insmod seg.o
#mknod /dev/seg c 96 0↙ (创建设备文件名) #segtest↙ (运行应用程序)
三、 修改Linux内核,加载驱动程序到嵌入式Linux内核zImage中,并设置系统启动时自动运行应用程序(调用驱动)
在Linux中,执行以下命令:
1. $cd /home/cvtech/jx2410/linux↙ (进入嵌入式Linux路径) 2. $cd driver/char↙
3. $vi config.in↙ (修改menuconfig界面内容,增加新的驱动程序选项) 在vi中,查找 \\ support S3C2410 TouchScreen 在其下行加入新驱动程序支持项 Support …SEG
通过这里在菜单中进行添加。
如图2:
4. $vi Makefile (在Makefile中增加对新驱动程序编译的语句,如图2: Obj += seg.o
通过这里来确定编译的文件。
如图3:
5.复制seg.h,seg.c到/home/cvtech/jx2410/linux/driver/char文件夹下, $cp /home/cvtech/jx2410/examples/seg/seg.h .
$cp /home/cvtech/jx2410/examples/seg/seg.c . 6. 回到Linux文件夹下, $cd /home/cvtech/jx2410/linux
7. 在虚拟机界面中,选中新的驱动,并保存退出 执行:
$make menuconfig
找到字符设备Character Device,选中并选择support SEG(NEW)(按空格两次选中),保存退出。 8. 执行:
$make zImage↙ (重新生成带新驱动程序的内核,并自动复制到/tftpboot/下)
以下斜体字为动态加载linux内核和运行segtest应用程序方法:
下载到目标机: 在DNW中,执行: JX2410#run loadlinux
#mount 192.168.1.180:/tftpboot /mnt/nfs↙ (在目标机上映射主机(虚拟
机)tftpboot目录为目标机的/mnt/nfs目录)
#cd /mnt/nfs↙
#mknod /dev/seg c 96 0↙ (创建设备文件名)
这里已经不在需要insmod seg.o。因为已经编译进内核。 #./segtest↙ (运行应用程序)
以上步骤完成了将新驱动程序加入到嵌入式Linux内核中,并采用动态加载设备驱动和运行程序。 若要系统启动时能自动运行segtest应用程序,还需要修改文件系统Ramdisk.gz,将应用程序segtest放入到Ramdisk.gz中,并注册驱动设备号。
四、 修改文件系统Ramdisk.gz,将应用程序segtest放入到其中,并注册驱动程序设备号seg。
1. $cd /home/cvtech/jx2410/root↙ (进入root路径) 2. $./exramfs↙ (执行脚本文件,解压缩文件系统Ramdisk.gz) 3. $cd rd/etc/init.d↙
4. $vi rcS↙ (加入注册设备名语句,并加入执行文件名和路径) 键入“i”,进入写入模式,在适当的位置加入如下语句: mknod /dev/seg c 96 0↙ (注册驱动设备名)
/bin/segtest↙ (系统启动后自动执行应用程序) 按“Esc”键,敲入“wq”保存退出。 如图4:
5. 复制segtest应用程序到文件系统中的bin文件夹下,执行: $cp
/home/cvtech/jx2410/examples/seg/segtest
.
/home/cvtech/jx2410/root/bin/↙
6. 重新压缩文件系统Ramdisk.gz,执行以下命令:
$cd /home/cvtech/jx2410/root↙
$./mkramfs↙ (执行脚本文件,压缩文件系统Ramdisk.gz,并自动复制到/tftproot/下)
$cp ramdisk.gz /tftpboot
五、 下载文件系统Ramdisk.gz和Linux内核zImage到目标机中,并重新启动实验箱,使linux系统启动时自动运行应用程序。
打开实验箱电源,在PC机的Windows XP环境启动DNW(Com1:,11520bps),在DNW中执行如下命令:
JX2410#run loadlinux (下载Ramdisk.gz和zImage到目标机中,并重新启动linux系统。)
正在阅读:
Linux数码管驱动详细过程10-19
部编小学二年级语文下册第22课《小毛虫》10-06
福建省泉州市泉港区2011-2012学年八年级数学上学期期末考试试题(无答案)_新人教版05-09
试论余英时《中国近世宗教伦理与商人精神》09-23
七年级语文教学心得06-10
浅谈公共艺术教学与创新思维的开发12-21
除四害标准及考核办法05-03
福建烟草商业企业卷烟营销队伍“135”工作法岗位工作手册(试行)-06-11
监识科学02-12
业余团校及团干培训试题集11-15
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 数码管
- 过程
- 驱动
- 详细
- Linux
- 考研生化题
- 我的专升本学习心得
- 2018南京大学国民经济学考研专业目录、考试科目、参考书目、复试分数线、报录比、拟录取名单、复试安排 - 图文
- 中医基层适宜技术教案
- 2011学年“假日杯”初中科学竞赛试卷(七年级内容)及答案
- 复旦体育考试题库
- 西南交大 第二学期 高升专 英语第5-9次作业客观题13页
- 梦思得露施工方案
- 8第八章五代十国与宋朝的法律制度
- 水上施工安全技术交底
- 酒店客房案例解析
- 《学前心理学》第九章-第十三章练习题
- 建筑工程计量与计价复习题 doc
- 小学一年级上册体育全册教案
- 功率因数表的结构与工作原理及示波图法测量功率因数
- 2018年高考语文作文90句好用的名言
- 商品比价系统需求分析说明书
- 电梯评估报告008
- 《瓦尔登湖》中的中国、印度及其世界性
- 2018年北京市海淀区高三二模英语试题