基于Linux_ARM板的驱动烧写及连接、挂载详细过程(附带驱动程序)
文章目录
- 前言
- 一、搭建nfs服务
- 二、ARM板的硬件连接
- 三、putty连接
- 四、挂载共享文件夹
- 五、烧写驱动程序
- 六、驱动程序示例
前言
本文操作环境:Ubuntu14.04、GEC6818
这里为似懂非懂的朋友简单叙述该文章的具体操作由来,我们的主要目的是将写好的驱动程序烧进开发板中,看到我们想要的现象。
第一个,我们需要让开发板和Linux平台建立联系,这样我们才能让俩者进行更好的交互,这个中间件网上有许多,这里我以putty为例连接展示。
第二个,在Linux上交叉编译好的可执行文件需要上传到中间件上运行,这里需要使用nfs服务挂载到开发板上。
第三个,在该ARM板上,厂商已为客户写入部分内核驱动模块。
一、搭建nfs服务
- 在Linux下打开终端,输入命令:
sudo apt-get install nfs-kernel-server
- 设置共享目录。在Linux上设置一个共享目录,方便之后步骤中一些文件的存放以及使用,在终端中输入命令:
sudo mkdir -p /home/incipe/nfs
sudo chmod 777 /home/incipe/nfs
vim /etc/exports //(在exports下面添加如在语句)
/home/incipe/nfs (rw)
- 重启NFS服务,确保上面两步完成,终端中输入命令:
sudo /etc/init.d/nfs-kernel-server restart
看到有四个OK出现即为设置成功。
二、ARM板的硬件连接
所需为一块ARM板、一根串口线、一根网线、一根电源线。
三、putty连接
使用母头串口线、网线、电源线将QT6818开发板与我们电脑相连,查看端口,然后打开我们的Putty,将端口号填写好,然后比特流改成115200,然后开启开发板和Putty。
至此,putty连接ARM板成功!
四、挂载共享文件夹
- 相互ping通
查看开发板、Ubuntu的IP地址,修改开发板、Ubuntude IP地址。先在Ubuntu和开发板上查看其IP地址,输入命令:ifconfig,然后我们要将Ubuntu的IP地址改成和开发板一个网段的地址。改装完之后在Ubuntu上再输入ifconfig命令,查看是否改装成功。
查看IP地址命令:ifconfig
更改IP地址命令:ifconfig eth0 xxx.xxx.x.xxx
更改为同一网段后相互ping通:ping xxx.xxx.x.xxx
- 交叉编译
将编译好的驱动程序复制到之前创建的共享文件夹 /home/incipe/nfs
(以下是在Linux终端执行)
cp /mnt/hgfs/Ubuntu14.04_share/led_test.c /home/incipe/nfs/
在/home/incipe/nfs 文件中交叉编译led_test.c文件
(此前需要安装交叉编译环境)
arm-linux-gcc -o led_test led_test.c
- 挂载
将交叉编译生成的led_test可执行文件挂载到开发板,在putty上执行如下语句实现挂载:
mount -t nfs 192.168.1.180:/home/incipe/nfs /mnt/sd -o nolock
其中
192.168.1.180:/home/incipe/nfs
为Linux IP地址及Linux下的共享文件夹
/mnt/sd
为挂载在开发板上地址
可见,挂载成功。
五、烧写驱动程序
此前,你需知道的常见驱动命令:
- uname命令
用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等) - lsmod命令
用于显示已经加载到内核中的模块的状态信息。 - rmmod命令
用于从当前运行的内核中移除指定的内核模块。 - insmod命令
用于将给定的模块加载到内核中。 - dmesg命令
用于检查和控制内核的环形缓冲区。 - get_module命令
用于获取Linux内核模块的详细信息。
接下来,我以上方已加载的led驱动模块为例,烧入驱动程序
先观察烧入前板子上的 led 状态(默认状态全亮)
运行已挂载的可执行文件: ./led_test
输入数字“4”和“6”表示关闭第2个和第3个led灯,观察现象:
观察可知,第二个和第三个led灯成功关闭。
六、驱动程序示例
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>#define TEST_MAGIC 'x' //定义幻数
#define TEST_MAX_NR 2 //定义命令的最大序数//定义LED的魔幻数
#define LED1 _IO(TEST_MAGIC, 0)
#define LED2 _IO(TEST_MAGIC, 1)
#define LED3 _IO(TEST_MAGIC, 2)
#define LED4 _IO(TEST_MAGIC, 3)/*************************************************
*主函数-实现led的控制
*************************************************/
int main(int argc, char **argv)
{int fd,val;fd = open("/dev/Led",O_RDWR); //打开设备下的LED,成功返回0if(fd<0){perror("Can not open /dev/LED\n");return 0;}while(1){val = 0;printf("**********************************************\n");printf("*please select which light to turn on *\n");printf("* 1->1:on 2 ->1:off | 3 ->2:on 4 ->2:off *\n");printf("*------------------------------------------- *\n");printf("* 5->3:on 6 ->3:off | 7 ->4:on 8 ->4:off *\n");printf("**********************************************\n");scanf("%d",&val);while(val == 0){printf("****************\n");scanf("%d",&val);}//printf("***********val = %d\n",val);switch(val){case 1: ioctl(fd, LED1, 0); //1灯亮break;case 2: ioctl(fd, LED1, 1); //1灯灭break;case 3: ioctl(fd, LED2, 0); //2灯亮break;case 4: ioctl(fd, LED2, 1); //2灯灭break;case 5: ioctl(fd, LED3, 0); //3灯亮break;case 6:ioctl(fd, LED3, 1); //3灯灭break;case 7: ioctl(fd, LED4, 0); //4灯亮break;case 8: ioctl(fd, LED4, 1); //4灯灭break;default: close(fd);return 0;}}close(fd);return 0;}
相关文章:

基于Linux_ARM板的驱动烧写及连接、挂载详细过程(附带驱动程序)
文章目录前言一、搭建nfs服务二、ARM板的硬件连接三、putty连接四、挂载共享文件夹五、烧写驱动程序六、驱动程序示例前言 本文操作环境:Ubuntu14.04、GEC6818 这里为似懂非懂的朋友简单叙述该文章的具体操作由来,我们的主要目的是将写好的驱动程序烧进…...

python-爬虫-字体加密
直接点 某8网 https://*****.b*b.h*****y*8*.com/ 具体网址格式就是这样的但是为了安全起见,我就这样打码了. 抛出问题 我们看到这个号码是在页面上正常显示的 F12 又是这样就比较麻烦,不能直接获取.用requests库也是获取不到正常想要的 源码的,因为字体加密了. 查看页面源代码…...

计算机组成原理4小时速成5:输入输出系统,io设备与cpu的链接方式,控制方式,io设备,io接口,并行串行总线
计算机组成原理4小时速成5:输入输出系统,io设备与cpu的链接方式,控制方式,io设备,io接口,并行串行总线 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,…...

安全狗受聘成为福州网信办网络安全技术支撑单位
近日,福州市委网信办召开了2022年度网络安全技术支撑单位总结表彰大会。 作为国内云原生安全领导厂商,安全狗也出席了此次活动。 据悉,会议主要对2022年度优秀支撑单位进行表彰,并为2023年度支撑单位举行授牌仪式。 本次遴选工…...
RV1126 在Ubuntu18.04开发环境搭建
1:安装软件终端下输入安装命名:sudo apt install openssh-serversudo apt install android-tools-adbsudo apt install vim net-tools gitsudo apt install cmakesudo apt install treesudo apt install minicomsudo apt install gawksudo apt install bisonsudo ap…...
如何在 C++ 中调用 python 解析器来执行 python 代码(一)?
实现 Python UDF 中的一步就是学习如何在 C 语言中调用 python 解析器。本文根据 Python 官方文档做了一次实验,记录如下: 1. 安装依赖包 $sudo yum install python3-devel.x86_642. 使用 python-config 来生成编译选项 $python3.6-config --cflags -…...

操作系统权限提升(二十三)之Linux提权-通配符(ws)提权
系列文章 操作系统权限提升(十八)之Linux提权-内核提权 操作系统权限提升(十九)之Linux提权-SUID提权 操作系统权限提升(二十)之Linux提权-计划任务提权 操作系统权限提升(二十一)之Linux提权-环境变量劫持提权 操作系统权限提升(二十二)之Linux提权-SUDO滥用提权 利用通配符…...
Zookeeper下载和安装
Zookeeper 1.下载 官方下载地址:https://zookeeper.apache.org/ 版本:apache-zookeeper-3.7.1-bin.tar.gz 2. 安装 2.1 本地安装 2.1.1 安装JDK 见:Hadoop集群搭建 2.1.2 上传安装包 使用远程工具拷贝安装包到Linux指定路径 /opt/s…...

Biomod2 (上):物种分布模型预备知识总结
Biomod11.栅格数据处理1.1 读取一个栅格图片1.2 计算数据间的相关系数1.3 生成多波段的栅格图像1.4 修改变量名称1.4.1 计算多个变量之间的相关性2. 矢量数据处理2.1 提取矢量数据2.2 数据掩膜2.2 栅格计算2.3 拓展插件的使用3. 图表绘制3.1 遥感影像绘制3.2 柱状图分析图绘制3…...

操作指南:如何高效使用Facebook Messenger销售(二)
上一篇文章我们介绍了使用Facebook Messenger作为销售渠道的定义、好处及注意事项,本节我们将详细介绍怎么将Facebook Messenger销售与SaleSmartly(ss客服)结合,实现一站式管理多主页配图来源:SaleSmartly(…...
计算机三级|网络技术|中小型网络系统总体规划与设计方案|IP地址规划技术|2|3
p3 p4一、中小型网络系统总体规划与设计方案网络关键的设备选型路由器技术指标性能指标综述吞吐量背板能力丢包率时延抖动突发处理能力路由表容量服务质量网管能力可靠性和可用性1 吞吐量指路由器的包转发能力,涉及两个内容:端口吞吐量和整机吞吐量&…...

为什么一定要做集成测试?
集成测试,我们都不陌生,几乎我们产品每天都在进行。但是我们真的有好好思考:为什么一定要做集成测试吗?只是为了简单的将“积木”搭起来就行,还是有什么其他的深意? 深意可能不一定会有,但是意…...

前端:CSS
CSS基本语法规则:选择器若干属性声明 style标签:可以放到代码的任意位置处,head/body中都可以 三种写CSS的方式: 1、内部样式:使用style标签,直接把CSS写到html文件中。此时的style标签可以放到任何位置…...
CMMI—组织级过程定义(OPD)
大家好,我是Doker 多克!一、目的组织级过程定义(Organizational Process Definition, OPD)的目的在于建立并维护一套可用的组织级过程资产、工作环境标准以及团队规则与指南二、简介组织级过程资产使得整个组织具有一致…...
华为OD机试真题Python实现【猜字谜】真题+解题思路+代码(20222023)
猜字谜 题目 小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如nesw,玩家需要猜出谜底库中正确的单词。 猜中的要求如下: 对于某个谜面和谜底单词,满足下面任一条件都表示猜中: 变换顺序以后一样的,比如通过变换w和e的顺序,nwes跟news是可以完全对应的…...

软测入门(三)Selenium(Web自动化测试基础)
Selenium(Web端自动测试) Selenium是一个用于Web应用程序测试的工具:中文是硒 开源跨平台:linux、windows、mac核心:可以在多个浏览器上进行自动化测试多语言 Selenium WebDriver控制原理 Selenium Client Library…...

备战蓝桥杯——sort函数
备战蓝桥杯——sort函数排列字母lambda匿名函数排列字母 链接: 排列字母 不用多说,很简单的签到题,我们先来了解一下sort函数的用法 list.sort(cmpNone, keyNone, reverseFalse) cmp:进行比较的方法(可以自定义排序的方法,通常…...

华为机试题:HJ86 求最大连续bit数(python)
文章目录(1)题目描述(2)Python3实现(3)知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…...
机器学习复习--logistic回归简单的介绍和代码调用
最近需要复习一下机器学习相关知识,记录一下 一、简介 线性回归:h(x)wTxbh(x)w^T x bh(x)wTxb logistic回归就是在线性模型的基础上加上一个sigmoid函数ggg,即h(x)g(wTxb)h(x)g(w^T xb)h(x)g(wTxb)。。。g(z)1/(1e−z)g(z)1/(1e^{-z})g(z)…...

uniapp小程序接入腾讯地图sdk
新建一个项目。配置uniapp配置文件设置小程序的appid注意:匿名用户可能存在地理定位失效。查uniapp官网官网->apiuni.getLocation(OBJECT) 获取当前的地理位置、速度。属性:success匿名函数返回值:uni.getLocation({type: gcj02,success: …...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...