![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动开发
文章平均质量分 73
光明顶魔镜工程师
这个作者很懒,什么都没留下…
展开
-
meson构建系统
简明使用本部分针对那些基于meson build的项目,记录一些meson的基础命令编译项目setup 1使用meson build的项目在源码根目录都能看到一个名为“meson.build”的文件,此文件规定了构建项目的规则在meson下要求要指定一个单独的build目录,这样在编译过程中产生的中间文件不会污染源代码目录,使用以下命令创建build目录并初始化编译meson build命令执行后会自动探测环境、探测编译器,创建一个名为“build”的构建目录,并生成后续compil原创 2021-04-27 14:50:24 · 5303 阅读 · 1 评论 -
stmmac描述符的结构和初始化
stmmac 描述符(Descriptors)stmmac的描述符有两个个模式,分别是ring模式和chain模式,根据特性的不同支持,描述符又有以下3个形式norm、Alternate 、 Enhanced。下面主要讲下ring模式下的Enhanced描述符结构,以及比较重要的位。stmmac的收发的描述符相同位的含义有些差别,所以我们分开分析下描述符的初始化 0.描述符几个关键要素OWN,用来表示描述符的状态,相当于Intel网卡里的DD位buf地址,指明网卡将收到的数据包放到哪里原创 2021-04-01 14:53:19 · 1504 阅读 · 0 评论 -
Linux stmac网卡代码分析 -- open
Openstmmac_open是在stmmac_netdev_ops结构体里的,这个ops在probe时就已经注册到了net_device结构体里,在网卡对于stmmac_open函数调用的时间我还不确定是否是在网卡link up时下面看看stmmac_open函数,文件位置: drivers/net/ethernet/stmicro/stmmac/stmmac_main.c在open函数中主要完成了以下操作连接到PHY,设置好合适的速率申请、初始化dma 描述符资源和队列,在后面初始化原创 2021-02-26 17:00:36 · 4182 阅读 · 4 评论 -
Linux stmac网卡代码分析----probe
probe主要分析一下驱动的主要框架,必要地方细致分析下drivers/net/ethernet/stmicro/stmmac/stmmac_pci.cmodule_pci_driver(stmmac_pci_driver);stmmac_pci_driver结构体如下,里面包含了id_table、probe、remove。id_table里包含了支持设备的vender id、device id,当扫描到支持的pcie设备时(把venderid 和device id 和table里的对比)就调用原创 2021-02-22 11:20:21 · 2681 阅读 · 2 评论 -
3.X内核下设备树–platform设备驱动
1。历史的车轮总是向前,技术更替。在linus 同学发出那句 WFK 后内核进入了设备树时代(站在驱动工程师角度)。前几天我已经被mach-imx 中的文件折磨的夜不能眠。我终于在一个清晨,喝完一杯咖啡后决定放弃蹩脚的传统device描述方式。这里我先不讨论内核实现流程的源代码,简单描述下语法,和我的第一个test_platform_device设备树文件 arch\arm\boot\...原创 2018-07-04 18:54:52 · 1545 阅读 · 0 评论 -
docker下交叉编译环境配置
为什么在docker中搭建开发环境?Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。意思是我们在一个docker中配置好开发环境,把容器打包后,再把这个包拷贝到其他机器,即可方便快速的部署到其他机器docker run -it...原创 2018-07-04 18:58:17 · 7430 阅读 · 0 评论 -
完全内核移植–kernel3.15.3
目标平台 明远智睿 EK314 CPU I.MAX6Q内核版本 3.15.3编译器 arm-none-linux-gnueabi-gcc-4.8.31。下载纯净内核2。配置Makefile3。拷贝cp imx_v6_v7_defconfig .config4。# make menuconfig 退出保存5。#make zImage 进行第一次编译,看能否通...原创 2018-07-04 19:00:13 · 1978 阅读 · 0 评论 -
DM9000网卡原理与基地址设置
从上面可以看出DM9000的地址总线就一根,它不像CS8900那样地址总线和数据总线都齐全。而这里只有一根地址线(CMD),16跟数据线,所以可以确定位宽为16位,而地址线为什么只有一根,这是DM9000决定的,看手册可以知道CPU总线只访问它的两个地址,CMD管脚为0时,数据线送的是DM9000的寄存器地址,CMD管脚为1时,数据线上送的是16位的寄存器数据,所以对DM9000的操作至少需要...原创 2018-07-04 19:01:12 · 1605 阅读 · 0 评论 -
嵌入式RT3070 AP模式移植
环境:ubuntu1~14.04.3编译器:arm-none-linux-gnueabi-gcc-4.8.3注:此文在CUIT詹老师笔记基础修改而来无线网卡为RT3070,驱动分为STA驱动和SoftAP驱动两种,STA驱动支持无线网卡工作在STA模式下,而SoftAP的驱动支持无线网卡工作在软AP的模式下,可以作为一个软的接入点。(成为一个wifi热点)STA驱动为Linux_a...原创 2018-07-04 19:05:12 · 645 阅读 · 0 评论 -
thttpd移植
1.官网下载http://www.acme.com/software/thttpd/ 版本thttpd-2.25b.tar.gz2.解压 tar -zxvf thttpd-2.25b.tar.gz./configure4.修改makefile CC = arm-none-linux-gnueabi-gcc 总共有3个makefile要改 压缩根目录包1个,cgi-src目...原创 2018-07-04 19:06:21 · 514 阅读 · 0 评论 -
vnc配置备忘录
因为我开发板上要用到Qt,所以我在服务器上安装了Qt的开发环境,为了能远程连接到服务器我安装了VNC,中间也是遇到了很多问题,比如连接上去后,只显示一个控制台的窗口,只能使用命令行。后来几经周折才搞定先来个效果图: apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal...原创 2018-07-04 19:08:53 · 156 阅读 · 0 评论 -
udhcpd配置及使用
udhcpd配置及使用1.修改/etc/udhcpd.conf修改 interface ra0 #default: eth0 为对应网卡解决error, Unable to open /var/lib/misc/udhcpd.leases for reading,在板子上执行以下命令:# mkdir -p /var/lib/misc/# touch /var/lib/...原创 2018-07-04 19:11:16 · 4725 阅读 · 0 评论 -
设备树和pinctrl粗解
上次文章中 我以DS18b20为例,在设备树中定义了ds18b20的资源(device),当时是依葫芦画瓢,没有深入探究,本文主要探讨下pin在设备树中的描述参考文章:Linux内核中的GPIO系统之(3):pin controller driver代码分析 、fsl,imx6q-pinctrl.txt、fsl,imx-pinctrl.txt先看我上一篇文章对ds18b20的描述 ...原创 2018-07-04 19:17:24 · 7021 阅读 · 0 评论 -
arm-2014.05 编译三星内核错误 “not support ARM mode ‘smc 0’ ”
(1)arch/arm/mach-exynos/include/mach/smc.h文件:在第54行和第69下面添加: __asm__ volatile ( ".arch_extension sec\n" "smc 0\n" : "+r"(reg0), "+r"(reg1), "+r"(reg2), "+r"(reg3原创 2018-07-04 18:46:41 · 520 阅读 · 0 评论 -
linux下ds3234.c 简单分析 和spi框架提取
/* rtc-ds3234.c * * Driver for Dallas Semiconductor (DS3234) SPI RTC with Integrated Crystal * and SRAM. * * Copyright (C) 2008 MIMOMax Wireless Ltd. * * This program is free software; you can ...原创 2018-06-26 10:21:00 · 574 阅读 · 0 评论 -
linux添加window启动
系统:centos文件:/boot/grub2/grub.cfg追加内容:menuentry “Windows 7” {insmod part_msdosinsmod ntfsset root=’(hd0,msdos1)’chainloader +1}原创 2017-04-10 17:47:44 · 436 阅读 · 0 评论 -
ubuntu 16gcc g++版本降级
打算在ubuntu16上编译linux3.4.66内核,但是遇到In file included from include/linux/compiler.h:48:0, from include/linux/stddef.h:4, from include/linux/posix_types.h:4,原创 2017-04-19 15:54:41 · 2313 阅读 · 0 评论 -
linux3.4.2移植总结(s3c2440)
环境:Linux version 3.5.0-23-generic (buildd@komainu) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) ubuntu12目标板:JZ2440 待移植内核:3.4.2 交叉编译器:arm-linux-gcc-4.3.21. make s原创 2017-04-25 13:06:10 · 633 阅读 · 0 评论 -
通过远程(vnc)无法打开qtcreator
最近打算移植qt程序到板子上于是,在ubuntu物理机上装了qt开发环境,通过远程桌面链接上去写qt。 但是远程老是点不开qtcreator。于是通过命令行启动 出了报错信息,应该和xserver 服务有关,没有深入了解错误下面是我的解决方案: 1. 在命令行启动qtcreator时加上-noload Welcome参数 这样虽然会报错,但可以启动起来,各项功能也原创 2017-04-26 11:49:47 · 3368 阅读 · 0 评论 -
移植Linux3.4.2版本内核到mini2440
一. 内核启动流程,据此配置内核(机器ID) 1. 获取内核源码 www.kernel.org https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.2.tar.bz2 2. 解压内核 # tar xjvf linux-3.4.2.tar.bz2 3. 修改顶层Makef转载 2017-05-27 11:46:14 · 413 阅读 · 0 评论 -
对于嵌入式交叉编译总结
这几天终于搞定了老师项目里我负责的部分,主要是做一个图像采集的手持端,我选用了JZ2440。 从移植内核、制作文件系统、Qt移植总结下来发现在对于代码的交叉编译必须保证编译平台的一致性。对于s3c2440来说是armv4t,所以当我们编译出来程序必须要是执行 arm-linux-readelf libjpeg.so.62.0.0 -A (libjpeg.so.62.0.0 为我交叉编译出来的)原创 2017-06-05 07:54:20 · 1281 阅读 · 1 评论 -
移植tslib(s3c2440)
解压安装tslib # tar -zxvf tslib-1.4.tar.gz # cd tslib # ./autogen.sh #echo “ac_cv_func_malloc_0 _nonnull=yes”>arm-linux.cache # ./configure –hos原创 2017-06-04 12:44:24 · 328 阅读 · 0 评论 -
linux驱动调试--oops信息
在移植dm9000 时被一个错误困扰了很久,当时手里只有printk调试手段,觉得自己应该升级下了,先学习了根据oops信息来调试。先构造一个错误,insmod后抛出如下信息 我们着重看这几句PC is at memcpy+0x8c/0x29c c0148080 pc : [] lr : [<74736574>] psr: 00000013回溯信息 Backtrace: []原创 2017-06-10 16:27:34 · 392 阅读 · 0 评论 -
内核启动流程—走马观花
汇编阶段:ensure svc mode and irqs disabled @76确保cpu运行与svc模式,中断关闭get processor id @78获取cpu idr5=procinfo r9=cpuid invalid processor (r5=0)? @79 和__proc_info lists 里比较,不能找到id就 r5 = 0bl __vet_ata转载 2017-07-26 15:41:52 · 275 阅读 · 0 评论 -
linux嵌入式贪吃蛇
目标:用游戏手柄控制贪吃蛇硬件平台:imax6q版本信息: arm-none-linux-gnueabi-gcc-4.8.3、 qt5.7.1、linux3.0.1一、交叉编译tslib1.4由于 imax6q是 armv7-a 构架,所以以后的编译我们都应编译出 armv7 平台的文件编译参数:echo ‘ac_cv_func_malloc_0_nonnull=yes’ > arm-linux.c原创 2017-09-07 09:16:10 · 2486 阅读 · 0 评论 -
linux板级初始化
最近拿到了明远智睿 的EK314开发板,以前主要用2440,眼界过于狭隘,借此机会练习下。首先看看它的板级文件/arch/arm/mach-mx6/board-myimx6ek314.c在他的末尾指定了map_io、init_irq、init_machine、timer等初始化函数,MACHINE_START是个宏定义,他的展开我列了出来 MACHINE_START(MYIMX6EK314, “M原创 2017-07-27 09:09:43 · 898 阅读 · 0 评论 -
fsdisk 分区
芯片主控:imx6q http://lornyin.top/?p=545昨天在做一个linux嵌入式项目时要修改板子的分区,查看了ucl2.xml (mfgtool)文件后,找到了他的分区脚本#!/bin/sh# partition size in MBBOOT_ROM_SIZE=10# call sfdisk to create partition table# dest...原创 2018-06-26 10:06:59 · 1049 阅读 · 0 评论 -
域名配置备忘录
几个国内yum镜像: http://mirrors.163.com/ //网易镜像http://mirrors.aliyun.com/ //阿里镜像http://centos.ustc.edu.cn/ //中科镜像http://mirrors.sohu.com/ //搜狐镜像yum 配置文件路径原创 2017-04-10 13:40:11 · 500 阅读 · 0 评论