全志V3S嵌入式驱动开发(驱动开发准备)

news2025/1/18 6:26:31

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        之前的文章都是教大家怎么搭建环境、看原理图、编译内核和根文件系统、做镜像,直到现在才进入驱动开发的主题。毕竟整个专栏的目的,还是希望大家能够学会驱动外部硬件。驱动好硬件,分成硬件和软件两个部分,硬件的部分比较好理解,就是看相关的信号有没有对接上即可,但是软件对接、甚至于怎么写软件,大家好像接触的比较少,所以这个时候,就可以简单讨论一下,怎么样才能写驱动代码。

1、了解外部驱动芯片手册

        所谓驱动,其实就是用soc里面的io控制器来驱动外部电路,或者说是外部芯片。如果是简单的io和uart这些,当然不需要知道驱动芯片的内容。但是如果驱动的是外部芯片,那么这个时候我们就要把对应芯片的资料找过来,好好读一读。里面协议的内容,就是我们将来编程的依据,

        

2、了解soc芯片手册

        了解外部芯片主要是解决发送内容的问题,而soc芯片则会告诉我们怎么发送这些内容。比如,它是iic接口,还是spi接口,还是普通的uart接口等等。这些内容,都可以通过soc的芯片手册找到,比如下面s3c2440中nandflash controller的介绍,

3、os驱动框架的学习

        不同的os,它的驱动框架其实是不一样的。比如说,windows有windows的驱动框架,linux有linux的驱动框架,android系统甚至于把一部分驱动代码放到了应用层,这都是有可能的。所以,对于驱动工程师来说,如果需要编写驱动,那么要做的就是熟悉对应系统的驱动框架。一般来说,大部分驱动代码都是差不多的,没有必要从0开始写,可以找一个差不多的模板代码,根据芯片手册改一下内容,基本就可以用了。

4、熟悉os kernel API

        一般来说,编写驱动的时候,我们也会用到内核的API。比如说,需要申请内存,需要申请中断,需要访问io地址等等,这些操作都需要小心、谨慎地去做。因为,如果是上层去做开发,最多也就是程序闪退,出不了大错,但是底层驱动如果写错,会直接重启硬件,或者程序死锁,这些都是很常见的现象。所以在真正使用API的时候,一定要理解了之后再使用,驱动的一些故障、特别是一些低概率的故障还是比较难调试的。

5、适当编写上层代码

        驱动写好了,是需要搭配上层代码进行配套测试的。如果公司不是很大,这部分也是需要驱动工程师自己去完成的。另外从提高工作效率的角度来说,自己会写上层应用,也可以更好地发现问题、解决问题,省的拖到最后解决,只会让自己搞得措手不及。

注:
        上面说的都是软件的工作,有时候驱动工程师还需要自己量电压、测信号。不需要很懂,但是可以解决最低级的故障。根据2/8原则来说,我们会的硬件知识也许不多,但是掌握了常见的套路之后,它已经足够可以解决80%的问题。这样遇到难题,也不会受制于人,效率上不打折扣。

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

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

相关文章

Python 基础(十四):类和对象

❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 一、面向对象编程二、创建类三、创建实例3.1、访问属性3.2、调用方法 四、属性默认值4…

网络通信协议-ICMP协议

目录 一、ICMP协议 二、ICMP协议通信过程 (1)机制 (2)原理 (3)相关术语 丢包率 网络延时率(延迟) 请求超时【类似表白对方压根不搭理你】 没有任何回复数据,回复…

DNS/ICMP协议/NAT技术

本博文分享DNS(简单认识)、ICMP(简单认识)和NAT技术(重点学习)。 DNS DNS是一整套从域名映射到IP的系统,TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序。但是IP地址不方便记忆&…

windows下mysql中binlog日志分析和数据恢复

1.首先查看是否开启了binlog show variables like %log_bin%;看到了是没有开启的。 2.开启binlog日志,并重启mysql服务 不能通过命令的方式去打开,因为会提示说这个参数是只读的。如下图: 所以,打开mysql的配置文件&#xff…

Three.js--》实现3d地球模型展示

目录 项目搭建 实现网页简单布局 初始化three.js基础代码 创建环境背景 加载地球模型 实现光柱效果 添加月球模型 今天简单实现一个three.js的小Demo,加强自己对three知识的掌握与学习,只有在项目中才能灵活将所学知识运用起来,话不多…

配置MIT6.S081环境

配置环境 1实现环境2更换源3.安装RISC-V交叉编译工具4.安装QEMU5.检测安装6.下载源码7.检查调试工具8.安装vim9.进行初步调试 1实现环境 虚拟机(我用的VMware Workstation Pro)Ubantu20.04安装QEMU 注意必须使用ubuntu20.04版本,因为后面安装…

Webpack打包图片-JS-Vue

1 Webpack打包图片 2 Webpack打包JS代码 3 Babel和babel-loader 5 resolve模块解析 4 Webpack打包Vue webpack5打包 的过程: 在webpack的配置文件里面编写rules,type类型有多种,每个都有自己的作用,想要把小内存的图片转成bas…

华为OD机试之不含101的整数(Java源码)

不含101的数 题目描述 小明在学习二进制时,发现了一类不含 101的数,也就是: 将数字用二进制表示,不能出现 101 。 现在给定一个整数区间 [l,r] ,请问这个区间包含了多少个二进制不含 101 的整数? 输入描述…

WalkRE--刷图流程(超具体)

1、打开WalkRE软件,界面如下: 2、选择“根据模板新建工程”。操作如下: 3、导入数据。需要入准备好的dxf格式的CAD地形数据。操作如下: 在空白处右键,先关闭所有层(大部分层在刷图时用不上,仅打…

自动化测试2:selenium常用API

目录 1.webdirver API 1.1.定位元素 1.2CSS 1.语法 2,使用 1.3XPath定位 1.语法 2.使用 2.操作测试对象 2.1.鼠标点击与键盘输入 2.2submit 提交表单 2.3text 获取元素文本 3.添加等待 3.1.sleep休眠 3.2.智能等待 3.2.1.隐式等待 3.2.2显示等待 4.打印信息 …

web前端 --- CSS(04) -- 盒子模型、div+css网页布局、css3新特性

盒子模型 (1)网页标签分类: 行内元素:块级元素:有宽高,可以设置大小,同时不会让其他块元素默认占据当前行 (2)内边距: 内容和边线之间存在空白区域&#x…

路径规划算法:基于猫群优化的路径规划算法- 附代码

路径规划算法:基于猫群优化的路径规划算法- 附代码 文章目录 路径规划算法:基于猫群优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法猫群…

数据库基础——3.SQL概述及规范

这篇文章我们来讲一下SQL概述和使用规范 目录 1.SQL概述 1.1SQL背景 1.2 SQL语言排行榜 1.3 SQL分类 2.SQL规则与规范 2.1基本规则 2.2 SQL大小写规范 (建议遵守) 2.3 注 释 2.4 命名规则(暂时了解) 2.5 数据导入指令 1…

【硬件】嵌入式电子设计基础之数字电路

数字电路与模拟电路的设计思想和应用方法有许多不同之处。 计算器是一个典型的由数字电路实现的电子设备,用户通过数字或符号摁键输入运算式,计算器经过运算之后把结果显示在屏幕上。现代数学电子学始于1946年,其标志是一台以电子管为核心器件…

奥地利博士联培申请签证经验(奥地利签证)

记录一下奥地利申请签证经验,供有需要的小伙伴借鉴: 我申请的是去克拉根福大学联合培养一年,正常的居留签证需要半年之久,但是如果有托管协议(Hosting Agreement)可以先申请D类签证,抵达奥地利再…

Shell脚本攻略:循环语句for

目录 一、理论 1.for循环 二、实验 1.实验一 2.实验二 3.实验三 4.实验四 5.实验五 6.实验六 7.实验七 一、理论 1.for循环 (1)for循环的常见三种用法 Ubuntu系统在6.10版本后默认使用dash环境; 而CentOS系统常见默认使用的是ba…

00后是真卷不过,工作没两年,跳槽到我们公司起薪22K都快接近我了

在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&…

C++搜索二叉树

一、搜索二叉树概念 搜索二叉树是一种树形结构,常用于map当中。搜索二叉树严格遵守左小右大的规则 C语言中实现搜索二叉树有一些困难,并且在面对一些特定题目实现较困难。因此采用C的方式再次实现搜索二叉树 二、搜索二叉树的实现 插入 搜索二叉树在…

ASEMI代理长电可控硅BT136参数,BT136规格,BT136说明

编辑-Z 长电可控硅BT136参数: 型号:BT136 RMS通态电流IT(RMS):6A 非重复浪涌峰值导通电流ITSM:25A 峰值栅极电流IGM:2A 平均栅极功耗PG(AV):0.5W 存储接点温度范围Tstg:-40 to 150℃ 工…

Linux -- 进阶 Web服务器 搭建基于 https 协议的静态网站 ( 预备知识 )

概念引入 : 什么是 HTTPS ? HTTPS 协议背景 ? >>> HTTP 协议 即 超文本传输协议 , 它出生的很早,在早期,网络服务的相关攻击呢,或者病毒啥的几乎没有,安全类的问 题也是少之又…