ARM---驱动开发

news2025/1/2 0:25:48

目录

1.驱动大纲:

2.单片机开发属于嵌入式开发吗?

3.RAM裸机代码和驱动有什么区别?

4.Linux系统的组成

5.宏内核、微内核 

6.驱动移植


1.驱动大纲:

       (1)内核模块

       (2)字符设备驱动

       (3)中断、内核定时器

2.单片机开发属于嵌入式开发吗?

广义: 单片机开发属于嵌入式的---(嵌入式微处理器开发)---单片机搭载实时的系统

            单片机一般不带mmu(地址映射,物理地址和虚拟地址做转换)

狭义:单片机开发不属于嵌入式--- (Linux嵌入式开发)

3.RAM裸机代码和驱动有什么区别?

共同点:

     都能操作硬件

不同点:

     arm裸机:

         1.直接操作物理地址

         2.单独编译单独执行

         3.arm裸机同时只能执行一份代码

         4.arm裸机代码只需要一个main函数就可以了,在main函数中编写裸机程序

      驱动:

         1.需要对物理地址进行转换----转换成虚拟地址

         2.依赖内核编译,依赖内核执行

         3.驱动可以同时执行多份代码(操作系统具有进程管理)

         4.驱动是依赖内核的框架和操作硬件的过程,每个模块都有独立的运行任务

4.Linux系统的组成

app     :        app       glibc    【0-3G】

---------------------------------系统调用(软中断)--------

kernel  :                           【3-4G】

5种功能

   进程管理:进程的创建,销毁,调度等功能

   文件管理:通过文件系统ext2/ext3/ext4 yaff jiffs等来组织管理文件

   网络管理:通过网络协议栈对数据进程封装和拆解过程。

   内存管理:通过内存管理器对用户空间和内核空间内存的申请和释放 

   设备管理: 设备驱动的管理

      字符设备驱动:

1.按照字节为单位进行访问,顺序访问

2.会创建设备文件,open read  write close来访问

      块设备驱动  :

        1.按照块(512字节)(扇区)来访问,可以顺序访问,可以无序访问

 2.会创建设备文件,open read  write close来访问

       网卡设备驱动:

  1. 按照网络数据包来收发的。

---------------------------------------------------------

hardware:led 鼠标  键盘  lcd  触摸屏  摄像头  u盘  emmc  猫 路由器 dm9000

5.宏内核、微内核 

宏内核:将进程、网络、文件、设备、内存等功能集成到一个内核中

特点:代码运行效率高

缺点:如果有一部分出错,整个内核就崩溃了

eg:Android Ubuntu 

微内核:只将进程、内存机制集成到内核中,文件、设备、驱动等在操作系统之外

特点:运行效率低一些,通过API接口让整个系统运行起来

缺点:效率低

优点:稳定性强

eg:鸿蒙 window QNX

6.驱动移植

1)需要一个驱动对应的.c代码   

       一般用什么东西,什么东西的厂商会提供一套驱动代码

 2) 将.c文件放到对应的驱动文件夹下(drivers/char)

 

  

 3)修改char文件夹下的Makefile-->连接自己的.o文件

 

 

 4)修改char下的Kconfig-->

 

5)去顶层目录下执行make menuconfig-->配置自己的驱动

--> Device Drivers --> Character devices --> <>this is LCD 修改为<M>this is LCD  

<*> 编译到内核里      <>不编译    <M>编译为独立模块

 

 

 

6)顶层目录下make modules(编译独立的驱动模块),如果配置编译到内核中执行 make uImage

 

7) ubuntu下(sudo insmod lcd.ko)开发板下(cp自己的驱动.ko nfs路径)insmod lcd.ko

cp lcd.ko  /opt/6818/rootfs/rootfs (nfs路径)

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

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

相关文章

docker创建ubuntu 22.04

1、拉取镜像 sudo docker pull ubuntu:22.04 2、启动ubuntu22.04&#xff0c;这里映射物理机23端口对应docker22端口用于远程连接 sudo docker run -it -p 23:22 1f6ddc1b2547 /bin/bash 3、进入容器后配置远程&#xff1a; apt update apt upgrade apt install vim ap…

springboot+vue+java在线教育课程教学辅助系统

本文介绍了在线教育系统的开发全过程。通过分析在线教育系统管理的不足&#xff0c;创建了一个计算机管理在线教育系统的方案。文章介绍了在线教育系统的系统分析部分&#xff0c;包括可行性分析等&#xff0c;系统设计部分主要介绍了系统功能设计和数据库设计。课程辅助教学&a…

智慧PG集成开发平台pgting-cli发布了

介绍 两周前我们发布了智能页面搭建平台 —— 智慧PG(pgting)&#xff0c;深受用户青睐&#xff0c;很多用户尝试了在线开发组件。为了方便用户定制开发组件和组件共享&#xff0c;智慧PG设计之初就考虑了组件定制开发问题&#xff0c;为此&#xff0c;我们设计和研发了智慧PG…

Spring Catch

一、Spring Cache整合服务 1.pom.xml <!--spring catch--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>2.application.properties #开启缓存空值&am…

canvas图片旋转,图片base64编码,保存图片

在一些业务场景中&#xff0c;常常需要前端对图片进行操作&#xff0c;这样可以将部分的性能压力转移到前端设备&#xff0c;有利于减小服务器压力&#xff0c;下面讲解前端怎么操作图片。 首先&#xff0c;对图片的操作都是依赖于canvas画布&#xff0c;这里对canvas标签不再赘…

华为OD机试题【字符统计】【2023 B卷 100分】

文章目录 &#x1f3af; 前言&#x1f3af; 题目描述&#x1f3af; 解题思路&#x1f4d9; Python代码实现&#x1f4d7; Java代码实现&#x1f4d8; C语言代码实现 &#x1f3af; 前言 &#x1f3c6; 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为OD机试真题最…

LVGL学习(3):页面切换原理和页面管理实现

在LVGL中&#xff0c;大多情况下是有多个页面的&#xff0c;一般来说页面的切换有两种情况&#xff1a; 删除当前的页面&#xff0c;创建新页面加载保留当前的页面&#xff0c;创建新页面加载 我们来分析一下这两种情况&#xff0c;比如页面1有一个列表框&#xff0c;有三个选…

VESC操作入门(三)——PPM输入控制和ADC输入控制

目录 一、PPM输入控制1.1、硬件准备1.2、PPM信号1.3、校准电机1.4、输入设置 二、ADC输入控制2.1、硬件准备2.2、更改固件2.3、电压信号2.4、校准电机2.5、输入设置 三、电动车转把控制3.1、转把说明3.2、转把测试 四、ADC的其它模式4.1、Current No Reverse Brake ADC24.2、Cu…

Windows 安装Redis教程(图文详解)_下载使用redis_Redis可视化_配置Redis环境变量

下载、安装和配置 给出自己的百度网盘链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/14uO7jSm0DuoBWBaFO-obTw 提取码&#xff1a;1234 1. Redis下载 由于 Redis 官网没有提供 windows 版本的&#xff0c;只能去 github 上下载。 1、下载地址&#xff1a;github链…

【C/C++】基础知识之bool布尔类型

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

Java 服务端生成动态 Word 文档下载

需求&#xff1a;某些合同&#xff0c;被制作成模板&#xff0c;以 Word 格式保存&#xff0c;输入相关的内容参数最终生成 Word 文档下载。这是企业级应用中很常见的需求。 解决方案&#xff1a;无非是模板技术&#xff0c;界定不变和变的内容&#xff0c;预留插值的标记&…

创新书荐|《影响力经济》如何在社交媒体上寻求可信的影响力

在这个越来越不可预测的经济体中&#xff0c;贫富悬殊、大规模裁员等让许多人都觉得踏上稳定的职业道路遥不可及&#xff0c;自由职业听起来是最好的选择。宾夕法尼亚大学研究人员Emily Hund在她的新书《影响力经济》很好地讲述了年轻创意人士如何将互联网从分散的网页集合转变…

【目标检测——YOLO系列】YOLOv1 —《You Only Look Once: Unified, Real-Time Object Detection》

YOLOv1 —《You Only Look Once: Unified, Real-Time Object Detection》 论文地址&#xff1a;1506.02640] You Only Look Once: Unified, Real-Time Object Detection (arxiv.org) 代码地址&#xff1a;pjreddie/darknet: Convolutional Neural Networks (github.com) 1、Y…

log4j 2自动配置的优先级顺序

log4j 2按照下面优先级由高到低的顺序查找使用日志的配置&#xff1a; 1、系统变量log4j2.configurationFile中指明的配置文件&#xff1b; 2、类路径上的log4j2-test.properties配置文件&#xff1b; 3、类路径上的log4j2-test.yaml 或者 log4j2-test.yml配置文件&#xff1b;…

【C++】C++中的I/O类总结——上篇

title: 【C】C-中的I/O类总结 tags: C description: ’ ’ categories: C date: 2023-06-05 00:36:59 引入 #include <iostream>int main(){std::cout<<"Hello World!"<<std::endl;}我们在学习C时&#xff0c;往往都是从上面这段程序开始的 也就…

React - Mobx

Mobx 简介 mobx是一个可以和React良好配合的集中状态管理工具&#xff0c;和Redux解决的问题相似&#xff0c;都可以独立组件进行集中状态管理 优势 简单 编写无模板的极简代码精准描述你的意图 轻松实现最优渲染 依赖自动追踪&#xff0c;实现最小渲染优化 架构自由 可…

Flutter - 一行命令解决多个pubspec.yaml文件的依赖项问题

文章目录 前言开发环境Flutter内置命令一行命令实现1. 命令使用2. 命令解释3. 命令扩展 最后 前言 项目为了模块化&#xff0c;创建了一堆Package和Plugin&#xff0c;这么做没什么问题&#xff0c;但是遇到Flutter SDK目录路径变化或者其他一些情况导致需要重新获取依赖项时就…

50+常用的广告联盟术语 (常用缩写)

广告联盟术语是指与广告联盟业务有关的行话和缩写。这些术语通常用于描述商业模型、营销策略、流量源、收益模型等方面的概念。了解广告联盟术语对于广告主、联盟会员、广告服务提供商等参与者都非常重要&#xff0c;因为它们可以帮助他们更好地理解广告联盟业务&#xff0c;提…

IDEA 2022.3.3 创建SpringBoot项目

目录 步骤01&#xff1a;快速创建项目 步骤02&#xff1a;选择依赖 步骤03&#xff1a;pom文件中版本问题 ​步骤04&#xff1a;启动测试 4.1、认识引导类 4.2、创建Controller类进行测试 可能遇到的问题及解决方案 附件1&#xff1a;pom文件源码 附件2&#xff1a;项…

华为OD机试题【食堂供餐】【2023 B卷 100分】

文章目录 &#x1f3af; 前言&#x1f3af; 题目描述&#x1f3af; 解题思路&#x1f4d9; Python代码实现&#x1f4d7; Java代码实现&#x1f4d8; C语言代码实现 &#x1f3af; 前言 &#x1f3c6; 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为OD机试真题最…