Linux驱动开发
文章平均质量分 59
Linux驱动开发的知识与日常学习记录
Iron2222
一个相当工程师的研究僧!
展开
-
Linux路径、路径变量$PATH
Linux下的路径问题环境配置,是大家学习Linux的一大难关,特别是其中的各种路径配置,更是让人头大。今天我们就简单聊一聊,PATH两三事。1、首先什么是路径?PATH,计算机系统里的路径是针对文件来说的。有绝对路径与相对路径之分:绝对路径,一定由根目录/写起;相对路径,不是由/写起;2、路径变量$PATH大家有没有想过,为什么我们可以在Linux的任何目录下执行各种命令?这正是因为环境变量PATH的帮助下所致的。大家可以登陆自己的Linux系统,输入echo $PATH,注意这原创 2021-12-03 12:41:25 · 5760 阅读 · 0 评论 -
什么是嵌入式?
什么是嵌入式?写在前面:还记得几个月前,得知自己的导师是做嵌入式的时候心里的忐忑,私下做了很多的功课,想搞清楚到底什么是嵌入式?经过这段时间的接触,在大脑里也已经形成了一个雏形,嵌入式的雏形。嵌入式定义先从定义上来讲:如果现在过年回家,有亲朋好友问我:豆子,你研究啥方向的啊?我:嵌入式亲朋:啥是嵌入式?我:…………我肯定无语,所以为了防止这种情况的发生,一定要做好对策。首先,我会告诉他:嵌入式,就像一台小电脑。相当于把电脑上的某些功能给剪裁了下来,放在了别的设备上。比如,电话手表,原创 2021-11-17 14:14:10 · 188 阅读 · 0 评论 -
uboot移植,板子不支持咋回事?
为什么我的uboot镜像无法启动开发板?写在前面:我的开发板被我玩坏了,启动不了了,不怕,正好测试一下整个系统的移植过程。uboot其实只是bootloader中的一种,因为简单好用,所以用的越来越多。uboot一般有三类1.uboot官方的uboot代码由uboot 官方维护开发的uboot 版本,版本更新快,基本包含所有常用的芯片。2.半导体厂商的uboot代码半导体厂商维护的一个uboot,专门针对自家的芯片,在对自家芯片支持上要比uboot官方的好。3.开发板厂商的uboot原创 2021-11-17 09:17:44 · 147 阅读 · 0 评论 -
从LED驱动程序中看简单驱动编程思想与框架
从LED驱动程序中看简单驱动编程思想与框架写在前面:上次写过一个不牵涉硬件的helloworld简单驱动程序,今天来一个涉及硬件的相对来说比较简单的LED驱动,并对驱动的编程思想,简述自己的看法与见解。为什么选LED呢?因为我是点灯工程师啊!不点灯点什么。为什么要有驱动程序?首先我们要明白,驱动程序是针对那些可以跑操作系统的设备而言的。像我在学校帮导师做的一些小项目,那里用得到驱动程序,直接一个程序从头执行到位。这就叫单片机开发,走的是简单粗暴的路子,能运行就行。一旦我们要针对那些有着很复杂原创 2021-11-16 17:52:37 · 328 阅读 · 0 评论 -
MPU、MCU、CPU、GPU、DSP、MMU、TPU、NPU大杂烩
MPU、MCU、CPU、GPU、DSP、MMU、TPU、NPU大杂烩写在前面:相信大家都和我一样,对这些U的英文缩写,傻傻分不清楚,这是最近收集的一些,整理一下,做个记录。MPU与MCU最常见的大家也最容易分不清的其实还是MPU与MCU。MCU的全称是Mirco Controller Unit,微控制器MCU上完成的任务大多数是一些简单的刺激-响应式的任务,而且任务类型单一,任务执行过程简单。在这种情况下一般不需要MCU去执行功能复杂、运算量大的程序,而通常不需要运行大型操作系统来支持复杂原创 2021-11-14 09:30:24 · 2514 阅读 · 0 评论 -
git入门
看图就完了原创 2021-11-09 19:27:52 · 79 阅读 · 0 评论 -
你会有编程语言歧视吗?
转自一个大佬的博客,说到心里了。https://www.cnblogs.com/xuanyuan/p/4661085.html开发软件就好比人睡觉。床是硬件,人是软件。硬件是晦涩的,各种各样的,让你在上面开发程序是一件极其痛苦的,必须对硬件了解非常透彻才行。就像让你直接睡在石板床上,没几个人能坚持下来。这就像让你用汇编语言在单片机、微处理器上直接写程序很难受一样。后来有人说,我们在石板床上垫一层稻草,铺层凉席,睡起来没那么硬了。这就是早期的操作系统,如DOS。我们在DOS上再开发软件要舒服一些了,这转载 2021-11-03 21:49:09 · 156 阅读 · 0 评论 -
一个不牵涉硬件的字符驱动——HelloWorld
一个不牵涉硬件的字符驱动——HelloWorld!写在前面:这里会简单的告诉你一个驱动程序的框架,整个流程记住两个字就好——借鉴。人们接收知识最快的方式,不是看书思考,而是观察模仿(或者说实践也可以)。功能要求:驱动中可以实现open,write,read,releaseAPP调用write时可以往驱动中写数据APP调用read时可以把驱动中保存的数据1、确定主设备号首先还是新建两个文件一个hello_drv.c、一个hello_drv_test.c。hello_drv.c文件:原创 2021-10-31 20:09:11 · 123 阅读 · 0 评论 -
人傻了,在Linux终端中suspend了一下。
我无了,suspend之后怎么恢复啊?手欠,看到一个命令就试了一下,然后就凉凉了,看图片怎么搞,都恢复不了了!最后还是直接把这个终端给关掉了,重新打开了一个,一切正常。既然卡在这个命令了,咱们就多了解了解它。Linux Suspend主要有以下三步:冻结用户态进程和内核态任务调用注册的设备的suspend的回调函数,顺序是按照注册顺序休眠核心设备和使CPU进入休眠态。冻结进程(suspend_freeze_processes)是内核把进程列表中所有的进程的状态都设置为停止,并且保存所有原创 2021-10-31 18:12:56 · 706 阅读 · 0 评论 -
GPIO输入驱动实验-按键控制
GPIO输入驱动实验-按键控制写在前面:和beep实验一样,在已有的工程框架上加功能就行了,冲!!!对了这次会对gpio的操作编写成一个函数集合,方便调用,大家留意。1、bsp下新建key、gpio文件夹首先我们先来搞一个gpio的操作集合函数,同样的来一对CP:bsp_gpio.h、bsp_gpio.cbsp_gpio.h代码如下:#ifndef _BSP_GPIO_h#define _BSP_GPIO_h#define _BSP_KEY_h#include "imx6ul.h"原创 2021-10-26 20:38:34 · 981 阅读 · 0 评论 -
ARM是什么?
ARM是什么?1、一个公司的名字ARM首先是一个公司,即Advanced RISC Machines的缩写。这公司的经营模式也很有特点:专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,而是转让设计许可,由合作公司生产各具特色的芯片。2、一类处理器的统称可能大家对于ARM架构一下子没什么概念,可以这么说,大家现在用的手机还有平板大多都是这种架构的。07年第一代iPhone就是使用的ARM设计,三星制造的芯片。08年,谷歌推出了Android(安卓)系统,也是原创 2021-10-26 17:59:08 · 623 阅读 · 0 评论 -
beep蜂鸣器实验,来告诉你模块化、工程化编程的好处!
beep蜂鸣器实验,来告诉你模块化、工程化编程的好处!写在前面:上接前面关于BSP的博文,在那篇博文里我们搭建起了一个‘麻雀虽小,五脏俱全’的工程框架,现在框架已经搭起来了,这样当你想添加新功能时,方便的一批。闲话少说,直接搞起来!正文1、第一步看图肯定还是先看电路图,找到你要调用的IO口。(这里就不配图了,makedown编辑器搞起图片来太麻烦。)2、第二步新建功能模块在bsp文件夹下直接新建一个beep的文件夹,蜂鸣器驱动文件我们都是要放到里面的。3、第三步写驱动文件在上一步建好的原创 2021-10-25 21:53:01 · 615 阅读 · 0 评论 -
一个通用makefile文件
有没有一个比较通用的makefile呢?写在前面:这个通用mkaefile文档,来源于正电原子学习板中提到的一种,当然这不代表这个就是最合适的,这只是我在学习过程中遇到的文档中,觉得最厉害的一个。重点还是以学习为主,学学一般的makefile文件是怎么写的,以及makefile的基础知识。上代码:(上接我写那个bsp推文)项目源:Linux驱动开发: Makefile+driver可直接下载其中的5_ledc_bsp,都是整理好的。CROSS_COMPILE ?= arm-l.原创 2021-10-23 09:52:12 · 225 阅读 · 0 评论 -
一个工程文件是怎么建起来的?(BSP、makefile)
一个大的工程文件是怎么建起来的?(BSP)重点内容简介:工程目录框架? 每个目录下要包含哪一类的文件? 针对这种有好多个文件夹的工程,makefile该怎么写?1、什么是BSP?板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。BSP功能:单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持 为操作系统提供设原创 2021-10-22 21:55:57 · 1055 阅读 · 0 评论 -
如何利用官方SDK文件来辅助开发?
如何利用官方SDK文件来辅助开发1.首先要先知道什么是SDK?SDK或者SDK包指的是,半导体厂商针对自己研发的芯片,同步推出的一个软件开发工具包。它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。我是这样理解的,SDK就像是这个芯片的使用说明书:告诉你有哪些按钮,这些按钮分别控制着什么功能。2.如何使用?首先要从官网上下载下来,然后原创 2021-10-22 15:36:31 · 517 阅读 · 0 评论 -
解析:GPIO1_DR &= ~(1<<3)
GPIO1_DR &= ~(1<<3);//将 GPIO1_DR 的 bit3 清零 开灯- 先对1左移3位:0001 -> 1000- 再按位取反:1000 -> 0111- 最后按位==与==运算就相当于把第3位清零了。一通百通,多思考就可以了!原创 2021-10-21 21:23:55 · 904 阅读 · 0 评论 -
新学两个新汇编指令:bic和orr
BIC——位清除指令> 指令格式:BIC{cond}{S} Rd,Rn,operand2BIC指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中。指令示例:BIC R0,R0,#0x0F ;将R0最低4位清零,其余位不变。ORR——位置为1> ORR 指令的格式为:ORR{条件}{S} 目的寄存器,操作数 1,操作数 2ORR 指令用于在两个操作数上进行逻辑或运算,并把结果放置到目的寄存器中。操作数 1应是一个寄存器,操作数 2 可..原创 2021-10-21 21:21:15 · 2171 阅读 · 0 评论 -
用汇编语言点亮LED(硬钢!)
汇编语言点亮LED拿到一款全新的芯片,第一个要做的事情的就是驱动其 GPIO,控制其 GPIO 输出高低电平。GPIO口是IO口的一个功能之一。一、接下来的步骤离不开芯片手册:1.使能所有时钟,GPIO的所有时钟2.IO配置,复用GPIO3.设置IO寄存器配置IO 的上下拉、速度等。4.配置GPIO设置输入输出、默认输出高低电平,是否中断等。二、在Linux虚拟机上进行交叉编译:arm-linux-gnueabihf-gcc -g -c led.s -o led原创 2021-10-21 19:29:29 · 1616 阅读 · 0 评论 -
裸机驱动LED(汇编,头文件,C,连接脚本)
C语言LED实验1、汇编激活CPU首先要明白对于没有系统开发板(也就是裸机)来说,是没办法直接对C进行识别。所以需要一段汇编语言,来配置CPU的资源,选择CPU运行模式,初始化指针位置。代码如下:.global _start /* 全局标号 */_start: /*进入SVC模式 */ mrs r0, cpsr bic r0, r0, #0x1f/* 将 r0 的低 5 位清零,也就是 cpsr 的 M0~M4 */ orr r0, r0, #0x13原创 2021-10-21 19:26:58 · 256 阅读 · 0 评论 -
Cortex-A7 常用汇编指令
Cortex-A7 常用汇编指令一、处理器内部数据传输指令1.mov将数据从一个寄存器拷贝到另外一个寄存器,或者将一个立即数传递到寄存器里面MOV R0,R1 @将寄存器 R1 中的数据传递给 R0,即 R0=R1MOV R0, #0X12 @将立即数 0X12 传递给 R0 寄存器,即 R0=0X122.MRS将特殊寄存器(如 CPSR 和 SPSR)中的数据传递给通用寄存器,要读取特殊寄存器的数据只能使用 MRS 指令MRS R0, CPSR @将特殊寄存器 ...原创 2021-10-20 20:08:31 · 496 阅读 · 0 评论 -
bin elf 你懂了吗?
胡乱拼凑,看重点标注!Gcc 编译出来的是ELF文件。通常gcc –o test test.c,生成的test文件就是ELF格式的,在linuxshell下输入 ./test就可以执行。 Bin 文件是经过压缩的可执行文件,去掉ELF格式的东西。是直接的内存映像的表示。在系统没有加载操作系统的时候可以执行。 elf(executable and link format)文件里面包含了符号表,汇编等。 BIN文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像。原创 2021-10-12 08:53:36 · 245 阅读 · 0 评论 -
uboot如何激活自己的开发板?
1.先下载源码ftp://ftp.denx.de/pub/u-boot/ 2.阅读源码source insight 3.如何在source中添加项目? 4.技术文档 uboot作用 初始化硬件设备、建立内存空间映射图、借此来将系统的软件和硬件带到一个合适的状态,为下一步的内核调用做好准备。 (大部分情况下,对于嵌入式系统来说,在CPU中是没有固件程序的,和PC还有像DSP那种自带bios或者boot启动是有些不同的) 因此整个系统的加载启动任务就完全由Boot Loader来完成。 ubo转载 2021-10-12 08:41:39 · 190 阅读 · 0 评论