【Linux实验】I/O接口实验(Vmware虚拟机、S5P6818开发板)

news2024/11/15 1:51:31

这里写目录标题

    • 一、实验目的
    • 二、实验内容
    • 三、实验设备
    • 四、实验步骤
    • 五、总结

一、实验目的

  1. 掌握S5P6818芯片的I/O口控制寄存器的配置。
  2. 掌握实验掌握ARM芯片使用I/O口控制LED显示。
  3. 熟练使用嵌入式交叉编译器
  4. 掌握Makefile文件书写。

二、实验内容

编写程序控制实验平台的发光二极管亮灭。

三、实验设备

  • Vmware虚拟机
  • S5P6818开发板

四、实验步骤

  1. 连接开发板,在设备管理器中查看端口号为COM3
    在这里插入图片描述

  2. 把实验箱中的串口调试工具PuTTY放到桌面。Connection type选择Serial类型,设置Serial line为COM3,Speed为115200。
    在这里插入图片描述

  3. 把试验箱工具软件中的Fastboot拷贝到本机并设置环境变量
    在这里插入图片描述

  4. 安装试验箱工具软件中的Fastboot驱动。

  5. 设置开发板启动方式为101

  6. 通过USB线连接目标机与PC,开发板供电后,PuTTY出现Hit any key to stop autoboot,在倒计时内按任意键进入操作系统。
    在这里插入图片描述
    输入命令fastboot。fastboot是uboot中用来快速下载镜像的一个命令同时也是windows上的一个软件。
    在这里插入图片描述

  7. 连接蓝线到USB口,查看本机多出的设备Android 1.0
    在这里插入图片描述

  8. 在Windows系统下烧写镜像文件,打开cmd,进入D盘,烧写映像文件boot.imgsystem_linux.img。烧写命令如下:
    烧写内核:fastboot flash boot boot.img
    烧写文件系统:fastboot flash system system_linux.img
    在这里插入图片描述

  9. 烧写完成后拔掉线,重启开发板。
    在这里插入图片描述

  10. 编写.c和.h文件,然后编写.c文件的Makefile文件,make命令执行时,需要一个makefile文件,以告诉make命令需要怎么样的去编译程序,整个工程完全自动编译,提高了软件开发的效率。
    在这里插入图片描述
    在这里插入图片描述

  11. 执行make命令生成 .ko文件,内核模块文件.ko文件是把内核的一些功能移动到内核外边,需要的时候插入内核,不需要时卸载。

  12. 将驱动程序拷贝到U盘上,把U盘插到开发板的U口上,串口打印信息,在dev目录下可以找到sda1,即插入的U盘设备文件。

  13. 输入命令:mount /dev/sda1 /mnt/usb挂载U盘到/mnt/usb中,进入/mnt/usb目录查看U盘内容,然后找到.ko文件。
    输入命令:insmod char_drive_led.ko。然后会自动创建节点文件。

  14. 编写测试程序,里面可以传两个参数,编译并运行测试程序test_led_c,使得红灯亮一秒----->绿灯亮一秒----->蓝灯亮一秒----->全部亮一秒,循环往复。
    在这里插入图片描述

五、总结

  通过这次实验,我深刻认识到了Linux内核和硬件之间有着非常紧密的联系,而设备驱动程序就是起到了连接两者的桥梁。这次实验使我们了解了如何编写linux内核驱动程序,掌握了驱动程序的编写和调试技巧。在编写驱动程序时,需要了解硬件的基本信息,然后根据硬件的特点进行代码的编写。同时,编写好的驱动程序也需要经过严格的测试和调试,保证其稳定性和可靠性。总之,这次实验让我对嵌入式开发领域有了更深入的了解和认识,提高了我的技术水平,更重要的是培养了我们解决实际问题的能力,也让我更加热爱这个领域。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ISCSI网络存储服务

ISCSI网络存储服务 应用场景: 服务器硬盘空间不足,可能导致服务器宕机。解决方案通常有两个,一是拷贝出服务器中的部分数据,空出存储空间,但在生产环境中,数据一般会很大,拷贝时间会很长&…

Kubernetes 的内部架构和工作机制

Kubernetes 是一个生产级别的容器编排平台和集群管理系统,能够创建、调度容器,监控、管理服务器。 操作系统的一个重要功能就是抽象,从繁琐的底层事务中抽象出一些简洁的概念,然后基于这些概念去管理系统资源。 Kubernetes 也是…

时间序列预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost时间序列预测,GWO-XGBoost时间序列预测模型,单列数据输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost时间序列预测,GWO-XGBoost时间序列预测模型,单列数据输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及…

AD为什么使用不了Keepout层来画板框(技巧分享)

AD为什么使用不了Keepout层 背景:keepout层作为板框层,是以前AD10的老版本延续下来的习惯,在新版本上需要单独放置! 在嘉立创平台上,习惯了用一个机械1层作为板框。当使用带有添加3D封装的pcb库,发现上面的…

Excel的技术分享

导出Excel的技术分享 Excel前置知识 首先大家就是在大学的计算机导论等课程肯定有了解过office全家桶中的工具之一Excel。在印象当中就是Excel是普遍使用的就是有03和07的两个不同的版本。请问一下大家就是能说一说就是这两个版本有什么区别吗? 显而易见就是从了直…

Elasticsearch【安装ES服务、安装kibana、Docker安装 、索引操作、文档操作】(二)-全面详解(学习总结---从入门到深化)

目录 Elasticsearch安装_安装ES服务 Elasticsearch安装_安装kibana Elasticsearch安装_Docker安装 Elasticsearch常用操作_索引操作 Elasticsearch常用操作_文档操作 Elasticsearch安装_安装ES服务 准备工作 1、 准备一台搭载有CentOS7系统的虚拟机,使用XSh…

(转载)支持向量机(SVM)的回归拟合(matlab实现)

与传统的神经网络相比,SVM具有以下几个优点: (1)SVM是专门针对小样本问题而提出的,可以在有限样本的情况下获得最优解。 (2)SVM算法最终将转化为一个二次规划问题,从理论上讲可以得到全局最优解,从而解决了传统神经网…

Python GUI编程利器:Tkinker中的布局管理器(10)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 今日目标 学习Tkinter的三个布局管理器: pack布局管理器 gird布局管理器 place布局管理器 啥是布局管理器&am…

TCP流套接字编程(模拟多个客户端与服务器交互)

目录 一、ServerSocket API 1.1、ServerSocket构造方法 1.2、ServerSocket方法 二、Socket API 2.1、socket构造方法 2.2、socket方法 三、TCP 中的长短连接 四、示例 实现聊天室功能 五、存在的问题 一、ServerSocket API ServerSocket 是创建TCP服务端Socket的…

500个线程运行串行原因排查

场景:项目中有业务需要开启500个线程执行,需要证明有500个线程在执行。用的是一台128核的电脑。服务用docker启动的。所以理论上应该是要有128个线程并行执行的。 目录 一.证明有500个线程在执行(会发现并行度很低) 1.用top命令监控进程内的线程运行情…

netty学习(5):netty实现注册中心和发送JSON数据到指定的客户端

1. 实现:在netty客户端实现netty客户端注册功能,netty客户端需要发送注册消息到netty服务端。 2. 在父工程创建Message类,定义消息格式和消息类型 定义消息类型: package message;public enum MessageType {RegisterRequest,Re…

函数重载与函数递归

一、函数重载 定义:两个函数的函数名称相同,但是参数的个数或者类型不同 参考以下代码: //1.public static int add(int x,int y){return x y;}//2.与1构成重载public static int add(byte a,int b){return a b;}//3.与1构成重载public s…

文件上传漏洞总结

文件上传 文件上传漏洞产生的原理 文件上传漏洞是指用户通过界面上的上传功能上传了一个可执行的脚本文件,而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好。 文件上传漏洞的危害 1、由于是上传的文件,所以文件由用户决定,上传we…

交换机架构整理

网口的基本结构 网口扫盲三:以太网芯片MAC和PHY的关系 问:如何实现单片以太网微控制器? 问:以太网MAC是什么? 问:什么是MII? 问:以太网PHY是什么? 问:造成以太网MAC和PHY单片整合难度高的原因是什么? 问: 网卡上除RJ-45接口外,还需要其它元件吗? 问:10BaseT和100BaseTX…

LeetCode[面试题17.14]最小的K个数

难度&#xff1a;中等 题目&#xff1a; 设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例&#xff1a; 输入&#xff1a; arr [1,3,5,7,2,4,6,8], k 4 输出&#xff1a; [1,2,3,4]提示&#xff1a; 0 < len(arr) < 1000000 <…

Java设计模式之创建型-建造者模式(UML类图+案例分析)

目录 一、基本概念 二、UML类图 三、角色设计 四、案例分析 五、总结 一、基本概念 建造者模式是一种创建型设计模式&#xff0c;它使我们将一个复杂对象的构建步骤分离出来&#xff0c;使得同样的构建过程可以创建不同的表示。该模式的目的是将构建复杂对象的过程抽象化…

JavaScrpt_13 Web API 正则表达式

JavaScrpt_13 Web API 正则表达式 一、 正则表达式1. 正则基本使用2. 元字符边界符量词范围字符类 3. 替换和修饰符4. change 事件5. 判断是否有类 一、 正则表达式 正则表达式&#xff08;Regular Expression&#xff09;是一种字符串匹配的模式&#xff08;规则&#xff09;…

12_Linux异步通知

目录 异步通知简介 驱动中的信号处理 应用程序对异步通知的处理 驱动程序编写 编写测试APP 运行测试 异步通知简介 在使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过poll函数不断的轮询。最好的方式就是驱动…

【Python爬虫与数据分析】时间、日期、随机数标准库

目录 一、模块化概述 二、time库 1. 时间获取 2. 时间格式化 3. 程序计时 三、datetime库 1. datetime.datetime类 2. datetime.timedelta类 四、random库 1. 基本随机函数 2. 扩展随机函数 3. 随机时间的生成 一、模块化概述 Python程序由模块组成&#xff0c;一个…

MySQL基础篇第4章(运算符)

文章目录 1、算术运算符1.1 加法与减法运算符1.2 乘法与除法运算符1.3 求模&#xff08;求余&#xff09;运算符 2、比较运算符2.1 等号运算符2.2 安全等于<>2.3 不等于运算符2.4 空运算符2.5 非空运算符2.6 最小值运算符2.7 最大值运算符2.8 BETWEEN AND运算符2.9 IN运算…