![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式开发学习笔记
文章平均质量分 81
陈子陌
一个简单的Linux驱动工程师。
展开
-
安卓开机启动流程
安卓手机启动流程原创 2022-06-22 18:15:13 · 2126 阅读 · 0 评论 -
嵌入式开发之Nand-Flash和Nor-Flash的区别
一、引言在嵌入式开发中,想来每一个嵌入式开发工程师不可避免地都会听到或者接触到Flash这个东西。但是对于一部分人来说,他们并不清楚Flash还有Nand和Nor之分,因此就更不清楚这两者的区别了。今天偶然想起这个问题,于是查询资料,写下这篇博客,做个简单的笔记。二、Flash介绍FLASH是一种存储芯片,全名叫Flash EEPROM Memory,通地过程序可以修改数据,即平时所说的“闪存”。Flash又分为NAND-Flash和NOR-Flash二种。U盘和MP3里用的就是这种存储器。原创 2021-07-09 11:30:29 · 4832 阅读 · 0 评论 -
Linux驱动开发之USB设备检测流程
一、引言最近工作中,因为工作需要,特地学习了一下USB设备的检测流程,做个笔记。二、大致流程从中断响应到probe对应的usb设备驱动:hub_irq -> kick_hub_wq -> queue_work -> hub_event -> port_event -> hub_port_connect_change -> hub_port_connect -> usb_alloc_dev -> choose_devnum -> hub_p原创 2021-02-25 10:56:02 · 2276 阅读 · 0 评论 -
Linux嵌入式开发之内存占用
一、引言内存是嵌入式系统中的关键资源,内存占用主要是指软件系统的内存使用情况。本篇博客将介绍如何分析内存使用以便进行进一步优化内存占用相关的基础概念和相关工具。二、内存占用内存占用是应用程序运行时内存的使用或引用数量。对于开发者而言,可以使用的内存量决定了程序使用的复杂性。较大的应用程序需要更多的内存来存储数据和源代码,例如微软软件Microsoft office比之于Hello World应用程序必须使用更多的内存。由于硬件成本的考虑,嵌入式系统的内存资源远远少于PC环境。因此,在嵌入原创 2021-02-19 11:43:35 · 1571 阅读 · 0 评论 -
Linux驱动开发之DEVICE_ATTR调试技术
一、功能介绍1、简介在sysfs中添加device属性文件,可以动态控制device或者获取device信息。2、相关函数、宏原型及功能2.1、DEVICE_ATTRDEVICE_ATTR宏定义在kernel/include/linux/device.h文件中。原型如下:#defineDEVICE_ATTR(_name,_mode,_show,_store)\structdevice_attributedev_attr_##_name=__ATTR(_...原创 2021-01-30 10:34:55 · 2140 阅读 · 2 评论 -
Linux驱动开发之工作队列
一、什么是工作队列 工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。二、源码分析struct xx_test{ int irq; unsigned char gpio; struct work_struct work; struct workqueue_struct *changan_mf...原创 2020-11-02 15:20:07 · 1257 阅读 · 0 评论 -
Linux软件编程之I/O模型与多路复用
一、前言 工作大半年了,就在昨天,一个朋友突然说起多路复用,于是懵了。虽然还大概记得一些东西,比如select,比如epoll等。但要我清晰地解释多路复用是啥,我却怎么也开不了口。显然,对于之前学习过的知识,我已经要忘得差不多了。 果然,知识要时常温故,才能不忘记。于是,才有了写这篇博客的想法。 为了不钓大家胃口,我先在这里把多路复用的概念简要跟大家提一下,看完之后若有不懂,再继续往下看。 以阻塞I/O举例,我们知道,常规的阻塞I/O模型只能阻...原创 2020-10-29 14:19:40 · 202 阅读 · 0 评论 -
Linux驱动框架之v4l2视频驱动框架解析
一、简介 v4l2是专门为linux设备设计的一套视频框架,其主体框架在linux内核,可以理解为是整个 linux 系统上面的视频源捕获驱动框架。其广泛应用在嵌入式设备以及移动端、个人电脑设备上面,市面上的编码产品类如:SDV、手机、IPC、行车记录仪都会用到这个框架来进行视频采集。二、V4l2框架的结构 v4l2的核心源码位于linux/drivers/media/v4l2-core。2.1、相关对象 v4l2驱动框架主要的对象有vi...原创 2020-10-19 14:36:38 · 5131 阅读 · 0 评论 -
Linux内核驱动内存分配之kmalloc函数分析
一、kmalloc函数的原型及参数介绍 #include <linux/slab.h> void *kmalloc(size_t size, int flags); 参数: kmalloc的第一个参数是要分配的块的大小,第二个参数是分配标志。 size参数: 用户空间malloc是基于堆内存分配,内核负责管理系统物理内存,物理内存只能按页面进行分配, 因此,kmalloc是基于页进行分配。另外需要注意的一点是内核只能分配一些预定义的、固定大原创 2020-10-15 14:18:28 · 1236 阅读 · 0 评论 -
U-BOOT学习之u-boot.lds简要分析(带源码)
对于不少新人朋友来说,可能想问,u-boot.lds这个文件是干什么的?其实,它的作用很简单,那就是:定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。接下来,我们根据具体的源码进行简要的分析。OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")//指定输出可执行文件是elf格式,32位arm指令,小端储存OUTPUT_ARCH(arm)//指定输出可执行文件所运行平台为arm原创 2020-08-24 11:25:26 · 491 阅读 · 0 评论 -
Linux安全机制之Selinux
一、引言1.1、什么是SelinuxSelinux是一种MAC(强制访问控制)安全机制,是对传统DAC(直接访问控制)机制的加强,而非替换,定义传统进程对文件对象的访问权限,如果不满足则无法执行,不管当前是什么用户。Selinux是一种MAC(强制访问控制)安全机制,是对传统DAC(直接访问控制)机制的加强,而非替换,定义传统进程对文件对象的访问权限,如果不满足则无法执行,不管当前是什么用户。本文下面讲的类似内容,有安卓源码的小伙伴可以到类似目录(android/device/softwinne原创 2020-11-20 10:54:58 · 4096 阅读 · 0 评论