![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动开发
文章平均质量分 84
Smalld_cat
野生猫猫怪,爱好电子,电机控制,嵌入式linux开发,光学成像系统,人工智能嵌入式,ros
展开
-
Camera sensor调试与bringup帧率计算
在我们前期开发一个项目的时候,经常会调试各种Camera sensor,sensor作为一种电气元件,我们的任务是让其正常工作,需要根据sensor的datasheet、原理图来正常地点亮一个sensor,让其正常出图、出流,然后将Camera的功能比如初始化、复位、裁剪、旋转、缩放等实现并且封装成一个API函数,最后以库的形式提供给应用工程师,让其能在app中结合逻辑灵活调用。原创 2024-02-25 23:17:21 · 1257 阅读 · 0 评论 -
Uboot启动流程
Uboot启动流程前言一、嵌入式中的Uboot二、U-Boot启动内核第一阶段:第二阶段:三、Uboot启动流程分析前言一个完整的linux系统,通常需要一个引导启动它的bootloader,而我们最常用的就是Uboot。uboot启动分为两个阶段,即boot + loader,boot阶段启动系统,初始化硬件设备,建立内存空间映射图,将系统的 软硬件带到一个合适的状态,loader阶段将操作系统内核文件加载至内存,之后跳转到内核所在地址运行。一、嵌入式中的Uboot当一个开发板上电的时候,即使是原创 2022-01-22 15:52:10 · 12002 阅读 · 1 评论 -
嵌入式linux学习路径--新手入门篇
嵌入式linux如何入门?前言基础概念计算机与嵌入式的关系操作系统是什么?程序网络ARPIPICMPTCPUDPDNSDHCPFTPHTTPlinux系统命令目录相关文件相关用户相关系统相关网络相关程序相关其他linux系统配置环境变量设置静态ipTFTP、Samba、NFS服务C语言基础掌握前言随着技术领域的发展,单片机虽然有实时性好的特点,但是面对多任务并发以及人机交互等却力不从心,所以人们开始追求更高工艺更高性能的soc芯片,并且在上面跑linux系统。嵌入式linux应用如此广阔的原因有以下几点原创 2021-10-08 16:56:40 · 1009 阅读 · 0 评论 -
zynq linux开发与普通ARM平台的不同点
前言笔者之前从事的是imx平台的linux开发,之后工作需求转到Xilinx推出的zynq系列芯片的开发,以下内容是笔者在适用zynq平台中遇到的不同于传统linux开发的内容,期间踩了不少坑,笔者希望能够帮助读者理解zynq的开发,少走弯路。平台简介zynq是xilinx推出的一款集成arm核以及fpga可编程逻辑器件的soc芯片,使得它不仅拥有 ASIC 在能耗、性能和兼容性方面的优势,而且具有FPGA 硬件可编程性的优点。zynq主要分为两端,首先是pl端,属于像fgpa开发一样的纯逻辑开发。然原创 2021-09-30 14:17:55 · 4486 阅读 · 1 评论 -
嵌入式linux 驱动编译进内核
简介一般我们开发一个驱动的时候,首先是把这个驱动编译成一个.ko格式的驱动模块,然后动态地在命令行中加载进内核才能去使用。但是大家可能会想,linux里面本来就自带很多驱动,他们都不是像.ko文件一样加载进内核的,能不能把我自己写的驱动也放进去开机的时候自启动呢?当然是可以的。下面,我以我写的pwm驱动为例,将他编译进内核里。将驱动编译进linux内核首先,我先介绍一下linux内核源码里面的drivers目录。顾名思义,就是指驱动。linux内核里面的所有设备驱动都在里面了。比如 drivers原创 2021-09-15 14:59:06 · 1083 阅读 · 3 评论 -
使用Buildroot构建根文件系统
前言之前介绍过使用busybox来构建根文件系统,busybox虽然能够帮助我们快速构建出很小的根文件系统,但是想要正常使用还需要我们去完善(移植lib库,配置文件等),显然对于新手的我们要移植库文件只能把全部移植过去而不会裁剪,这样子出来的根文件系统也有100多M了,而且容易有遗漏的地方导致完善不全。这次我使用Buildroot来构建根文件系统,傻瓜式构建不需要我们来移植库和第三方软件什么的,啥都为我们构建好了,非常方便且完善。1.到官网下载Buildroot和交叉编译器点击以下超链接下载:交叉编原创 2021-08-24 13:53:29 · 2047 阅读 · 0 评论 -
使用busybox构建完善的linux根文件系统
使用busybox构建完整的根文件系统什么是根文件系统?使用最简单的busybox构建根文件系统1.安装依赖文件2.修改busybox顶层makefile3.添加busybox中文字符的支持4.配置busybox5.编译busybox生成根文件系统6.完善根文件系统1)向 rootfs 的“/lib”目录添加库文件2)向 rootfs 的“usr/lib”目录添加库文件3)创建/etc/init.d/rcS 文件4)创建/etc/fstab 文件5)创建/etc/inittab 文件什么是根文件系统?在原创 2021-08-23 16:46:21 · 2158 阅读 · 0 评论 -
linux驱动开发之新字符设备
前言什么是新字符设备呢?那我还是先说说什么是老的字符设备驱动吧。传统的字符设备驱动开发就是使用函数 register_chrdev注册字符设备,注册完成把驱动模块加载进内核后,还需要手动使用 mknod 命令创建设备节点。这就非常地不方便,这需要我们知道哪些设备号可以使用,还会浪费掉次设备号。(因为一个设备只用一个主设备号,则其下的所有此设备号都为它使用了)。于是就出现了新字符设备驱动了,这个提供的api可以让系统自动分配设备号,这样子在我们加载完成模块驱动后,自动就会在/dev上面挂着设备节点以供我们操原创 2021-08-21 16:59:05 · 396 阅读 · 0 评论 -
从零开始理解linux设备驱动
点灯的背后原理首先让大家简单了解一下点灯的原理。当我们使用./test_app文件点灯之后,其实是这个文件使用open函数打开了/dev下的设备节点(后面有介绍),然后通过操作设备节点控制系统调用进入linux内核去驱动底层硬件。下面将详细介绍一些相关的概念和具体实现原理。关于设备的分类设备主要分为:字符设备、块设备和网络设备字符设备驱动程序适合于大多数简单的硬件设备,而且比起块设备或网络驱动更加容易理解, 因此我们选择从字符设备开始,从最初的模仿,到慢慢熟悉,最终成长为驱动界的高手。也就是说,学原创 2021-08-21 15:47:51 · 612 阅读 · 0 评论 -
linux设备树插件
什么是设备树插件?在linux内核版本4.4之后,就引入了一个动态设备树(设备树插件)的概念。在4.4版本之前我们增加或修改设备的时候,需要进入内核源码中修改设备树并且编译下载到开发板中。为了使得开发更加方便快捷,就引入了类似于设备树“补丁”的设备树插件。我们只要写好设备树插件,就可以直接被内核识别并且将里面的内容补充到设备树中,不需要重新编译设备树。这样子还有一个好处就是通过修改设备树插件的内容来使能或者失能某些设备以便于复用为不同功能。举个例子:usart3使用了引脚3和4,i2c也是可以用引脚3和原创 2021-08-17 17:39:12 · 2426 阅读 · 0 评论 -
什么是linux设备树
为什么要使用设备树?随着嵌入式的发展,linux系统被嵌入到各行各业。就拿开发板而言,就有玲珑满目的开发板可供用户选择。于是就出现了一个问题:每一块开发板的内核里,都有描述属于自己开发板的信息,于是就因为硬件不同,就产生了大量的有差别的内核,然后这些内核每年都大量地上传到linux开源社区。这样子开源社区的管理员就不乐意了!内核里的区别就只是硬件描述不一样,一点技术含量都没有,然后每年还有处理筛选那么多这种内核岂不是要累死。于是就引进了linux设备树的概念,专门用来描述板级硬件设备。设备树简介“设备原创 2021-08-17 15:30:37 · 982 阅读 · 0 评论 -
嵌入式linux 内核移植篇
如何将自己的linux板卡信息添加到linux内核呢?本章,我也是通过修改第三方半导体厂商开发板提供的 Linux BSP 包移植到我们自己的平台上。我选择的是nxp厂商官方的evk开发板,使用他们官方的内核修改为自己板卡的内核。添加开发板默认配置文件在编译linux内核之前,也要像编译uboot一样,需要先用配置文件设置好参数,这里我选择复制imx_v7_mfg_defconfig文件,因为通过这个文件配置出来的内核可以使用nxp提供的一个mfgtool工具进行烧录下载,非常方便。将 目 录 下原创 2021-07-13 10:36:32 · 1360 阅读 · 7 评论 -
嵌入式linux UBoot移植篇
如何在U-boot添加自己的linux板卡并启动呢?uboot 的移植并不是说我们完完全全的从零开始将 uboot 移植到我们现在所使用的开发板或者开发平台上。这个对于我们来说基本是不可能的,这个工作一般是半导体厂商做的, 半导体厂商负责将 uboot 移植到他们的芯片上,因此半导体厂商都会自己做一个开发板,这个开发板就叫做原厂开发板。半导体厂商会将 uboot 移植到他们自己的原厂开发板上,测试好以后就会将这个 uboot 发布出去,这就是大家常说的原厂 BSP 包。我们一般做产品的时候就会参考原厂的开原创 2021-07-12 17:30:12 · 734 阅读 · 1 评论 -
Uboot 常用命令操作解释
常用uboot操作指令详解1.ls mmc 1:1查看mmc设备号1的分区1中有什么文件2.mmc dev 0 0将主设备0的分区0(0代表sd卡,1代表emmc)设置为当前的操作空间。3.环境变量的设置1.bootargsbootargs = console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw1)root 用来设置根文件系统的位置,root=/dev/mmcblk1p2 用于指明根文件系统存放在mmcblk1 设备的分区 2 中。原创 2021-05-18 11:52:31 · 1522 阅读 · 0 评论 -
linux wifi驱动联网测试
使用usbwifi的配置过程1.插上usb wifi,终端会打印信息2.加载对应的驱动模块3.使用 ifconfig 命令查看并打开对应的无线网卡,比如 wlan0 或 wlan14.使用 iwlist 命令扫描一下当前环境下的 WIFI 热点一来测试一下WIFI 工作是否正常。二来检查一下自己要连接的 WIFI 热点能不能扫描到,扫描不到的话肯定就没法连接了。cell代表wifi编号,ssid代表wifi名称5.创建配置文件要连接的 WIFI 热点扫描到以后就可以连接了,先在开发板根原创 2021-05-12 22:44:27 · 1171 阅读 · 0 评论 -
linux系统中pinctrl 和gpio子系统使用方法(教你点灯)
如何使用pinctrl子系统点亮ledpinctrl 子系统作用PIN配置pinctrl 子系统作用pinctrl 子系统主要工作内容如下:①、获取设备树中 pin 信息。②、根据获取到的 pin 信息来设置 pin 的复用功能③、根据获取到的 pin 信息来设置 pin 的电气特性,比如上/下拉、速度、驱动能力等。对于我们使用者来讲,只需要在设备树里面设置好某个 pin 的相关属性即可,其他的初始化工作均由 pinctrl 子系统来完成, pinctrl 子系统源码目录为 drivers/pi原创 2021-05-07 12:17:10 · 2752 阅读 · 0 评论 -
大神嵌入式linux系统的路径规划与经验分享(干货满满)
该如何从小白开始学习嵌入式linux前言1.首先必要掌握的基础概念BootLoaderKernel根文件系统2.学会编译与烧录3.学会简单的应用程序开发4.开始linux驱动开发5.逐步提升,终成大佬!6.最后总结前言相信很多人都会有疑问,自己是个小白,对与linux一窍不通,那该如何开始学习呢?很多人学习没有方法,学着学着就学不下去了,感觉学得不知所云然后就放弃了,对此我是觉得很惋惜的。所以我在这里分享一下我看到的文章并且总结给大家,希望能够帮助更多的人来克服linux学习路上的障碍。1.首先必要掌原创 2021-05-04 00:34:01 · 855 阅读 · 3 评论 -
uboot查找ip是否复用并且重设
使用uboot命令端重新设置网络挂载ip地址相信大家在进行嵌入式linux开发的过程中会遇到一个问题:明明自己在平常使用网络改在加载镜像到板卡上都成功,但是今天却偏偏不行,检查了网络情况也正常,ip地址与pc端linux也能相互ping通,但是却偏偏加载不进去。那么,你很大的概率就是因为ip地址被别的电脑使用了,导致两个设备同时使用一个ip地址,所以网络挂载就会失效。检查ip是否正常1.使用pc端ping开发板ping不通才是正常的,因为再uboot启动端还没有启动linux内核,时不会使能网口的原创 2021-05-03 13:52:51 · 1332 阅读 · 0 评论 -
使用linux内核驱动lcd
Linux下LCD驱动在linux驱动开发中,使用lcd进行人机交互是必不可少的,为此,我门如何在内核中初始化lcd使用呢?1、LCD 屏幕 IO 配置打开.dts设备树文件,在iomuxc中创建lcd子节点pinctrl_lcdif_dat: lcdifdatgrp {fsl,pins = < MX6UL_PAD_LCD_DATA00__LCDIF_DATA00 0x79 MX6UL_PAD_LCD_DATA01__LCDIF_DATA01 0x79 MX6UL_PAD_LC原创 2021-05-03 13:24:45 · 639 阅读 · 0 评论 -
linux学习之input子系统
什么是input子系统?按键、鼠标、键盘、触摸屏等都属于输入(input)设备, Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。输入设备本质上还是字符设备,只是在此基础上套上了 input 框架,用户只需要负责上报输入事件,比如按键值、坐标等信息, input 核心层负责处理这些事件。input 就是输入的意思,因此 input 子系统就是管理输入的子系统,和 pinctrl 和 gpio 子系统一样,都是 Linux 内核针对某一类设备而创建的框架。比如按键输入、键盘、鼠原创 2021-05-03 12:50:51 · 143 阅读 · 0 评论 -
如何使用linux系统自带的led驱动
使用Linux 内核的platform 框架驱动led灯1.使用menuconfig使能(可跳过,系统默认配置好)2.设备树节点编写3.运行测试我们平时要使用设备驱动的时候,总是需要我们自己去编写驱动,像 LED 灯这样非常基础的设备驱动,Linux 内核已经集成了。Linux 内核的 LED 灯驱动采用 platform 框架,因此我们只需要按照要求在设备树文件中添加相应的 LED 节点即可1.使用menuconfig使能(可跳过,系统默认配置好)在终端进入内核源码中输入命令:make menuco原创 2021-04-24 11:49:40 · 1938 阅读 · 2 评论