
嵌入式
文章平均质量分 78
飞翔的荷兰人号z
爱技术,爱生活,爱美剧,爱旅游
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
USB枚举过程
USB枚举过程原创 2022-05-16 21:56:48 · 3920 阅读 · 0 评论 -
我是穷人,可以不买开发板了吗?---QEMU 模拟arm系统
文章目录序言准备工作QEMU开始Linux内核U-boot 的修改及编译序言一直很佩服古人的那种豁达的情怀,就如《冒险雷探长》一集纪录片用作结束的一句话:“人人都是大忙人,忙着长大,弄丢了纯真;忙着赚钱,忽略了思想;忙着成功,错过了风景,岁月中的营养,匆忙间吃成了果腹的快餐。那些光阴中本该难忘的故事,就这样紧赶慢赶,没能抓住我们的影子。”正如赵秉文《青杏儿》中的词句:“风雨替花愁。风雨罢,花也应休。劝君莫惜花前醉,今年花谢,明年花谢,白了人头。乘性两三瓯。捡溪山好处追游。但教有酒身无事,有花也好,原创 2020-06-29 15:39:34 · 820 阅读 · 0 评论 -
Windows下Linux子系统构造交叉编译工具链(arm-linux-gcc)
Windows下Linux子系统构造交叉编译工具链(arm-linux-gcc)一、下载arm-linux-gcc-4.3.2.tar.bz2,然后解压到/usr/local/目录下,使用命令: sudo tar -jxvf arm-linux-gcc-4.3.2.tar.bz2 -C / 默认安装到/usr/local/arm 目录下二、然后赋予/usr/local/arm/ 文件...原创 2020-02-16 14:43:22 · 3421 阅读 · 0 评论 -
Makefile的基本语法与变量
文章目录基本规则make 的语法既多又复杂,在此列出一些基本的规则基本规则Makefile 的基本规则如下:目标(target):目标文件1 目标文件2<tab> gcc -o 预建立的执行文件 目标文件1 目标文件2注意:命令行必须以Tab j键作为开头在Makefile 中 # 代表注释需要在命令行的(例如 gcc 这个编译器命令)的第一个字符目标 (ta...原创 2019-12-24 10:09:33 · 284 阅读 · 0 评论 -
Linux内核移植
Linux内核移植Linux内核启动过程在移植Linux之前,先了解它的启动过程。Linux的启动过程分为两部分:架构/开发板相关的引导过程、后续的通用启动过程。如下图所示是ARM架构处理器上Linux内核vmlinux的启动过程。之所以强调是vmlinux,是因为其他格式的内核在进行与vmlinux相同的例如流程之前会有一些独特的操作。比如对应压缩格式的内核zImage,它首先自解压得到vm...原创 2019-12-13 15:06:41 · 482 阅读 · 0 评论 -
嵌入式之ARM(架构,寄存器,处理器模式,所用工具)
文章目录ARM架构和处理器一些常用工具ARM软件工具链ARM寄存器,处理器模式和指令集ARM架构和处理器ARM系列处理器:各个系列区别与功能演变相关术语介绍(1)流水线:CPU运转机制:取指令(F) —> 译指令 (D)—> 执行(E)三级流水,还有多级流水(2)DSP:数据信号处理(3)Jazelle :ARM里针对JAVA的编程模型(4)ThumbE...原创 2019-07-16 19:46:52 · 684 阅读 · 0 评论 -
嵌入式之旅之bootloader介绍
文章目录BootLoader概念为什么需要进行 bootloader 移植?BootLoader 的启动流程内存分布一个嵌入式系统从软件角度来看分为三个层次:引导加载程序包括固化在固件(firmware)中的boot程序(可选),和BootLoader两大部分。Linux内核特定于嵌入式平台的定制内核文件系统包括了系统命令和应用程序。BootLoader概念BootLoade...原创 2019-05-16 10:36:14 · 504 阅读 · 0 评论 -
linux设备驱动之块设备驱动程序的设计
文章目录块设备块设备体系结构体系结构层次块设备驱动程序设计块设备描述设备注册设备操作I/O请求请求队列块设备完整驱动程序块设备驱动测试数据访问流程BIO__make_request块设备块设备将数据存储在固定的块中,每个块的大小通常在512字节到32768字节之间。磁盘、SD卡都是常见的块设备。块设备与字符设备的区别:在与读写数据的基本单元不同。块设备读写数据的基本单元为块,例如磁盘通常...原创 2019-05-07 21:21:15 · 1219 阅读 · 0 评论 -
linux驱动之终端控制体系与串口驱动程序设计
文章目录数据通信异步通信传送方式终端概述控制台伪终端终端体系终端体系---串口数据流串口驱动描述串口驱动注册UART端口描述操作串口添加端口串口驱动程序设计在介绍终端控制体系之前,要先普及 一下数据通信的基本方式。数据通信数据通信的基本方式可分为并行通信与串行通信两种:并行通信:利用多条数据线将数据的各位同时传送。它的特点是传输速度快,适用于短距离通信。串行通信:利用一条数据线将数据一...原创 2019-05-07 10:59:14 · 247 阅读 · 0 评论 -
linux驱动程序之PCI驱动程序设计
文章目录PCI驱动描述PCI驱动注册使能PCI设备获取PCI配置寄存器基地址中断部分代码PCI驱动描述在linux内核中,PCI驱动使用 struct pic_driver 结构来描述:struct pci_driver{ /*以上还有很多成员*/ //id_table 中包含了PCI设备的相关信息 const struct pci_device_id *id_table; int...原创 2019-05-06 21:14:01 · 522 阅读 · 0 评论 -
嵌入式之ARM汇编
文章目录汇编语言长什么的样子呢?ARM汇编指令条件和状态Status码ARM汇编寻址方式数据操作(ALU操作)逻辑操作(与,或,非,异或)比较操作汇编语言长什么的样子呢?举例:向寄存器中一个值添加100x86:add eax,#10068K:ADD #100,D0ARM:add r0,r0,#100举例:从一个寄存器指针加载到寄存器x86:mov eax,DWORD PTR...原创 2019-07-16 21:34:49 · 1000 阅读 · 0 评论 -
嵌入式之linux用户空间与内核空间,进程上下文与中断上下文
文章目录前言用户空间与内核空间内核态与用户态进程上下文和中断上下文上下文原子进程上下文中断上下文进程上下文VS中断上下文原子上下文前言之前在学习嵌入式linux系统的时候,一直对于中断上下文,进程上下文很迷,听着都很熟悉,但是强行让自己去解释着写概念总是很难去说清,所以奔着弄清楚这几个概念的目的,在网上看了好多的资料。对于这些概念的学习是一个不断累积的过程。用户空间与内核空间我们知...原创 2019-07-21 20:39:59 · 729 阅读 · 0 评论 -
Linux字符设备驱动编(步骤,框架(面向对象),分层)
文章目录Linux字符设备驱动编程步骤、Linux程序框架的概念面向对象代码实现(伪代码)Linux字符设备驱动编程步骤、实现入口函数 xxx_init() 和卸载函数 xxx_exit()申请设备号 register_chrdev_region (与内核相关)注册字符设备驱动 cdev_alloc,cdev_init,cdev_add (与内核相关)利用 udev/mdev 机制创建...原创 2019-08-15 17:09:15 · 316 阅读 · 0 评论 -
linux高级字符驱动之输入子系统
文章目录输入子系统的作用和框架框架输入子系统的编程方式输入子系统的作用和框架什么是输入设备按键/keyboardmousetouchscreen(触摸屏):gt811,ft56xxjoystick 游戏杆有多个输入设备需要驱动的时候,假如不考虑输入子系统gt811设备号,创建文件,硬件初始化,实现fop,阻塞,硬件初始化(I2C等)ft56xx设备号,创建文件,...原创 2019-08-18 14:13:50 · 306 阅读 · 0 评论 -
linux输入子系统多按键
文章目录linux输入子系统:驱动多个按键linux输入子系统:驱动多个按键驱动多个按键一个按键有多个与其相关的元素:中断号码按键状态按键的值input_dev的详细描述如下图在设备树文件中增加以下信息:按键定义配置信息如下key_int_node{ compatible = "test_key"; #address-cells = <1>; /...原创 2019-09-09 13:49:52 · 691 阅读 · 0 评论 -
linux内核源代码输入子系统分析(linux源码分析)
文章目录linux内核代码分析代码跟读方式分层分析分析:evdev.c中evdev_connect() ---属于input handler层应用程序中调用输入子系统的代码,数据是如何传递给用户层的linux内核代码分析代码跟读方式带着问题去读做好笔记和画图驱动联系应用,应用是调用的,驱动是实现的分层分析Input handler层:/driver/input/evdev.c...原创 2019-09-09 21:46:16 · 423 阅读 · 0 评论 -
linux I2C子系统(及相关程序设计MPU6050)
文章目录linux I2C子系统框架在设备树中添加从设备信息,mpu5060I2C driver 程序的编写mpu6050 I2C程序具体实现linux I2C子系统框架在之前的一篇文章中记录了 I2C协议相关内容,这里记录一下I2C在linux系统上I2C子系统框架,经过总结,I2C子系统框架可以总结为如下一张图五层(其实是三层,不算应用层和硬件层)应用层i2c driver层...原创 2019-09-14 20:46:55 · 821 阅读 · 0 评论 -
linux驱动之设备树
文章目录linux驱动之设备树设备树的由来---什么是设备树Linux设备树的由来---为什么会有设备树快速编译设备树---DTC(device tree compiler)快速了解设备树---编译设备树文件dtb使用的过程设备树语法及内部构成设备树语法设备树实战linux驱动之设备树设备树的由来—什么是设备树Open Firmware Device Tree 开发固件设备树(1)Dev...原创 2019-09-22 18:59:42 · 1263 阅读 · 2 评论 -
linux设备驱动之PCI总线概述
文章目录总线概念PCI总线PCI总线体系结构PCI设备寻址PCI寻址配置寄存器总线概念总线是一种传输信号的信道;总线是连接一个或多个半导体的电气连线。总线由电气接口和编程接口组成,对于软件设计人员来说,重点关注编程接口。PCI总线PCI(Perpheral Component Interconnect)(外围设备互联),是在桌面及更大型的计算机上普遍使用的外设总线。PCI总线优点:在...原创 2019-05-06 16:04:06 · 1068 阅读 · 0 评论 -
linux设备驱动之mini6410按键驱动程序(普通版与输入子系统版)
文章目录mini6410硬件资源配置寄存器配置GPIO口按键驱动程序应用程序mini6410硬件资源按键驱动用到的是中断处理,中断处理的函数学习在上一篇博客中断处理中有,可以参考中断处理函数描述总共有 8 个用户测试用按键,它们均从 CPU 中断引脚直接引出,属于低电平触发,这些引脚也可以复用为 GPIO 和特殊功能口。硬件显示图如下:配置寄存器GPNCON为GPN的配置寄存器,...原创 2019-04-25 16:50:21 · 340 阅读 · 0 评论 -
linux驱动程序函数之字符驱动程序的设计
文章目录linux驱动程序的分类驱动程序的安装linux驱动程序的使用及设备号等设备号的分配创建设备文件(2种方法)linux驱动程序的分类字符设备驱动网络接口驱动块设备驱动Linux系统将设备分为三种类型,每个模块通常实现为其中的某一类:字符模块、块模块、网络模块,这三种类型如下:字符设备字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实...原创 2019-04-15 21:49:01 · 764 阅读 · 1 评论 -
ubuntu18.04安装tftpd服务器
ubuntu18.04安装tftpd服务器欢迎使用Markdown编辑器在连接mini6410开发板的的时候会在uboot命令下使用tftp命令从linux的tftpd服务器中下载文件时候,所以要在ubuntu中安装tftp服务器端tftpd。ubuntu18.04 安装tftpd服务器1.安装命令: sudo apt-get install tftpd-hpatftpd配置:...原创 2019-04-03 17:22:02 · 3578 阅读 · 0 评论 -
ubuntu18.04中没有/etc/rc.local文件的解决方法
ubuntu18.04不再使用 inited 管理系统,改用 systemd但是个人认为开机启动的rc.local更加好用,所以可以自己配置rc.local1.实现原理systemd 默认会读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接 /lib/systemd/system/ 下的文件。一般系统安装完 /lib/systemd/system/ 下会有 rc...原创 2019-04-03 17:47:00 · 28589 阅读 · 1 评论 -
uboot之uboot目录及uboot基础命令(mini6410)
文章目录什么是ubootuboot源码目录uboot的编译(基于mini6410)uboot中的常用命令什么是ubootU-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就...原创 2019-04-12 21:39:08 · 626 阅读 · 0 评论 -
基于mini6410的Linux内核与根文件系统制作(linux 2.6.38)
文章目录内核制作文件系统的介绍制作根文件系统busybox的buzhong补充说明内核制作一、清除此前内核的留下的文件及补丁等(make distclean) xxx@xxx-virtual-machine:~/mini6410/linux-2.6.38$ make distclean二、进行内核的配置(make menuconfig ARCH=arm ) xxx@xxx-v...原创 2019-04-13 14:05:06 · 406 阅读 · 0 评论 -
linux内核重要函数(kmalloc等)
文章目录内核内存分配函数永久内存映射区内核链表内核定时器度量时间差延时执行内核内存分配函数函数名 kmalloc头文件<linux/slab.h>函数原型: void *kmalloc(size_t size,int flags)参数:(1)size:需要分配的内存大小(2)flag:分配标志,它控制 kmalloc 的行为GFP_ATOMIC:用来在进程上下文中...原创 2019-04-14 17:37:06 · 2510 阅读 · 0 评论 -
嵌入式linux之/proc文件系统(介绍加实例验证)
文章目录/proc文件系统介绍/proc文件系统特点内核描述创建proc文件创建目录删除目录/文件读写实现流程mini6410下的实例代码在/proc下先创建目录后创建文件/proc文件系统介绍/proc文件系统是一种特殊的、由软件创建的文件系统,内核使用它向外界导出信息。/proc下面的每一个文件都绑定于一个内核函数,用户读取其中的文件时,该函数动态地生成文件的“”内容“”比如:通过/pr...原创 2019-04-17 16:54:00 · 780 阅读 · 0 评论 -
USB驱动程序设计之三USB鼠标驱动程序设计
文章目录USB驱动程序简介USB驱动程序描述USB设备列表注册驱动Linux USB 描述符设备描述设备描述**配置描述:**接口描述接口设置接口描述符端点描述USB URBURB定义URB处理流程创建URB初始化URB提交URB处理URBUSB鼠标驱动程序分析设计USB驱动程序简介USB设备驱动程序(层次划分)USB设备驱动程序位于不同的内核子系统和USB主控制器之间,USB核心为USB...原创 2019-05-02 14:40:08 · 1199 阅读 · 0 评论 -
linux网络体系结构
文章目录协议栈协议简介网络接口层网际层传输层应用层Linux网路子系统系统调用接口协议无关接口网络协议设备无关接口驱动程序协议栈linux优点之一在于它丰富而稳定的网络协议栈。其范围从协议无关层(例如通用socket层接口或设备层)到给中具体的网路协议实现。协议简介对于网络的理论介绍一般采用OSI(Open System Interconnection)模型,但是Linux中网络栈的介绍一...原创 2019-05-02 16:40:53 · 744 阅读 · 0 评论 -
linux设备模型之总线设备驱动模型
文章目录总线总线的描述总线的注册/删除总线方法总线属性实例:创建总线总线总线是处理器和设备之间的通道,在设备模型中,所有的设备都通过总线相连,甚至是内部虚拟的“platform”总线。在Linux设备模型中,总线由 bus_type 结构表示,定义在<linux/device.h>中。总线的描述总线的注册/删除总线的注册使用:bus_register(struct bu...原创 2019-04-23 16:46:08 · 457 阅读 · 0 评论 -
linux设备模型之kobject与kset
文章目录sysfs文件系统kobject在 kobject 和 kset 之前,先介绍与它们相关联的 sysfs 文件系统sysfs文件系统linux2.6内核引入了sysfs文件系统,sysfs被看成是与proc同类别的文件系统。Sysfs把连接在系统上的设备和总线组织成分级的文件,使其从用户空间可以访问到。sysfs被加载到/sys/目录下,它的子目录包括:Block:在系统中发现...原创 2019-04-18 20:04:54 · 501 阅读 · 0 评论 -
linux网络驱动之网卡驱动程序的设计
文章目录设备描述设备注册sk_bufferskb操作函数设备打开数据发送数据接收接收流程中断处理设备描述每个网络接口都由一个 net_device(位于 <linux/netdevice.h>头文件的的第840行) 结构描述,该结构可用于如下内核函数动态分配:*struct net_device *alloc_netdev (int sizeof_priv,const char...原创 2019-05-02 19:19:59 · 910 阅读 · 0 评论 -
linux网卡驱动之CS8900A网卡驱动程序
文章目录CS8900A芯片介绍以太网帧CS8900A寄存器代码分析CS8900A芯片介绍CS8900芯片是Cirrus Logic公司生产的一种局域网处理芯片,在嵌入式领域中使用非常常见。它的封装是100-pin TQFP,内部集成了在片RAM、10BASE-T收发滤波器,并且提供8位和16位两种接口,一般在单片机中,使用了CS8900的8位接口模式。该芯片突出特点:使用灵活其物理层接...原创 2019-05-03 14:23:20 · 577 阅读 · 0 评论 -
linux输入子系统
文章目录输入子系统设备描述设备注册、注销驱动实现事件支持报告事件报告结束实例分析输入子系统为了实现按键、触摸屏、鼠标等输入型设备的驱动程序设计,linux推荐使用的方法是input输入子系统。输入型设备都可以利用input接口函数来实现设备驱动。体系结构输入子系统由驱动层,**输入子系统核心层(input core)和事件处理层(event handler)三部分组成。**一个输入事件...原创 2019-05-03 15:51:22 · 493 阅读 · 0 评论 -
linux设备模型之platform驱动程序
文章目录platform总线platform驱动的设计流程平台设备描述平台设备资源平台驱动描述平台驱动注册platform代码展示platform总线platform 驱动与传统的设备驱动模型相比,优势在于 platform 机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序使用这些资源时使用统一的接口,这样提高了程序的可移植性。platform驱动的设计流程platform_d...原创 2019-04-24 14:36:08 · 374 阅读 · 0 评论 -
linux设备驱动之中断处理
文章目录中断概念中断实现中断注册中断标志**共享中断**:中断处理程序释放中断中断概念为什么需要中断?外设的处理速度一般慢于CPUCPU不能一直等待外部事件,所以设备必须有一种方法来通知CPU它的工作进度,这种放法就是中断。中断实现在 linux 驱动程序中,为设备实现一个中断包含两个步骤:向内核注册中断实现中断处理函数中断注册request_irq 用于实现中断的注册...原创 2019-04-24 16:06:24 · 1880 阅读 · 0 评论 -
USB驱动程序之一(USB介绍、USB数据传输、USB设备枚举)
文章目录USB简介USB系统架构USB系统拓扑结构USB主控制器USB HUBUSB设备USB设备逻辑结构USB描述符设备描述符配置描述符接口描述符端点描述符USB数据传输控制传输中断传输等时传输批量传输USB设备枚举USB设备枚举八步USB简介一、USB定义USB(Universal Serial Bus),通用串行总线,是一种外部总线标准,用于通讯规范电脑与外部设备的连接和通讯。USB...原创 2019-04-29 20:51:05 · 1718 阅读 · 0 评论 -
mini6410 LED驱动程序及LED测试程序的设计
在mini6410中,LED驱动程序是第一个操作硬件相关的驱动程序。对于以后的嵌入式linux驱动程序起到一定的引导作用在操作所用到的mini6410的I/O口之前,就需要设置他们用到的寄存器。我们需要调用一些现成的函数或者宏,在此用到的是 readl 和 writel,它们将直接对相应的寄存器执行读取和写入的操作。相关的寄存器如下除此之外,还需要调用一些和设备驱动密切相关的基本函数,如...原创 2019-04-11 20:33:58 · 763 阅读 · 2 评论